miércoles, 5 de septiembre de 2012

Hablemos de ODBC.

Bueno en el siguiente post hablaremos un poco de ODBC, esa herramienta que nos puede sacar de muchos apuros. jeje.


Un Poco de WikiPedia.


Open DataBase Connectivity (ODBC) es un estándar de acceso a las bases de datos desarrollado por SQL Access Group en 1992. El objetivo de ODBC es hacer posible el acceder a cualquier dato desde cualquier aplicación, sin importar qué sistema de gestión de bases de datos (DBMS) almacene los datos. ODBC logra esto al insertar una capa intermedia (CLI) denominada nivel de Interfaz de Cliente SQL, entre la aplicación y el DBMS. El propósito de esta capa es traducir las consultas de datos de la aplicación en comandos que el DBMS entienda. Para que esto funcione tanto la aplicación como el DBMS deben ser compatibles con ODBC, esto es que la aplicación debe ser capaz de producir comandos ODBC y el DBMS debe ser capaz de responder a ellos. Desde la versión 2.0 el estándar soporta SAG y SQL.
El software funciona de dos modos, con un software manejador en el cliente, o una filosofía cliente-servidor. En el primer modo, el driver interpreta las conexiones y llamadas SQL y las traduce desde el API ODBC hacia el DBMS. En el segundo modo para conectarse a labase de datos se crea una DSN dentro del ODBC que define los parámetros, ruta y características de la conexión según los datos que solicite el creador o fabricante.


Ahora veamos algunas formas de utilizarla.

Microsoft Access, Con PHP

if ($conn_access = odbc_connect ( "guiarte_access", "", "")){     echo "Conectado correctamente";
    $ssql = "select * from libros";
    if($rs_access = odbc_exec ($conn_access, $ssql)){
        echo "La sentencia se ejecutó correctamente";
        while ($fila = odbc_fetch_object($rs_access)){
           echo "
" . $fila->titulo;
        }
    }else{
        echo "Error al ejecutar la sentencia SQL";
    }
} else{
    echo "Error en la conexión con la base de datos";
}



DB2 IBM, Con PHP

$database = 'DBNAME';$hostname = 'HOST';$port = 'PORT';$user = 'USERNAME';$password = 'PASSWORD';$driver = 'DB2';$conn_string = "DRIVER=\{$driver};DATABASE=$database;HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$password;";
if (!$db = odbc_connect ($conn_string, $user, $password)) echo 'Error!';else echo 'Success!';
odbc_close($db);



Oracle, Con ASP

<%  Dim conexion, rsTabla   'creamos un objeto de tipo "connection" para la   'conexión con el origen de datos ODBC   set conexion = Server.CreateObject("ADODB.Connection")  'nos conectamos al origen de datos ODBC "bdoracle"  conexion.Open "bdoracle","system","contraseña_system"   'creamos un objeto de tipo "recordset" (tabla)   Set rsTabla = Server.CreateObject("ADODB.Recordset")   consultaSQL ="SELECT * from prueba"   'asignamos al objeto "rsTabla" el resultado de la ejecución de la consulta SQL   rsTabla.Open consultaSQL, conexion, 1   'Recorremos todos los registros del objeto recordset y mostramos su valor   while not rstabla.eof    codigo = rstabla("codigo")     nombre = rstabla("nombre")     importe = rstabla("importe")     Response.Write "Código: " & codigo & "
    Response.Write "Nombre: " & nombre & "
"
    Response.Write "Importe: " & importe & "
" & "
    rstabla.MoveNext   wend   'cerramos el recordset y la conexión   rsTabla.close   conexion.close   'liberamos los objetos   Set conexion = Nothing   Set rsTabla = Nothing %>

SQL Server, con Node.js
var odbc = require("odbc");
var connectionString = "DSN=probrems;UID=noneOfYourBeesWax;PWD=noneOfYourBeesWax;DATABASE=andrew";
var db = new odbc.Database();
    db.open(connectionString, function(err){
        if(err){
            throw err;
        };
        /*
            Once the connection is open you can query it.
            That means if you tried to query it outside or before this handler finished, it would say...
            "Connection Not Open"
        */
        db.query("SELECT * FROM andrew.dbo.probremTypes;", function(err, rows, moreResultSets){
            if(err){
                console.log(err.message);
            };
            console.log(rows);
        });
    });
process.on('SIGINT', function () {
    db.close(function(){
        console.log('Database Connection Closed');
        process.exit();
    });
});




Los anteriores ejemplos no han sido probados, asi que no sabremos si tienen errores o no, el funcionamiento de  ODBC es simple ofrecer un conector universal para el acceso a datos, antes que todo deberán tener en cuenta la instalacion de los respectivos drivers, si no lo hacen problemas inesperados pueden aparecer.






lunes, 18 de junio de 2012

Apache + DropBox = DropBox CDN.



Hola amigos en esta ocasion les tengo como utilizar DropBox como CDN
haciendo uso del mod_rewrite de Apache bueno a continuacion esta el codigo
necesiario para crear el .htaccess

para obtener el codigo de usuario de drobox, basta con generar un enlace publico
lo que nos arrojara algo como

http://dl.dropbox.com/u/{ Num Id }/

Donde el numero que aparece despues de la u es el number id, recuerda que debes colgar los
archivos en el folder public.


Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^/cdn/(.*)$ http://dl.dropbox.com/u/{ Aqui Id de DropBox }/$1 [L]

lunes, 16 de abril de 2012

Serializando el Objeto SimpleXML [ PHP ]

bueno amigos, después de estar en la encrucijada de este objeto llegamos a la solución y se que ha muchos les servirá de algo, mejor miren el código y prueben ustedes mismo :D :

Para Serializarlo


function serializeSimpleXML(SimpleXMLElement $xmlObj) {

        return serialize($xmlObj->asXML());
}
Para Hacerle un Unserialize. :D
function unserializeSimpleXML($str) {

        return simplexml_load_string(unserialize($str));
}



sábado, 31 de marzo de 2012

Hablemos un poco de Node.js


Node.js es considerado una plataforma nueva donde podemos aprovechar mucho mas el poder de JavaScript, este fue desarrollado como un framework para explotar las bondades del Motor V8, Node.js esta orientado a eventos por lo cual nos facilita mucho nuestro trabajo, ademas de esto es bastante robusto, maneja diferentes patrones de diseño entre ellos MVC, tiene suficientes modulos para divertirnos, es especial para desarrollar aplicaciones escalables bajo el uso del potente V8 y JavaScript.

Node.js es monothread lo que siginifica que cada proceso que realize nuestra aplicación es desarrollada bajo un mismo thread, pero tenemos algo interesante puesto a que la naturaleza del monothread es bloquear por pilas de peticiones pero esto no se da en el entorno de Node.js ya que este funciona de forma asíncrona y por ende puede seguir procesando información aun cuando no se halla terminad de ejecutar uno de los procesos dela pila.

Que podemos hacer ? para darle respuesta a esta pregunta les daré algunos ejemplos muy interesantes de que lo que se puede hacer : Aplicaciones en Tiempo Real, WebSockets, App Servers, Web Services y entre otras locuras que se nos pueda ocurrir, lo mejor de todo es que solo debemos saber JavaScript  :D

viernes, 27 de enero de 2012

Como Bloquear Rangos de Ip en IpTables

Bueno pues en una noche pesada de todo el dia, estaba escuchando un poco de musica de la Mega cuando depronto mi proveedor de hosting osea mi buen colega Oscar Vega, no se habia dado cuenta de que el servidor estaba bajo atake DDOS afortunadamente durante un tiempo le colabore con el soporte y todavia estaba viva la llave privada y entre al sistema vi y revise y si era un atake DDOS pero todos los atakes entraban desde la misma ip en 10 minutos hicieron 5000 peticiones y pues el sistema antiddos no la bloqueaba decidi buscar para bloquear el rango y encontre esto, una hermosa chuleta para cuando necesites bloequear un rango :


iptables -I INPUT -s 82.128.0.0/16 -j DROP



Con esa sencilla linea puedes bloquear todo un rango de una ip y asi fue como le dañe la noche al tio que queria joder en la noche de un viernes 28 de enero y que se jodio mas. la ip estaba ubicada en los estados unidos y pues hay termino todo XD.