rss
twitter
  •  

How to uninstall APF (Advanced Policy Firewall)

| Posted in General |

0

No más… por muchos años usé el APF firewall el cual fue en su tiempo bastante útil y poderoso.

Pero últimamente ha sido un terrible dolor de cabeza, en especial al trabajar con FTP en modo pasivo; y como hasta la fecha no han dado solución al bug, pues he decidido desinstalarlo.

Pero como el APF no fue instalado por repositorio sino compilado, desinatalarlo puede ser algo complicado… es por ello que he creado este script para desinstalar el APF, sin dolores de cabeza.


#!/bin/bash
echo "APF Uninstaller"

#stoping APF
/etc/rc.d/init.d/apf stop

#bye bye daemon
chkconfig --del apf
rm -f /etc/rc.d/init.d/apf

#au revoir configs
rm -rf /etc/apf

#no more cron
rm -f /etc/cron.d/refresh.apf
rm -f /etc/cron.daily/apf

#adios, log rotations
rm -f /etc/logrotate.d/apf

#sayonara, executable
rm -f /usr/local/sbin/apf

# Arrivederci! logs
rm -f /var/log/apf_log*

echo "Done!"

Espero les sea de ayuda ;-)

Script bash para obtener un reporte de consumo de disco por dominio en plesk

| Posted in General |

0

No soy muy dado a hacer scripts shell de Linux, prefiero hacerlos en PHP. Pero necesitaba algo simple y rápido para obtener reportes de consumo de disco por dominio en un servidor Linux con PLESK.


#!/bin/bash

echo "***Correos***"
cd /var/qmail/mailnames/$1
du -csk * | sort -n
echo "***Web***"
cd /var/www/vhosts/$1/httpdocs/
du -csk * | sort -n
echo "FIN"

Y allí lo tienen, nada del otro mundo… sólo deben pasar como parámetro el dominio que desean evaluar por ejemplo:
./reporte.sh dominioaevaluar.com

Jquery DatePicker – Calendario

| Posted in General |

1

Recientemente me he encontrado con este sencillo pero poderoso plugin JQuery, para hacernos un buen datepicker (selector calendario). Ya había probado muchos hasta el cansancio, pero este me ha llamado poderosamente la atención por:

  • No es invasivo
  • Cross Browser
  • Todo en un único archivo de 22k
  • Extremadamente personalizable

Me ha sorprendido que incluso las imágenes y los estilos necesarios forman parte del mismo archivo Javascript. Realmente una genialidad.

Y ya que me dí a la tarea de llevarlo al Español acá les dejo un ejemplo de un acomodo que hice recientemente; para que conozcan un poco como se configura


<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.1.min.js"></script>
<script type="text/javascript" src="datepicker-2.5.js"></script>
<script type="text/javascript">
$(document).ready(function (){
var langEs=[
 ["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],
 [],
 [],
 ["Lunes","Martes","Miércoles","Jueves","Viernes","Sábado","Domingo"],
 [],
 [],
 "Hoy"];

	var cal = new DatePicker('#reg_fecha', {
		autoOpen:true,
		min:"1jan2009",
		max:new Date(),
		format:"d/m/Y",
		firstDayOfWeek:6,
		language:"es",
		});
		cal.addLanguage("es",langEs);
});
</script>

El sitio oficial es: http://datepicker.org.ru/ desde donde podrán seguir las más recientes versiones y la documentación necesaria.

Espero le saquen provecho. ;-)

CodeIgniter 2.0 Liberado (y en Español)

| Posted in General |

10

codeigniter 2.0

Una grata noticia ! el mejor framework PHP ha liberado su versión 2.0 con decenas y notables mejoras.

Descargar: http://codeigniter.com/download.php

Y para agregarle la cereza a nuestro cóctel también tenemos el paquete oficial en Español (al cual le eché una manito ;-) )
Descargar: http://mygengo.com/string/p/codeigniter-2-1/export/language/es/

Estoy considerando traducir la guía oficial completa al español, ¿voluntarios?

Entendiendo los JOINS con gráficos

| Posted in General |

3

No es de sorprender que son muchos los programadores o administradores de bases de datos quienes recién se inician, que el comprender las consultas relacionales entre distintas tablas puede resultar algo difícil de comprender, de visualizar.

Sabiendo que las imágenes se fijan mejor en nuestro cerebro que sólo leer, traigo a ustedes una adaptación del articulo escrito por mi colega Ligaya Turmelle en el año 2007 pero que cuya vigencia es válida aun hoy.

A continuación observemos estos diagramas de Venn y conozcamos los tipos de relaciones JOIN entre tablas de una base de datos.

La base: un diagrama vacío

El círculo T1 representa a todos los registros de la tabla 1 y el círculo T2 representa todos los registros de la tabla 2. Note como se sobrepone un poco en el medio, donde ambos círculos coinciden.

INNER JOIN
Un inner join sólo retorna los registros donde “conciden” entre las dos tablas. Así que por cada registro devuelto de T1 habrá uno enlazado por el foreign key con T2. En programación esto equivale al operador lógico AND.

OUTER JOIN
Un outer join es lo opuesto al inner join. Sólo retorna los registros que no están en T1 y T2, es decir: donde no coinciden. En programación esto equivale al NOT AND.

LEFT JOIN
LEFT JOIN devolverá todos los registros de la tabla izquierda (T1), sin importar si coincide o no con la tabla derecha (T2). Si llega a suceder una coincidencia con los registros en la tabla T2, pues los devolverá también. Si no, los rellenará con NULL.

Como podrán apreciar se puede realizar exactamente lo mismo con la tabla derecha T2, y se conoce como RIGHT JOIN, sin embargo en la mayoría de los casos sólo se usa el LEFT JOIN.

LEFT OUTER JOIN
Un left outer join combina los conceptos del left join y del outer join. Básicamente se obtendrán todos los registros de la tabla izquierda (T1) menos donde coincida con la tabla derecha (T2).

Nuevamente observe que lo mismo puede ser aplicado con la tabla derecha (T2), conocido entonces como RIGHT OUTER JOIN. Aunque la mayoría prefiera referirse a la tabla izquierda siempre.

THETA JOIN
Es el producto cartesiano entre las dos tablas, y seguramente no es lo que se desea, ya que puede provenir del resultado de una mala consulta y entonces obtener más registros de los que realmente esperaba.

SELECT t1.*, t2.*
FROM table1 t1, table2 t2
WHERE t1.id = 5;

Y allí lo tienen, quizá en el futuro cuando necesiten realizar relaciones entre tablas y necesiten una pista, espero este artículo les sea de ayuda.