larepaweb-logo

Programación, tecnología y mucho más.

Archivos de 'Programación'

Recuperar los últimos videos de un canal de YouTube

octubre 5th, 2011. Publicado en General, Programación. Sin Comentarios. 403 Lecturas

He buscado mucho widgets para páginas web que promocionen un canal de YouTube pero los pocos que he encontrado no me convencían del todo. Aquí les comparto este código javascript recupera los últimos videos subidos a un canal de YouTube desde un feed usando la API  GData.

Para adaptarlo a tus necesidades deberás cambiar las opciones de ancho, alto, título, donde dice “username” reemplazarlo por el nombre del canal y ajustar el parámetro max-results que es la cantidad de videos a recuperar.
(más…)

Opción de mostrar fecha en plugin de WordPress (actualizado)

junio 14th, 2011. Publicado en Programación. Sin Comentarios. 836 Lecturas

Enhanced Recent Post es un plugin WordPress mejorado que muestra las últimas entradas de tu sitio seleccionando la cantidad, el orden, las categorias y ahora si deseas mostrar la fecha de publicación o no.

Nota: Esta modificación funciona para la última versión 1.2.0

La modificación:
(más…)

Métodos Heterodoxos en la Arquitectura de Software

abril 14th, 2011. Publicado en General, Programación. Sin Comentarios. 920 Lecturas

Metodos Agiles

Desde la década de los 50 comenzó la inquietud de normalizar y estandarizar procesos en  la elaboración de proyectos tanto en el área de la manufactura industrial como en la milicia. De aqui empezó el desarrollo de métodos y técnicas que ayudan a medir, controlar y desarrollar estos procesos y algunos fueron adoptados por la industria del software que junto a otros teóricos se logro obtener un abanico de metodología disponibles a mediados de los 90.

Fue justo este tiempo donde surgió otra perspectiva de análisis tratando de adaptar una metodología a los tiempos que corren donde los cambios son cada vez mas vertiginosos. Estos son los métodos ágiles en contracara a los métodos tradicionales.

Carlos Reynoso es un antropólogo, investigador, autor y profesor universitario de la UBA y en su sitio web publicó un juego de papers (Microsoft USA 2004) en español sobre la Arquitectura de Software, el tercero de ellos trata de los Métodos Ágiles y es una excelente lectura para la introducción a estos.

Métodos Heterodoxos (PDF)

Simplificando clases en Ruby con Struct

marzo 10th, 2011. Publicado en Programación. Sin Comentarios. 784 Lecturas

Hace un par de semanas prepare un programa hecho en ruby para un trabajo y necesitaba guardar objetos con multiples atributos en una colección de datos (array) y descubri una forma sencilla de hacerlo utilizando la Clase Struct de la siguiente manera:

#Creación de la clase con 2 atributos cualquiera
class Miembros <
  Struct.new(:fitness, :str)
end
 
#Completamos el array de tamaño 5
poblacion = Array.new
for i in 0..5
  p = Miembros.new
  #Utilizo rand() para asignarle algun valor al atributo
  p.fitness = rand()
  p.str =rand()
  #Almaceno el objeto en el array
  poblacion.push(p)
end
 
#Si se quiere podemos ordenar los objetos del array segun el valor del atributo fitness
poblacion = poblacion.sort_by{|a| [a.fitness]}
 
#Por ultimo mostrar el contenido del array
poblacion.each { |p| puts p[:str] puts p[:fitness]}
 
#O bien de esta forma
for i in 0..Pobsize-1
  puts poblacion[i].fitness
  puts poblacion[i].str
end

Muy interesante. Para saber más sobre las posibilidades de la Clase Struct se pueden dirigir a la documentación de Ruby.

Manipulación de archivos con Ruby

diciembre 18th, 2010. Publicado en Programación. Sin Comentarios. 1.767 Lecturas

ruby-logo

Ruby es un lenguaje de alto nivel orientado a objetos que para mi gusto es muy, muy atractivo trabajar con el y si no me creen con este ejemplo de manipulación de archivos se convencerán.

Las tareas comunes con archivos son: abrir, leer, escribir, cerrar y eliminar archivo y eso es lo que veremos como hacer con Ruby.

Ruby posee una clase llamada IO la cual cuenta con una subclase llamada File que es la que nos permitira acceder de manera sencilla a los archivos. Algunos métodos de esta clase son:

  • basename: Devuelve el nombre del archivo.
  • chmod: Como lo imaginamos, cambia los permisos sobre el archivo.
  • chown: Cambia el propietario y el grupo del archivo.
  • copy: Copia el archivo.
  • new: Abre o crea un archivo.
  • zero: Retorna un valor verdadero si el archivo esta vacío.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#Primero pregunto si es que existe el archivo sino habrá que crearlo en el mismo directorio.
if File.exist?("texto.txt")
	#Abro el archivo para escritura. Borra lo que este en el archivo.
	archivo = File.new("texto.txt", "w")
 
	archivo.puts "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed quis sem et turpis commodo luctus non eu arcu. Praesent id urna nibh, vel ornare odio. Quisque tellus massa, mollis sit amet hendrerit sit amet, ullamcorper eget urna. Nullam risus nisl, rhoncus vel volutpat non, cursus a eros. Donec viverra viverra magna eget adipiscing.\n\n"
 
	archivo.close
 
	#Abre el archivo para lectura muestra el contenido y lo cierra
	File.open("texto.txt").each{|linea| puts linea}
 
	#Abre el archivo para añadir contenido
	archivo = File.new("texto.txt", "a")
 
	archivo.puts "Sed quam urna, fringilla sit amet lacinia eget, hendrerit at ligula. Pellentesque tortor lectus, pretium vel dictum mollis, molestie sit amet turpis. Aenean blandit dui vitae elit porta fermentum. Nulla interdum congue felis, sed semper lectus sagittis pretium."
 
	archivo.close
 
	File.open("texto.txt").each{|linea| puts linea}
 
	print "Desea eliminar el archivo? S/n: "
	opcion = gets.chomp
 
	if opcion.downcase == 's'
		#Borro el archivo en caso de confirmación
		File.delete("texto.txt")
		puts 'Archivo eliminado'
	end
else
	puts 'El archivo no existe'
end

Parámetros de acceso para File:

  • r: Apertura para lectura.
  • r+: Lectura y Escritura
  • w: Solo escritura
  • w+: Escritura y lectura
  • a: Solo para añardir contenido
  • a+: Para escritura y lectura pero añadiendo contenido.
  • b: Acceso a binario.

¿Muy sencillo no?.

Demuestra tus conocimientos con los quiz de la W3School

diciembre 4th, 2010. Publicado en Internet, Programación. Sin Comentarios. 772 Lecturas

resultado quiz php

La W3School ofrece una serie de quiz para sus estudiantes. Seguro lo podrás resolver con tus conociomientos en:

Link: www.w3schools.com

Exportar datos a WordPress con PHP

diciembre 1st, 2010. Publicado en Programación, Tutoriales. 9 Comentarios. 1.895 Lecturas

Este es mi primer post escrito en LaREPAWEB sobre WordPress y justamente al hacer este pasaje fue necesario exportar todos los post desde la base de datos anterior a la de WordPress.

Para esto cree un script en PHP para extraer  todos los posts y volcarlos en un archivo XML o WXR (WordPress eXtended RSS). Antes que nada se deberá crear un archivo con permisos de escritura llamado wxr.xml en la raíz del sitio, luego ejecutar este script también en la raíz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
//Completa los datos de conexión a la base de datos
$dbName = 'base_anterior';
$dbUser = 'username';
$dbPass = 'password';
$dbHost = 'host';
 
//Completa los datos de tu tabla de post
$tablePost = 'posts';
$fieldId = 'post_id';
$fieldtTitle = 'post_titulo';
$fieldContent = 'post_contenido';
$fieldDate = 'post_fecha';
 
//Utilizamos al usuario admin por defecto
$fieldAutor = 'admin';
 
$mysql = new mysqli($dbHost, $dbUser, $dbPass, $dbName);
 
if(mysqli_connect_errno()){
echo 'Imposible conectar';
exit(0);
}
 
$query = "SELECT $fieldId, $fieldtTitle, $fieldDate, $fieldContent
FROM $tablePost ORDER BY id ASC";
 
$result = $mysql->query($query) or die($mysql->error);
 
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
xmlns:excerpt="http://wordpress.org/export/1.0/excerpt/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:wp="http://wordpress.org/export/1.0/"
>
<channel>';
 
while($row = $result->fetch_array()){
	$xml .= "\n<item>\n";
 
//opcional para extraer las categorías de cada post. Deberas editar los nombres de las columna y tablas según tu base.
$query = "SELECT DISTINCT categorias.nombre
	FROM categorias_posts
	INNER JOIN categorias ON categorias.id = categorias_posts.categoria_id
	WHERE categoria_posts.post_id = $row[$fieldId]";
 
	$result_1 = $mysql->query($query) or die($mysql->error);
 
	while($row_1 = $result_1->fetch_array()){
		$xml .= '<category><![CDATA['.$row_1['nombre']."]]></category>\n";
	}
 
	$result_1->close();
	unset($rowa);
 
	$xml .= '<title>'.$row[$fieldtTitle]."</title>\n";
	$xml .= '<dc:creator><![CDATA['.$fieldAutor."]]></dc:creator>\n";
	$xml .= '<pubDate>'.date(r,$row[$fieldDate])."</pubDate>\n";
 
	$content = str_replace('<p>[cut]</p>','',$row[$fieldContent]);
	$content = str_replace('[cut]','',$content);
 
	$xml .= '<content:encoded><![CDATA['.$content."]]></content:encoded>\n";
 
	$xml .= "<excerpt:encoded><![CDATA[]]></excerpt:encoded>\n";
	$xml .= '<wp:post_id>'.$row[$fieldId]."</wp:post_id>\n";
	$xml .= "<wp:comment_status>open</wp:comment_status>\n";
	$xml .= "<wp:status>publish</wp:status>
				<wp:post_parent>0</wp:post_parent>
				<wp:menu_order>0</wp:menu_order>
				<wp:post_type>post</wp:post_type>
				<wp:post_password></wp:post_password>
				<wp:is_sticky>0</wp:is_sticky>\n";
	$xml .= '</item>';
}
 
$xml .= "</channel>\n</rss>";
 
//echo $xml;
 
try{
	$file = fopen("wxr.xml","w");
	fwrite($file,$xml);
	fclose($file);
	$msg = 'Archivo generado';
}catch(Exception $error){
	$msg = $error->getMessage();
}
 
echo $msg;
 
$result->close();
$mysql->close();
 
?>

Ahora sólo resta descargar el archivo wxr.xml, ingresar al panel de administración de WordPress ir a Herramientas / Importar y utilizar la importación WordPress (es la última de la lista). En caso de no tener el plugin de importación instalado WordPress lo hará por nosotros.

Edad de una persona en años, meses y días con PHP

noviembre 29th, 2010. Publicado en General, Programación. Sin Comentarios. 608 Lecturas

calendario

Este clase en PHP determina la edad de una persona en años, meses y días teniendo en cuenta años bisiestos. La lógica pasa por hacer una diferencia directa entre la fecha actual y la fecha de nacimiento y realizar un ajuste en caso de que los valores de los meses y/o días den negativo.

El código es el siguiente:

/*
Programa: Determinar la edad de una persona en años, meses y dias
Version: 0.1
Fecha: 30 May 2010
Autor: Luis Chavez
Mail: lchavez@larepaweb.com.ar
Web: www.larepaweb.com.ar
Pastebin: http://www.pastebin.org/296286
*/
class edadAMD{
private $fActual;
private $fNacimiento;

function __construct($fActual, $fNacimiento){
$this->fActual = $fActual;
$this->fNacimiento = $fNacimiento;
}

private function bisiesto($anio){
return checkdate(2,29,$anio) ? true : false;
}

private function validar(){
//validar el formato y que la fecha de nacimiento sea menor que la actual
if(!isset($this->fActual)||!isset($this->fNacimiento)){
echo ‘No se definieron las fechas’;
return false;
}
return true;
}

function calcularEdad(){

if(!$this->validar()){
return false;
}

$anacimiento = explode ( “/”, $this->fNacimiento);
$aactual = explode ( “/”, $this->fActual);

$anios =  $aactual[2] – $anacimiento[2];
$meses = $aactual[1] – $anacimiento[1];
$dias =  $aactual[0] – $anacimiento[0];

if ($meses < 0){
–$anios;
$meses =  ($aactual[1] + 12) – $anacimiento[1];
}

if ($dias < 0){
–$meses;
//array con la cantidad de dias por mes
$ameses = array(1=>31, 2=>28, 3=>31, 4=>30, 5=>31, 6=>30, 7=>31, 8=>31, 9=>30, 10=>31, 11=>30, 12=>31);
$mAnterior = $aactual[1] – 1;

if($mAnterior>0 && $mAnterior<>2){
$dmAnterior = $ameses[$mAnterior];
}
elseif($mAnterior == 2){
//si el mes es febrero controlar si el año es bisiesto
($this->bisiesto($aactual[2])) ? $dmAnterior = 29 : $dmAnterior = $ameses['2'];
}
else{
//para el caso de que 01 (enero)-1 sea igual a 0 correspondería a diciembre del año anterior
$dmAnterior = $ameses['12'];
}
$dias =  ($aactual[0] + $dmAnterior) – $anacimiento[0];
}

$edad[0] = $anios;
$edad[1] = $meses;
$edad[2] = $dias;

return $edad;
}
}
?>

El modo de uso es:

//$fActual = date(‘d/m/Y’);
$fActual = ’30/05/2010′;
$fNacimiento = ’20/10/2000′;
$edad = new edadAMD($fActual,$fNacimiento);
$tiempo = $edad->calcularEdad();
echo “Fecha Actual: $fActual
Fecha de Nacimiento: $fNacimiento
Usted tiene $tiempo[0] años, $tiempo[1] meses y $tiempo[2] dias”;
?>

La url en pastebin.org es: http://www.pastebin.org/296286

Medir el tiempo de ejecución de script PHP

noviembre 29th, 2010. Publicado en Programación. Sin Comentarios. 464 Lecturas

Este es un sencillo ejemplo que permite medir el tiempo (en segundos) de ejecución de scripts PHP:

<?php

function get_micro_time(){
        list($mseg,$seg) = explode(” “,microtime());
        return ((float)$mseg+(float)$seg);
}

$inicio = get_micro_time();
sleep(6);       //Aqui tu codigo a testear
$fin = get_micro_time();

echo ‘<p>Tiempo</p>Inicio: ‘,$inicio,’<br />’;
echo ‘Fin: ‘,$fin,’<br />’;

echo ‘Total: ‘,$fin-$inicio;

?>

Esto se logra gracias a la función microtime() de PHP que según el manual de ayuda dice que  marca de tiempo Unix actual con micro-segundos y que sólo funciona si se encuentra disponible la llamada de sistema gettimeofday() en el sistema operativo.