<commit_before># Asignatura: IV Grupo de Practicas Miercoles 8:30h a 10:30h
## <NAME>

# Ejercicios Tema 3

## Ejercicio 1.
### Darse de alta en algún servicio PaaS tal como Heroku, Nodejitsu, BlueMix u OpenShift.

El servicio que voy a utilizar para éste ejercicio es [OpenShift](https://www.openshift.com).

Una vez accedemos a la web, de [OpenShift](https://www.openshift.com) para registrarnos debemos pulsar en "***Sign up for free***" a continuación debemos rellenar  el siguiente formulario:

![Formulario de Registro](https://www.dropbox.com/s/w1uirhpt8zhdxpg/Ejer1%2001.png?dl=1)
Figura 1 Ejercicio 1

Una vez aceptado el formulario, tendremos que verificarlo a través de nuestro correo. Una vez verificado [OpenShift](https://www.openshift.com) nos da la bienvenida

![Bienvenida](https://www.dropbox.com/s/lu8b1wqk0ldfn6v/Ejer1%2002.png?dl=1)
Figura 2 Ejercicio 1

## Ejercicio 2
### Crear una aplicación en OpenShift y dentro de ella instalar WordPress.

Cuando ya somos usuarios de [OpenShift](https://www.openshift.com), una vez logueados, nos sale la siguiente ventana de bienvenida, mostrado en en el ejercicio anterior. `Figura 2`.

Pulsamos donde pone `Create your first application now` y nos lleva a una nueva página la cual nos muestra la cantidad de aplicaciones que nos da la posibilidad de elegir, subdivididas en diferentes grupos:
- Instant App
- xPaaS
- Java
- Php
- Ruby
- Python
- Y otros tipos, como por ejemplo: **Nodejs**, **Perl**...

Nosotros para llevar a cabo éste ejercicio, debemos seleccionar dentro del apartado **Instant App**, `WordPress 4`

A continuación debemos de configurar nuestra aplicación, también asignamos la url pública a nuestra aplicación

![Configuración Aplicación WordPress 4](https://www.dropbox.com/s/avvahnz69vjaaom/Ejer2%2001.png?dl=1)
Figura 1 Ejercicio 2

Y a continuación le damos al botón `Create Application`.
Al rato, nos preguntará que si vamos o no a cambiar el código de la aplicación, nosotros por ahora le decimos que no y autmáticamente nos llevará a la siguiente ventana.

![Creado php-magv.rhcloud.com](https://www.dropbox.com/s/k1mfzwnnecgymlb/Ejer2%2002.png?dl=1)
Figura 2 Ejercicio 2

Una vez creado, le pinchamos en el enlace `php-magv.rhcloud.com`
y nos lleva a configurar WordPress, al siguiente enlace `http://php-magv.rhcloud.com/wp-admin/install.php` para configurar el idioma que queremos en WordPress, seleccionamos Español y le damos a continuar.

A continuación nos pide que completemos la información siguiente:

- Título del sitio
- Nombre de usuario
- <PASSWORD> <PASSWORD>
- Tu correo electrónico
- Privacidad

![Información a Cumplimentar](https://www.dropbox.com/s/ptyjbgue5kayqxl/Ejer2%2003.png?dl=1)
Figura 3 Ejercicio 2

Una vez completada dicha información, pulsamos el botón `Instalar WordPress`

Seguidamente nos sale un mensaje, de que WordPress se ha instalado correctamente, mostrando nuestro nombre de usuario y contraseña, más el botón de acceder.

Pulsamos en acceder y ya está listo. Ya podemos configurar nuestra app WordPress.

![Todo listo](https://www.dropbox.com/s/ajjxff263qn48it/Ejer2%2004.png?dl=1)
Figura 4 Ejercicio 2

Podemos visitar nuestro sitio pinchando aquí [aquí](http://php-magv.rhcloud.com/).

## Ejercicio 3
### Realizar una app en express (o el lenguaje y marco elegido) que incluya variables como en el caso anterior.

## Ejercicio 4
### Crear pruebas para las diferentes rutas de la aplicación.

# Ejercicio 5
### Instalar y echar a andar tu primera aplicación en Heroku.

**Python en Heroku** [Tutorial Heroku](https://devcenter.heroku.com/articles/getting-started-with-python#introduction).

### Requisitos previos

  - Una cuenta en [Heroku](https://id.heroku.com/login)

  ![Bienvenido a Heroku](https://www.dropbox.com/s/ny4tj0ing36juwx/Captura%20de%20pantalla%20de%202015-11-20%2015%3A52%3A48.png?dl=1)
  Figura 5.1 Bienvenido a Heroku
  - [Python](http://docs.python-guide.org/en/latest/starting/install/linux/) previamente instalado, en nuestro caso linux.
  - **Setuptools** y **Pip**
  - Instalar [VirtualenV](https://github.com/kennethreitz/python-guide/blob/master/docs/dev/virtualenvs.rst) mediante `pip install virtualenv`
  - [Postgres](https://devcenter.heroku.com/articles/heroku-postgresql#local-setup) instalados, si se ejecuta la aplicación a nivel local

### Configuración

Vamos a instalar [Heroku Toolbelt](https://toolbelt.heroku.com/install-ubuntu.sh), que nos proporciona acceso a Heroku Command Line Interface (CLI), que se puede utilizar para gestionar y ampliar sus aplicaciones y complementos, también ayuda en la gestión de las aplicaciones en forma local.

![Instalar Heroku Toolbelt](https://www.dropbox.com/s/pn6xauwpoemvxpd/05.%2001.png?dl=1)

Figura 5.2 Una vez instalado Heroku Toolbelt ya podemos utilizar el comando heroku desde la consola.<commit_msg>Ejercicio 3 y 4<commit_after># Asignatura: IV Grupo de Practicas Miercoles 8:30h a 10:30h
## <NAME>

# Ejercicios Tema 3

## Ejercicio 1.
### Darse de alta en algún servicio PaaS tal como Heroku, Nodejitsu, BlueMix u OpenShift.

El servicio que voy a utilizar para éste ejercicio es [OpenShift](https://www.openshift.com).

Una vez accedemos a la web, de [OpenShift](https://www.openshift.com) para registrarnos debemos pulsar en "***Sign up for free***" a continuación debemos rellenar  el siguiente formulario:

![Formulario de Registro](https://www.dropbox.com/s/w1uirhpt8zhdxpg/Ejer1%2001.png?dl=1)
Figura 1 Ejercicio 1

Una vez aceptado el formulario, tendremos que verificarlo a través de nuestro correo. Una vez verificado [OpenShift](https://www.openshift.com) nos da la bienvenida

![Bienvenida](https://www.dropbox.com/s/lu8b1wqk0ldfn6v/Ejer1%2002.png?dl=1)
Figura 2 Ejercicio 1

## Ejercicio 2
### Crear una aplicación en OpenShift y dentro de ella instalar WordPress.

Cuando ya somos usuarios de [OpenShift](https://www.openshift.com), una vez logueados, nos sale la siguiente ventana de bienvenida, mostrado en en el ejercicio anterior. `Figura 2`.

Pulsamos donde pone `Create your first application now` y nos lleva a una nueva página la cual nos muestra la cantidad de aplicaciones que nos da la posibilidad de elegir, subdivididas en diferentes grupos:
- Instant App
- xPaaS
- Java
- Php
- Ruby
- Python
- Y otros tipos, como por ejemplo: **Nodejs**, **Perl**...

Nosotros para llevar a cabo éste ejercicio, debemos seleccionar dentro del apartado **Instant App**, `WordPress 4`

A continuación debemos de configurar nuestra aplicación, también asignamos la url pública a nuestra aplicación

![Configuración Aplicación WordPress 4](https://www.dropbox.com/s/avvahnz69vjaaom/Ejer2%2001.png?dl=1)
Figura 1 Ejercicio 2

Y a continuación le damos al botón `Create Application`.
Al rato, nos preguntará que si vamos o no a cambiar el código de la aplicación, nosotros por ahora le decimos que no y autmáticamente nos llevará a la siguiente ventana.

![Creado php-magv.rhcloud.com](https://www.dropbox.com/s/k1mfzwnnecgymlb/Ejer2%2002.png?dl=1)
Figura 2 Ejercicio 2

Una vez creado, le pinchamos en el enlace `php-magv.rhcloud.com`
y nos lleva a configurar WordPress, al siguiente enlace `http://php-magv.rhcloud.com/wp-admin/install.php` para configurar el idioma que queremos en WordPress, seleccionamos Español y le damos a continuar.

A continuación nos pide que completemos la información siguiente:

- Título del sitio
- Nombre de usuario
- Contraseña
- Tu correo electrónico
- Privacidad

![Información a Cumplimentar](https://www.dropbox.com/s/ptyjbgue5kayqxl/Ejer2%2003.png?dl=1)
Figura 3 Ejercicio 2

Una vez completada dicha información, pulsamos el botón `Instalar WordPress`

Seguidamente nos sale un mensaje, de que WordPress se ha instalado correctamente, mostrando nuestro nombre de usuario y contraseña, más el botón de acceder.

Pulsamos en acceder y ya está listo. Ya podemos configurar nuestra app WordPress.

![Todo listo](https://www.dropbox.com/s/ajjxff263qn48it/Ejer2%2004.png?dl=1)
Figura 4 Ejercicio 2

Podemos visitar nuestro sitio pinchando aquí [aquí](http://php-magv.rhcloud.com/).

## Ejercicio 3
### Realizar una app en express (o el lenguaje y marco elegido) que incluya variables como en el caso anterior.

He creado un app en Flask sencilla con dos rutas.
Siguiendo esta web y este tutorial. [Flask](http://flask.pocoo.org/)

appPrueba.py

    # -*- coding: utf-8 -*-
    import os

    from flask import Flask
    from flask import request

    app = Flask(__name__)

    #/hello
    @app.route('/')
    def hello():
        return 'Bienvenido a la pagina inicial'

    @app.route('/test2')
    def test2():
        return 'Realizando un segundo test'

    if __name__ == '__main__':
        app.debug = True
        # Enlazar con el puerto si esta definido, si no por defecto 5000.
        port = int(os.environ.get('PORT', 5000))
        app.run(host = '0.0.0.0', port = port)  # 0.0.0.0 para permitir conexiones desde cualquier sitio. Ojo, peligroso en modo debug

## Ejercicio 4
### Crear pruebas para las diferentes rutas de la aplicación.

He realizado los diferentes test a la app creada antes, siguiendo las indicaciones propias de las web de Flask para hacer test. [Test en Flask](http://flask.pocoo.org/docs/0.10/testing/)

Mi test.py y los test que he realizado son los siguientes.

    import os
    import appPrueba
    import unittest
    import tempfile

    class appPruebaTestCase(unittest.TestCase):

        def setUp(self):
            self.db_fd, appPrueba.app.config['DATABASE'] = tempfile.mkstemp()
            appPrueba.app.config['TESTING'] = True
            self.app = appPrueba.app.test_client()
            #appPrueba.init_db()

        def tearDown(self):
            os.close(self.db_fd)
            os.unlink(appPrueba.app.config['DATABASE'])

        def test_raiz(self):
            rv = self.app.get('/')
            assert 'Bienvenido a la pagina inicial' in rv.data

        def test_test2(self):
        	rv = self.app.get('/test2')
            assert 'Realizando un segundo test' in rv.data



    if __name__ == '__main__':
        unittest.main()

El resultado de las pruebas es el siguiente.

![Resultado Test](https://www.dropbox.com/s/fp7x3b3fhgykiqp/Figura%204.png?dl=1)
Figura 4.1 Resultado Test





# Ejercicio 5
### Instalar y echar a andar tu primera aplicación en Heroku.

**Python en Heroku** [Tutorial Heroku](https://devcenter.heroku.com/articles/getting-started-with-python#introduction).

### Requisitos previos

  - Una cuenta en [Heroku](https://id.heroku.com/login)

  ![Bienvenido a Heroku](https://www.dropbox.com/s/ny4tj0ing36juwx/Captura%20de%20pantalla%20de%202015-11-20%2015%3A52%3A48.png?dl=1)
  Figura 5.1 Bienvenido a Heroku
  - [Python](http://docs.python-guide.org/en/latest/starting/install/linux/) previamente instalado, en nuestro caso linux.
  - **Setuptools** y **Pip**
  - Instalar [VirtualenV](https://github.com/kennethreitz/python-guide/blob/master/docs/dev/virtualenvs.rst) mediante `pip install virtualenv`
  - [Postgres](https://devcenter.heroku.com/articles/heroku-postgresql#local-setup) instalados, si se ejecuta la aplicación a nivel local

### Configuración

Vamos a instalar [Heroku Toolbelt](https://toolbelt.heroku.com/install-ubuntu.sh), que nos proporciona acceso a Heroku Command Line Interface (CLI), que se puede utilizar para gestionar y ampliar sus aplicaciones y complementos, también ayuda en la gestión de las aplicaciones en forma local.

![Instalar Heroku Toolbelt](https://www.dropbox.com/s/pn6xauwpoemvxpd/05.%2001.png?dl=1)

Figura 5.2 Una vez instalado Heroku Toolbelt ya podemos utilizar el comando heroku desde la consola.
{'fraction_non_alphanumeric': 0.09800879234548746, 'fraction_numerical': 0.02404965089216447, 'mean_word_length': 4.23319801533604, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 35, 'lorem ipsum': 0, 'www.': 25, 'xml': 0}, 'pii_count': 2, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1783550', 'n_tokens_mistral': 4321, 'n_tokens_neox': 4081, 'n_words': 1264}