Mostrando entradas con la etiqueta Ocio. Mostrar todas las entradas
Mostrando entradas con la etiqueta Ocio. Mostrar todas las entradas

Los 10 errores mas comunes al programar orientado a objetos en PHP

El dominio de la programación orientada a objetos es, sin duda, uno de los paradigmas más codiciado por los programadores. Sin embargo, muchas veces estos cometen "atrocidades" al intentar implementarlo solo por decir a sus amigos, empresas u otros "Yo sé programar orientado a objetos".

Los 21 errores más comunes al programar con php

Leyendo en Zend.com, encuentro una completa lista de errores comunes de los programadores de PHP.
Aunque muchos de los que programamos constantemente en PHP hemos superado varios puntos, siempre hay cosas en las que caemos, pudiendo mejorar la calidad de nuestro código.

Los errores están divididos en 3 partes, siendo los primeros

DocTranslator: Traduce documentos de Office conservando su presentación

DocTranslator es un servicio online gratuito que te permite traducir los textos de Office, conservando su formato y presentación intacta.


Las traducciones son realizadas a través de Google Translate en sus 50 idiomas, no hay límite en el tamaño del documento a traducir y no se necesita estar registrado para utilizar el servicio.


Documentos de Word y Excel son totalmente compatibles y también lo son archivos .txt. En caso de que use un sistema operativo diferente a Windows, deberás consultar la tabla de compatibilidad.


¡Saludos!

Codeplex: Hostea tu proyecto OpenSource

Si bien en sus inicios, el sitio fue muy criticado, por ser una copia de SourceForge.net


Hoy te vamos a hablar de  CodePlexde Microsoft, el que ya lleva su buen tiempo en la red, convirtiéndose en un sitio muy visitado por los programadores.


CodePlex es una herramienta que ayuda a los desarrolladores en su administración de proyectos Open Source.


Estas son algunas de las características y prestaciones que podemos encontrar en CodePlex:




  1. Posibilidad de publicar nuestros proyectos open source.

  2. Hosting para nuestros archivos de código.

  3. Página para el proyecto.  Es posible editarla.

  4. Administración de miembros del equipo de desarrollo.

  5. Upload de código.

  6. Manejo de versiones.

  7. Comunidad y área de discusiones para nuestro proyecto.

  8. Subscripciones vía RSS.

  9. Los usuarios pueden escribir reviews o comentarios por cada versión.

  10. Estadísticas de proyecto.

  11. Varios tipos de licencias para escoger, entre ellas figuran GNU y GNU v2


Proyectos interesantes publicados en el sitio:




  • AjaxControlToolkit Un conjunto de herramientas de Ajax para aplicaciones ASP.NET

  • SilverLight Toolkit Una colección de controles para la plataforma SilverLight

  • BlogEngine Es un programa con prestaciones similares a las que ofrece WordPress hecho en .NET

  • IronPython La implementación de Pythom para .NET

  • FacebookToolkit Herramientas para la manipulación de la API de Facebook

  • MVC Samples Conjunto de aplicaciones ejemplo de MVC de Microsoft

XSS - Cross-Site-Scripting II

Al referirnos al Cross-Site-Scripting podemos encontrar bastante material didáctico acerca del tema, algunos de ellos describen los modos de ataques como directos e indirectos, pero realmente creo que podemos simplificar y enfocar de una forma mas directa en dos simples componentes que son:


1. Ataque al usuario.
2. Ataque al Aplicativo.


CODEORGAN:¿A qué suena tu sitio web?

Buen día SQLeros!! En esta ocasión estaba langareando en Internet y me encontré con una aplicación muy interesante, la cual esta desarrollada en Flash, y convierte el sitio web que le proporcionamos en una linda canción (Bueno a veces no pero esta chusca la cosa esta :) ).





[caption id="" align="aligncenter" width="300" caption="http://www.codeorgan.com/"]http://www.codeorgan.com/[/caption]

Ahora según nos cuenta el About del sitio, codeorgan, toma le código de la página y analiza el el contenido del cuerpo y lo transforma en musica, removiendo todos los caracteres que no se encuentran en la escala musical, es decir solo deja de la A a la G, despues de esto selecciona el sintetizador para el sonidito, donde se utiliza el número total de caracteres en el sitio.


Actualmente se cuenta con 10 estilos de sintetizadores y estos son utilizados de acuerdo a un porcentaje del contenido del sitio.


Y finalmente para definir el ritmo de la batería se utiliza la razón entre el número de caracteres de la página y el número de caracteres que son notas musicales y de igual forma se cuenta con 10 patrones de batería.


Al final de todo la (pinche) página suena (no!?). Acá el vinculo CODEORGAN.


Un Saludo!!


¿Qué es el CAPTCHA y RECAPTCHA?

Para poder distinguir a los humanos de los robots en las páginas web, sobre todo para evitar el spam y otros abusos, aparecieron los CAPTCHA: esas letras y números, normalmente distorsionadas que tienes que identificar en un formulario para que te deje enviarlo. Este término, marca registrada propiedad de la Carnagie Mellon University, es el acrónimo de “Completely AutomatedPublic Turing test to tell Computers and Humans Apart”. El Test de Turing tiene como objeto ver la capacidad de una máquina de mostrar inteligencia. Descrito por el profesor Alan Turing en 1950 el test consiste en una conversación entre un juez humano y otros dos interlocutores, uno humano y el otro una máquina, mediante un programa de teletipos o chat, para comprobar estrictamente la capacidad de la máquina de expresarse, no de reproducir palabras. Si el juez no es capaz de diferenciarlos, la máquina habrá pasado el test. Por eso los CAPTCHA están considerados tests de Turin inversos, ya que es el humano el que ha de demostrar su condición.


Los primeros CAPTCHA eran generados por programas que distorsionaban las imágenes, pero hecha la ley hecha la trampa, los chicos malos pronto encontraron métodos para saltárselos. Así que cada vez se hicieron más complejos añadiendo líneas y motivos de fondo.


Lo último son los reCAPTCHA cuyo lema ya casi lo explica todo (stop spam, read books), en lo que viene a ser un divertido ejercicio de “recontra-ingeniería-inversa”. El sistema es parecido, pero en vez de utilizar fondos raros o rayas, te presentará un par de palabras sacadas de libros antiguos que los programas de reconocimiento de escritura (OCR) no han sido capaces de identificar a los que además se le añade distorsión. Así que de paso que demuestras que eres humano, colaboras en la digitalización de libros antiguos. Según los datos de reCAPTCHA cada día se completan 60 millones de CAPTCHAs en todo el mundo, así que de la “computación distribuída” hemos pasado a la “computación distribuída humana”.


Además reCAPTCHA es gratuito y puedes implementarlo en tu blog (hay plugin para WordPress), y tiene una opción sonora para personas con problemas visuales.


Un Saludo!!

Crear Servicio Web En PHP Con NüSoap

1.- Para que funcione el ejemplo descárgate las clases de NüSOAP desde la pagina del proyecto http://sourceforge.net/projects/nusoap/.

2.- Después descomprimes ese archivo y lo copias a tu sitio web (para este ejemplo el sitio se llama miwebservice y los archivos de NuSOAP los puse en un directorio llamado lib-nusoap.

3.- Luego ejecutas en tu Servidor MySQL el script de la Base de Datos db_productos.sql que lo puedes descargar desde esta pagina.

4.- Luego crea una pagina PHP (en este ejemplo la pagina se llama servicioweb.php) y codificas lo siguiente:
[sourcecode language="php"]
< ?php
require_once('lib-nusoap/nusoap.php');

$server = new soap_server;

$ns="http://localhost/aplicativo"; // espacio de nombres; Sitio donde estará alojado el web service
$server->configurewsdl('MiWebService'); //nombre del web service
$server->wsdl->schematargetnamespace=$ns;

/************ REGISTRANDO EL ARRAY A DEVOLVER(array de productos) **************/
$server->wsdl->addComplexType(
'ArregloProductos', // Nombre
'complexType', // Tipo de Clase
'array', // Tipo de PHP
'', // definición del tipo secuencia(all|sequence|choice)
'SOAP-ENC:Array', // Restricted Base
array(),
array(
array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:Productos[]') // Atributos
),
'tns:Productos'
);

/************ REGISTRANDO LA ESTRUCTURA DE DATOS PRODUCTOS **************/
$server->wsdl->addComplexType('Productos', 'complexType', 'struct', 'all', '',
array(
'ProductoID'=> array('name' => 'ProductoID','type' => 'xsd:int'),
'Nombre' => array('name' => 'Nombre', 'type' => 'xsd:string'),
'Precio' => array('name' => 'Precio', 'type' => 'xsd:string')
)
);

/*METODO DEL WEB SERVICE*/
function ListarProductos($estado){
if($estado!=''){
$db = new mysqli(); //mysqli exclusivo para usar procedimientos almacenados
$db_result = $db->connect ("localhost", "root", "","db_productos");
$sql=sprintf("call usp_ListarProductos('%s');",$estado); //intentando filtrar el SQL Injection
$result = $db->query($sql);
if (mysqli_errno($db)) printf("mySQL error %s\n", $db->error); //si es que hubo error se muestra
$db->close();
$i=0;
if($result->num_rows>0){
while($row = mysqli_fetch_assoc($result)){
$toc[$i]['ProductoID'] = $row["producto_id"];
$toc[$i]['Nombre'] = $row["nombre"];
$toc[$i]['Precio'] = $row["precio"];
$i++;
}
$result->free; //liberando memoria
return $toc;
}
}
return '';
}

/************ REGISTRANDO EL METODO **************/
$server->register(
'ListarProductos', // Nombre del Método
array('estado' => 'xsd:string' ), // Parámetros de Entrada
array('return' => 'tns:ArregloProductos') //Datos de Salida
);

/******PROCESA LA SOLICITUD Y DEVUELVE LA RESPUESTA*******/
$input = (isset($HTTP_RAW_POST_DATA)) ? $HTTP_RAW_POST_DATA : implode("\r\n", file('php://input'));
$server->service($input);
exit;
?>
[/sourcecode]



Si deseas puedes descargar el ejemplo completo desde aquí. Varios usuarios me han hecho la observación en la cual no funciona el código, esto es por el nombre de la carpeta comprimida que llame SQLeros-NüSoapEjemplo.zip, para que funcione bien solo cambienle el nombre por: SQLeros-NuSoapEjemplo.zip

También veremos como consumir el servicio desde C#,VB.Net y Java. Saludos

Exporta Datos Fácilmente desde PHP a Excel

Hola, bienvenidos de nuevo al blog, en posts anteriores de SQLeros, habíamos visto como hacer CRUD, gracias al post de Luda, y ahora les traigo una forma fácil y muy rápida de hacer reportes de los datos hacia Excel.


Basicamente se trata de tomar el

Soporte Mono Touch para Ipad

A tan solo 24 hrs de la salida del SDK para Ipad, se ha completado el soporte para Mono Touch, Segun Miguel de Icaza en su blog. Otro de los colosales avances en la era de programación con Mono. Usando el esperanto de los lenguajes de programación.

Sistema de Boletaje para Terminales de Autobuses

Hola el día de hoy les presento una de mis mas recientes creaciones es un pequeño sistema para la venta de boletos de una terminal de autobuses, es algo sencillo y todavía le falta pulirlo mas pero para los fines didácticos es mas que suficiente.

Invocar funciones PHP desde Flex con AMFPHP

Adobe Flex es un framework de desarrollo que nos permite crear rápida y facilmente aplicaciones RIA (Aplicaciones de Internet Enriquecidas), basado en la plataforma Flashcombinando el lenguaje de marcas MXML ActionScript. También, gracias a su entorno de desarrollo se simplifica el desarrollo de aplicaciones AIR.


En esta oportunidad quiero explicar cómo hacer uso de Flex para invocar funciones hechas enPHP (no entraré en detalles, pues no conozco a fondo ActionScript). Una forma de hacerlo es mediante AMFPHP. Pero ¿qué es AMFPHP? Es un RPC (Llamada a Procedimientos Remotos) que nos permite comunicar datos de aplicaciones-funciones entre el cliente (JavaScript, Flash, Flex, etc) y servidor (PHP, ASP, JSP, etc). En este caso AMFPHP realiza la comunicación de procesos remotos entre Flash (y por extensión aplicaciones RIA en Flex y AIR) y PHP.


Vamos por paso para la implementación de un proyecto en Flex que llame a funciones en PHP.


1. Descargar y extrae la carpeta amfphp que contiene la siguiente estructura (y para no perderse en el tutorial, colocala en la raíz de tu sitio web de tal forma que quede así:http://localhost/amfphp)



+ ampphp
 
+services
 
+core
 
+browser
 
-gateway.php
 
-globals.php
 
-.htaccess
 
-json.php
 
-xmlrpc.php
 
-phpinfo.php

2. Verificar el funcionamiento del amfphp. Para ello abres tu navegador y escribeshttp://localhost/amfphp/browser. Aparecera una ventana de configuración donde se muestra la ubicación del archivo gateway que actuará como puerta de enlace. En esta ventana solo dale clic en Save.


Podrás apreciar un especie de explorador. En la vista árbol a tu izquierda se mostrarán todas las clases en PHP que podemos usar. Para que una clase aparezca allí debes guardarla en el directorio services.


3. Vamos crear una clase en PHP. Vamos a lista una relación de clientes de una base de datos MySQL. La estructura de la tabla es la siguiente (ingresa un par de registros luego):



CREATE TABLE IF NOT EXISTS `cliente` (
 
`id` tinyint(7) NOT NULL auto_increment,
 
`nombres` varchar(50) NOT NULL,
 
`ciudad` varchar(50) NOT NULL,
 
`sexo` char(1) NOT NULL,
 
`telefono` varchar(10) NOT NULL,
 
`fecha_nacimiento` datetime NOT NULL,
  KEY
`id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

En archivo PHP debe tener el mismo nombre que la clase, en este caso se llama sample.php:



<?php
class sample{
   
function getUsers () {
        $mysql
= mysql_connect(localhost, "root", "");

        mysql_select_db
( "empresa" );

                $Query
= "SELECT * from cliente";
                $Result
= mysql_query( $Query );
               
while ($row = mysql_fetch_object($Result)) {
                        $return
[] = $row;
               
}
               
return( $return );
       
}
}
?>

Volvamos a http://localhost/amfphp/browser y podemos apreciar en la lista de servicios, a la mano izquierda, nuestra clase llamada sample. Si la seleccionamos se muestran sus métodos, en este caso getUsers, y pulsamos el botón call se mostrará el resultado en la parte inferior.


amfphp browser


4. Abrimos Flex (en mi caso Flex Builder 3) y creamos un nuevo proyecto Flex de nombresample.


new project


new project


Configuramos la ruta en nuestro servidor local:


new project


new project


El archivo autogenerado sample.mxml lo dejamos allí por un momento. Ahora vamos agregar un archivo de ActionScript a nuestro proyecto, para ello le damos clic derecho en la carpeta srcy seleccionamos New ActionScript File.


new project


new project


El archivo RemotingConnection.as contiene un clase que llama a una conexión remota especificando la url de ésta.



package {
       
import flash.net.NetConnection;
       
import flash.net.ObjectEncoding;

       
public class RemotingConnection extends NetConnection
       
{
               
public function RemotingConnection( sURL:String )
               
{
                        objectEncoding
= ObjectEncoding.AMF0;
                       
if (sURL) connect( sURL );
               
}

               
public function AppendToGatewayUrl( s : String ) : void
               
{
                       
//
               
}
       
}
}

Ahora el archivo autogenerado sample.mxml, lo reemplazamos por el siguiente contenido:



<?xml version="1.0" encoding="utf-8"?>

       
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" xmlns="*" creationComplete="initApplication()">

       
<mx:DataGrid dataProvider="{dataProvider}">
               
<mx:columns>
                               
<mx:DataGridColumn headerText="ID" dataField="id"/>
                               
<mx:DataGridColumn headerText="Nombres" dataField="nombres"/>
                               
<mx:DataGridColumn headerText="Ciudad" dataField="ciudad"/>
                               
<mx:DataGridColumn headerText="Telefono" dataField="telefono"/>
                               
<mx:DataGridColumn headerText="Sexo" dataField="sexo"/>
                               
<mx:DataGridColumn headerText="Fecha Nacimiento" dataField="fecha_nacimiento"/>
                       
</mx:columns>
       
</mx:DataGrid>

       
<mx:Script>
                <![CDATA[
                        [Bindable]
                        public var dataProvider:Array;
                        public var gateway : RemotingConnection;

                        public function initApplication()
                        {
                                gateway = new RemotingConnection( "http://localhost/amfphp/gateway.php" );
                                gateway.call( "sample.getUsers", new Responder(onResult, onFault));
                        }

                        public function onResult( result : Array ) : void
                        {
                                dataProvider = result;
                        }

                        public function onFault( fault : String ) : void
                        {
                                trace( fault );
                        }
                ]]>
       
</mx:Script>

</mx:Application>

Hemos creado un DataGrid para mostrar los datos de la consulta al servidor MySQL. Dentro de las etiquetas <mx:Script/> hacemos uso de ActionScript para llamar a la claseRemotingConnection que creamos anteriormente. La función initApplication() se encarga de conectar con la puerta de enlace: gateway.php, y llama al método getUsers() de la clasesample. La respuesta la recibe la función onResult() que pasa los datos a la variabledataProvider y ésta pasa al DataGrid.


6. Ahora simplemente compilamos el proyecto (Ctrl + F11) y podemos apreciar el resultado en el navegador web.


new project


De esta forma podemos crear aplicaciones web complejas que incluyan inserción y actualización de datos. Pero eso no esto, incluso podemos crear aplicaciones de escritorio gracias a AIR con esta funcionalidad, es decir llamadas a procesos remotos. Les dejo los archivos de este tutorial para que lo prueben en su servidor local.


Lo vi en: Flex and PHP Using AMFPHP

Parecidos entre lenguajes de servidores y las mujeres

100 Continue ==== Sigue intentándolo vas por buen camino
101 Switching Protocols ==== Si no te decides...
303 See Other ==== Pruebalo con otra
400 Bad Request ==== Dímelo con flores
401 Unathorized ==== Estoy casada
402 Payment Required === Son 10.000 y la cama
403 Forbidden/Access Required === ZZZZZZZAS! (bofetón)
404 Not Found === He quedado con las amigas
405 Method Not Allowed === No, por detrás no...
406 Method Not Acceptable === ... y en la boca menos
407 Proxy Auth. Required === Lo hablaré con mi madre
408 Request Timeout === ¿Sabes cuánto hace que no me llamas?
409 Conflict === ¿Quien era ESA?
410 Document Removed === Quiero el D-I-V-O-R-C-I-O
411 Lenght Required === ¿A eso llamas 'pedazo polla'?
412 Precondition Failed === ¿Que no has traido condones?
413 Request Entity Too Large === Eso no me va a caber ahí dentro
414 Request URL Too Large === Eso tampoco me va a caber ahí dentro
415 Unsupported Media Type === A cuatro patas no me gusta
500 Internal Server Error === Tengo la regla
501 Not Implemented === Nunca haría *eso*
502 Bad Gateway === ...y por ahí, menos todavía
503 Service Unavailable === Me duele la cabeza
504 Gateway Timeout === ¿Ya está?

Y no hay que olvidar el raro e infrecuente
200 OK === Chica facilona

Dia del codigo de barras

google-codeSi hicieron una búsqueda en Google hoy, quizás habrán notado que algo extraño le pasó al logo. El nuevo “doodle” que aparece hoy, y que debiera ser fácilmente reconocido por todos, celebra los 57 años del código de barras.


El invento, que ha facilitado las compras en el supermercado en el mundo (entre otras cosas), fue patentado el 7 de Octubre de 1952 por los ciudadanos del país del consumismo estadounidenses Norman Joseph Woodland y Bernard Silver.


Silver, quien administraba una cadena de locales de comida, buscó crear un sistema que facilitara la lectura de los datos de los productos de forma automática. Para ello se asoció con el profesor del Instituto Tecnológico Drexel, de donde se había graduado, y crearon el hoy universal código de barras.


La primera versión consistía en una serie de círculos concéntricos, que luego fue reemplazada por las líneas rectas que se utilizan hasta hoy.


Link: Bar code: invention history behind new Google doodle (Telegraph)

Las frases del inge pollis en facebook!

Bueno por algo se empieza y en esta ocasión les presento mi aplicacion  en Facebook, es algo sencillo. Pero esta muy divertido..



Las frases del inge pollis!

Google festeja hoy sus 11 años Online (¿de vida?)

El 27 de septiembre parece haber sido la fecha elegida por la empresa que hoy mismo cambia su logopara celebrarlo, aunque muchas personas discrepan y consideran que el nacimiento de Google tuvo lugar el día 15 del mismo mes





[caption id="" align="alignnone" width="600" caption="11 años de google"]11 años de google[/caption]

Hoy Google celebra su cumpleaños número 11 y para celebrarlo agregó una letra L extra: Googlle (Goog11e).

El aniversario de Google se celebra durante el mes de septiembre, no tiene una fecha exacta, aunque en2002 y 2005 (y ahora 2009) se escogió el día 27 de septiembre para celebrarlo desde el logo del buscador.

Con once primaveras a sus espaldas y convertidos en la mayor empresa de internet, Google nos regala, semana a semana, todas las novedades para hacer más sencilla nuestra navegación por la red.

Según figura en los archivos, fue fundada el 7 de septiembre de 1998 por Larry Page Sergey Brin(dos estudiantes de doctorado en Ciencias de la Computación de la Universidad de Stanford).

Aunque su principal producto es el buscador, la empresa ofrece también entre otros servicios: un comparador de precios llamado Google Product Search (antes conocido como "Froogle"), un motor de búsqueda para material almacenado en discos locales (Google Desktop Search), y el servicio de correo electrónico llamado Gmail, el cual pone a disposición para sus usuarios más de 7 GB[2] de espacio. 

También es famoso su programa Google Earth, un mapamundi en 3D con imágenes de alta resolución. Recientemente lanzó su versión beta de un servicio de mensajería instantánea basado en Jabber/XMPP llamado Google Talk.

SELECT TOP 1 song FROM youtube ORDER BY NEWID() --Links 2 3 4

Bueno este es un video aleatorio del youtube que me gusta mucho es links 2 3 4, de rammstein espero les guste... Mi parte favorita es cuando batallon de hormiguitas va a partirles su madre a los escarabajos malditos, y sobre todo el mensaje de trabajo en equipo de las hormiguillas, es realmente una de las mejores canciones de este grup, aleman llena de poder y fuerza en los acordes de la canción.





Simplemente impresionante, espero y lo disfruten, xD!!