ROUGH DRAFT authorea.com/5783
Main Data History
Export
Show Index Toggle 0 comments
  •  Quick Edit
  • Prática en Empresas

    This block failed to display. Double-click this text to correct any errors. Your changes are saved.

    Descripción de la empresa

    Características Principales

    Objeto de la Empresa:

    La empresa ABAX SOLUTIONS pertenece a un conjunto de empresas que se dedican a la asesoría y la gestión tanto fiscal como económica de autónomos y empresas, además de tener una parte (a la que se dedica ABAX SOLUTIONS) de creación de aplicaciones y administración de aplicaciones.

    Ubicación:

    Se encuentra en Avda.Constitución, en el Centro Comercial San Juan local 32, Arroyo de la Miel, Benalmádena.

    Población:

    La empresa cuenta con cinco personas fijas dedicadas a la gestión fiscal y contable, y varias personas en prácticas trabajando en distintos campos.

    Descripción del entorno de trabajo

    Descripción del departamento

    El equipo de trabajo informático lo componemos dos personas en prácticas y (durante las primeras semanas de prácticas) un miembro anterior de la empresa, que nos enseñó Python con Django y nos ha sido de gran ayuda.
    Disponemos de 2 ordenadores y nuestra propia mesa de trabajo.
    Nuestra función principal es la creación de una página web como Front end de un proyecto mayor que se detallará más adelante. Además de eso ayudamos con los demás equipos de la empresa.

    Actividades desarrolladas

    Formación


    Hemos sido formados en el uso de DJango, una plataforma web hecha en Python. Por lo tanto también hemos aprendido Python y para la creación de las páginas webs hemos profundizado, en este caso sin ayuda y por nuestra cuenta, en el uso de HTML5, CSS3, Javascript y PHP.
    Además hemos aprendido a utilizar DJango-CMS y crear plugins para él, de manera que al administrador final(que puede ser un usuario sin mucha experiencia) le sea fácil gestionar su página web sin tener que tocar código.

    Participación en Actividades


    Hemos participado en la administración de los equipos que se encuentran en la empresa y en la creación de varias páginas web.

    Descripción de las principales actividades

    Mantenimiento de los equipos


    La primera tarea ha realizar fue la revisión de los equipos de la empresa, con la obtención de los programas y cuentas de usuarios que contenían, así como su hardware y periféricos, creando una tabla en Excel para guardar la información y que sea fácilmente accesible y modificable.
    Además se ha llevado la instalación de Linux y Windows en dos ordenadores para uso informático, intentado seguir buenas prácticas en la creación de particiones, gestión de usuarios y política de instalaciones.

    Replicación de páginas web


    Para ensayar para el proyecto objetivo de las prácticas y para formarnos en ello, hemos replicado dos páginas web con Django CMS: Ocagestión y Lopezvella
    En esta parte hemos hecho uso de virtualenv y virtualenvwrapper para poder separar la instalación de las dependencias del proyecto y la configuración del ordenador.
    Por último hemos estado usando git para el control de versiones, aprendiendo a usar la metodología de ramas siguiente:
    Existe una rama principal master a la cuál sólo se le aplicaran cambios de versiones estables. De ella cuelga una rama develop que contendrá versiones intermedias, pero estables, del trabajo realizado.
    A partir de estas ramas se crean otras para los desarrolladores, para así haya el menor posible de conflictos en el código.
    Así que hemos tenido que inspeccionar cada web, aprendiendo así cómo funciona el CSS y distintas formas de hacer las cosas.

    Creación de página web


    Este proyecto lo hemos realizado desde cero. Con la experiencia de la práctica anterior hemos sido capaces de diseñar, modular y crear el Front end del proyecto PocketPadel. Este proyecto consiste en una aplicación para telefonos móviles, iPhone y Android, que ofrece noticias sobre clubs y torneos de Pádel, y que además ofrece a los jugadores de pádel, gestión de partidos y torneos en los que participen.
    Para realizar esta tarea primero empezamos con Django-CMS, pero después de dos semanas trabajando con ella, teníamos que entregarla y no estaba ni muchos menos para ser entregada. Así que empezamos con una página estática en HTML que simplemente contuviese los datos esenciales necesarios para ser entregados.
    Al subirla al servidor público, 1and1, nos dimos cuenta de que no disponía de soporte para DJango, sólo para HTML y PHP. Esto será importante más adelante.
    Durante este tiempo estuvimos mejorando la página web estática, ya que debía de disponer de elementos como las condiciones legales, política de cookies y apartados distintos de la web. Gracias a esto aprendimos mucho CSS3 y Javascript, a veces usando JQuery.
    Desde un principio se nos pidió que la página web fuera responsive, esto es que la página se adapte a la pantalla de cualquier tipo de dispositivo desde el que se acceda. Para ello usamos la etiqueta @media de CSS3. Sin embargo, debido a que la página cambiaba continuamente, añadiendo y quitando elementos, con algunas cosas no se ha podido conseguir este objetivo, como con el carrousel de fotos para mostrar las fotos de la aplicación, hecho en Javascript.
    Una vez terminada esta primera parte y establecida cierta estabilidad en la página, pasamos a comunicarla con las aplicaciones. Para ello se nos informó de que el sistema usa REST para comunicarse entre las aplicaciones y el Back end, con lo que para obtener los datos que necesitabamos teníamos que hacer una petición GET con una autenticación. Como HTML no dispone de esta capacidad, en un primer caso pensamos en Javascript, pero como se ejecuta del lado del cliente, este último podría ver el token de autenticación. Así que finalmente nos decantamos por PHP, ya que el servidor lo soportaba.
    Como nunca había usado PHP, primero hice un tutorial rápido en Codecademy. Una vez aprendido la base de PHP conseguí establecer conexión con el servicio REST para obtener las noticias de la aplicación. Entonces me dí cuenta de que estabamos ante un objeto en Json, y gracias a que PHP tiene soporte para cadenas Json fue fácil manejar los datos y representarlos en la web con HTML y CSS3. Sin embargo, al ser un texto en plano, los carácteres especiales, como tildes, saltos de linea, puntos para listas, etc\(\cdots\) no salían bien, así que hice una función en PHP que lee la noticia y genera un código HTML oportuno.
    Las noticias a veces tienen imagenes y estás se encuentran alojadas en el mismo servidor que se alojan los datos y el panel de administración, por lo que un usuario podía ver, simplemente guardando la imagen o copiando la ruta, donde se aloja y esto es algo que queriamos evitar. Así que investigando por la web descubrí que se podía pasar una imagen a base64 y que se mostrase en la web. Para ello usé esta linea de código:

    <img src="data:image/<?php echo getExtension($imagen);?>base64,
    <?php echo base64_encode(file_get_contents($imagen));?>"/>


    Donde se puede ver la estructura del HTML que quedaría en la web. getExtension es una función que hice para obtener la extensión de la imagen en concreto. Así, con este método para representar imagenes, un usuario mal intencionado no verá la URL del servidor.
    También en el apartado de la seguridad, utilizando la herramienta Acunetix descubrimos ciertos fallos en la página web, como que los emails estaban en texto y un bot podría intentar enviar spam si encontrase la dirección. Así que hicimos una función en JQuery qué solucionaba este problema:

    (function($) {
       $.fn.tmMail = function(user, site) {
           this.each(function() {
           var string = '<a href="mail
           to:' 
           + user + '@' + site + '">' 
           + user + '@' + site + '</a>';
                 $(this).append(string);
            });
        };
     })(jQuery);


    En este momento se nos pidió que la página tuviese constancia de la provincia en la que se encuentra el usuario, así que previendo que la página necesitaría un sistema de gestión de sesiones y usuarios decidí usar las sesiones de PHP. Para ello creé un <select> con las provincias disponibles en la aplicación ahora mismo y que al ser seleccionada una provincia en concreto se envía por POST un mensaje a la propia página, dónde una función en PHP recibe el parámetro, guardandolo en un parámetro de sesión para toda la página. Gracias a esto las noticias la página sólo muestra noticias relacionadas con su provincia, o en su defecto, de Málaga.
    Por último, tuvimos problemas con el servidor público, 1and1.es, ya que a veces la configuración de su PHP no era la misma que la del servidor local y funciones como file_get_contents o las sesiones de PHP nos daban error. Sin embargo descubrimos que si colocabamos un fichero php.ini en el directorio de la página con los parámetros oportunos estos errores se solucionaban.