Archivo

Archivo del autor

Esperar/Pausar/Sleep X Segundos una aplicacion Python [AppEngine]

Lunes, 30 de enero de 2012 1 comentario

En Python tenemos una libreria que podemos importar llamada Time, con la que podemos “pausar” el script X segundos.



En este ejemplo se esta importando Time y usando Sleep para dormirla y Ctime para mostrar la fecha y hora actual.

Archivo pausa.py:

# -*- encoding: utf-8 -*-
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
import time #Para poder usar el time.sleep(5)

class MainPage(webapp.RequestHandler):

	def get(self):
		self.response.headers['Content-Type'] = 'text/html'
		self.response.out.write("Inicio : %s" % time.ctime())
		time.sleep(5) #Tiempo en segundos
		self.response.out.write("<br>")
		self.response.out.write("Fin : %s" % time.ctime())

application = webapp.WSGIApplication(
                                     [('/', MainPage),
									 ('/index.html', MainPage)],
                                     debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()


La salida seria:

Inicio : Mon Jan 30 20:14:38 2012
Fin : Mon Jan 30 20:14:43 2012



Un archivo app.yaml sencillo:

application: [NOMBRE DE MI APLICACION]
version: 1
runtime: python
api_version: 1

handlers:

- url: /.*
  script: pausa.py


[Solucion] Ocultar barra de Navegacion – Blogger

Jueves, 19 de enero de 2012 1 comentario

En blogger siempre hay una barra en el header de la web y que aveces es incomoda a algunos, por eso en esta entrada vamos a Ocultarla  y tambien Ocultarla y mostrarla al pasar el raton por encima.

blogger-ocultar-barra-de-navegacion_paso0

Sigue estos pasos:


1.-  Entramos en nuestro panel de blogger:

http://www.blogger.com/home

2.- Seleccionamos el blog y luego vamos a Plantilla –> Edicion de HTML .

3.- Nos aparecera el siguiente mensaje y damos click a Continuar.
Blogger - Ocultar Barra de Navegacion - Paso3


4.- Ahora nos aparecera codigo HTML, solo tenemos que dar a Buscar (Ctrl + F) y escribir
Blogger - Ocultar Barra de Navegacion - Paso4



5.- Ahora debemos elegir el codigo que queremos usar y ponerlo Antes del < /head> (como en la imagen) :

Blogger - Ocultar Barra de Navegacion - Paso5

 

Codigo para Ocultarla Completamente:

<style type='text/css'>
#navbar-iframe {
display: none !important;
}
</style>

Codigo para mostrarla solo al pasar el raton por encima:

<style type='text/css'>
#navbar-iframe {
opacity:0.0;
filter:alpha(Opacity=0)
}
#navbar-iframe:hover {
opacity:1.0;
filter:alpha(Opacity=100,FinishedOpacity=100)
}
</style>




[Solucion]The site “http://***.com” has not been registered-[Google Authentication Service]

Jueves, 19 de enero de 2012 1 comentario
The page you have requested cannot be displayed. Another site was requesting access to your Google Account, but sent a malformed request. Please contact the site that you were trying to use when you received this message to inform them of the error. A detailed error message follows:

The site "http://www.*******.net" has not been registered.



Google Authentication Service da el este error al intentar acceder a la API desde un dominio, para Solucionarlo debemos seguir estos pasos:


1.- Ingresar a esta web:
https://accounts.google.com/ManageDomains



2.- En Add a New Domain agregamos nuestro dominio y damos click en Add Domain.
Google Authentication Service The site has not been registered - Paso2




3.- Despues de agregarlo nos aparece mas abajo Manage registration donde aparecera Manage  www.vicolinker.net , le damos click.
Google Authentication Service The site has not been registered - Paso3




4.- En este apartado en caso de no tener el dominio en Google Webmaster Tools deberemos de verificarlo con cualquiera de los siguientes metodos:

-Upload an HTML file to your server –> El metodo Recomendado, solo debemos descargarnos el archivo HTML de verificacion y subirlo en la raiz de nuestra web.

-Add a meta tag to your site’s home page –> Agregando un Meta en el de nuestra web.

-Use your Google Analytics account –> En Caso de tener el Codigo de Seguimiento de Google Analitycs en la web.

-Add a DNS record to your domain’s configuration –> Se agrega un registro TXT a las DNS del dominio.



5.- Una vez verificado el dominio regresamos a Manage www.vicolinker.net y Aceptamos los Terminos del Servicio (I agree to the Terms of Service)
Google Authentication Service The site has not been registered - Paso5




6.- Ahora en el campo Target URL path prefix agregamos nuestro dominio (No olvidar el http:// ) y damos a Save .
Google Authentication Service The site has not been registered - Paso6




7.- Ahora nos aparecera arriba (Activos) en verde, y ya podremos volver a intentar el acceso a la API.
Google Authentication Service The site has not been registered - Paso7




[Solucion]Reactivar / Dessuspender Manualmente una cuenta Cpanel [WHM]

Martes, 17 de enero de 2012 1 comentario

Nose porque ocurre este error de que el WHM no reactiva una cuenta suspendida o si intentas hacerlo que dice que no esta suspendida pero al ingresar al dominio sigues viendola como suspendida. Por eso vamos a hacer una Reactivacion Manual de la cuenta.


Podemos hacerlo desde SFTP o SSH.


* Metodo por SFTP:


1.- Entramos al server desde cualquier programa SFTP (FTP por shell) o por cualquiera FTP que tenga acceso al /Home/ de nuestro server y vamos a la siguiente ruta:

/home/[Nombre_de_la_cuenta]/public_html/



2.- Buscamos el archivo .htaccess, le damos a editar y borramos la siguiente linea:

RedirectMatch .* /cgi-sys/suspendedpage.cgi


Nota: En caso que esa sea la unica linea del .htaccess podemos eliminar el archivo directamente , pero si tiene mas lineas solo eliminar esa.



3.- Guardamos y ahora buscamos en el /public_html/ si hay algun archivo con nombre similar al que esta abajo y lo eliminamos:

.htaccess.suspend.[numeros]




* Metodo por SSH:


1. Nos Logueamos como root en el server y ejecutar el siguiente comando para ver que contiene el .htaccess de la cuenta:

cat /home/[Nombre_de_la_cuenta]/public_html/.htaccess



2. Vemos si esta linea:

RedirectMatch .* /cgi-sys/suspendedpage.cgi



3. Editamos el Archivo con cualquiera de las siguientes 3 lineas:

edit /home/[Nombre_de_la_cuenta]/public_html/.htaccess
nano -w /home/[Nombre_de_la_cuenta]/public_html/.htaccess
sudo nano -w /home/[Nombre_de_la_cuenta]/public_html/.htaccess



4.- Guardamos con Control+O y luego Enter o con Control+X y luego Y .


5.- Listamos la carpeta y con el siguiente comando:

ls /home/[Nombre_de_la_cuenta]/public_html/



6.- Comprobamos si en el directorio /public_html/ hay algun archivo con nombre similar al que esta abajo.

.htaccess.suspend.



Si hay alguno con ese nombre lo eliminamos:

rm -fr /home/[Nombre_de_la_cuenta]/public_html/.htaccess.suspend.[numeros]




Nota: Para no tener que escribir la ruta entera puedes ir directamente a la carpeta para usar comandos mas cortos:

cd /home/[Nombre_de_la_cuenta]/public_html/

Y ya usarias los comandos algo asi:

edit /.htaccess
ls /




Suspender / Reactivar una cuenta de Cpanel por SSH [WHM/Cpanel][Centos]

Martes, 17 de enero de 2012 1 comentario

En WHM/Cpanel tambien podemos Reactivar (tambien llamado “dessuspender”) una cuenta mediante la consola de comandos SSH.



Los comandos son los siguientes:


- Supender una cuenta:

/scripts/suspendacct


- Supender una cuenta indicando una Razon:

/scripts/suspendacct  "Razon de suspension" 1


- Reactivar/desuspender una cuenta:

/scripts/unsuspendacct


Nota: Si has tenido un error para Reactivar/Desuspender una cuenta por la interfaz web o SSH, prueba hacerlo manualmente como indico en la siguiente entrada.

[Solucion]Reactivar / Dessuspender Manualmente una cuenta Cpanel [WHM]

[Solucion] SyntaxError: EOL while scanning string literal – Python

Viernes, 6 de enero de 2012 Sin comentarios

type 'exceptions.SyntaxError': EOL while scanning string literal (XXXX.py, line X)


Este error de Python es por un problema con la sintaxis del script, algunas veces porque nos olvidamos de cerrar la cadena, por algun salto de linea o algo similar.



Errores Comunes: (Suponiendo que queremos asignar a mi_variable el string ‘Este es un texto de prueba’ )


1.- Poner la comilla de cierre en otra linea:

mi_variable = 'Este es un texto de prueba
'

Solucion: Poner todo en una sola linea

mi_variable = 'Este es un texto de prueba'



2.- Hacer un salto de linea entre el texto (dentro de las comillas):

mi_variable = 'Este es un
texto de prueba'

Solucion: Poner \ (barra o slash) al final de cada linea:

mi_variable = 'Este es un \
texto de prueba'

mi_variable = 'Este es un \
texto de \
prueba'


‘X-AppEngine-country’ Saber el Pais de un visitante con Python

Domingo, 25 de diciembre de 2011 Sin comentarios

En la version de Appengine 1.5.1 (20 Junio del 2011) se añadio en el Header la etiqueta X-AppEngine-country que contiene el pais del visitante a partir de su IP, este valor esta en ISO-3166-1 alpha-2 (ej: ES -> España, PE -> Peru, US -> Estados Unidos ).


Un ejemplo del codigo seria el siguiente:


Archivo pais.py

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):

	def get(self):
		pais = self.request.headers.get('X-AppEngine-country')
		self.response.out.write(pais)

application = webapp.WSGIApplication(
                                     [('/', MainPage)],
                                     debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()



Archivo Yaml :

application: [NOMBRE DE MI APLICACION]
version: 1
runtime: python
api_version: 1

handlers:

- url: /.*
  script: pais.py



Esto leera el header y nos devolvera el valor de la etiqueta, en mi caso ES .


**NOTA: El codigo probarlo en Produccion (En los servers de AppEngine) porque en local no lo procesa y es como si la etiqueta estuviera vacia.


Descargar el Ejemplo: Ejemplo X-AppEngine-country - AppEngine (134)


Lista de Paises en ISO-3166-1 alpha-2 : http://www.vicolinker.net/2011/12/lista-de-paises-en-iso-3166-1-alpha-2-creada-por-google/

Gracias a @scyros por guiarme para hacer este ejemplo ;)