En esta entrega vamos a ver cómo trabajar con los diferentes operadores que tenemos disponibles en Python, ¡que no son pocos! y además lo justo para trabajar con módulos.
En Python tenemos varios tipos de oepradores para hacer comparaciones, cálculos, valorar expresiones lógicas....
* Aritmético
* Asignación
* Comparación
* Lógico
* Bit a bit (bitwise)
* Identidad
* Membresía
Estos operadores permiten asignar valores, por norma general a variables, pero no olvidemos que podemos involucrar otros tipos de identificadores como pueden ser listas, tuplas...
Operador
Descripción
=
Asigna un valor
+=
Suma un valor al valor actual y guardar el nuevo valor
-=
Resta un valor al valor actual y guardar el nuevo valor
*=
Multiplica un valor al valor actual y guardar el nuevo valor
Estos operadores te permiten realizar una comparación entre dos valores, son muy utilizados en los condicionales o en validaciones como pueden ser bucles...etc. Además, los valores comparados devuelven un True o un False (booleano) si la comparación se cumple o no.
Convierte el primer y segundo nº decimal en nº binarios, compara ambos nº. Cuando se encuentra 1 bit en el primer nº, y en el segundo también, se establece 1. Cuando se encuentra 1 bit en el primer nº y un 0 en el segundo también se establece un 0.
|
Convierte el primer y segundo nº decimal en nº binarios, compara ambos nº. Cuando se encuentra 1 bit en el primer nº, y en el segundo también, se establece 1. Cuando se encuentra 1 bit en el primer nº y un 0 en el segundo también se establece un 1.
>>
Convierte el primer y segundo nº decimal en nº binarios, compara ambos nº. Cuando se encuentra 1 bit en el segundo nº, y se desplaza el bit en el segundo también, se establece 1. Cuando se encuentra 1 bit en el primer nº y un 0 en el segundo también se establece un 1.
<<
Lo anterior pero desde la izquierda
~
Devuelve el complemento del nº menos el nº que obtenemos cambiado cada 1 por un 0 y un 0 por un 1. Es lo mismo que -nº-1
¿Por qué nos devuelve 2?
Si nosotros pasamos a binario ambos números:
7 = 0 0 0 0 0 1 1 1
2 = 0 0 0 0 0 0 1 0
Cuando coincida el 1 del primer valor, con el 1 del segundo quedará como 1. Si el primer valor hay un 0 y en el segundo hay 1, se quedará el 0 por encima del 1 quedando tal que así:
¿Por qué nos devuelve 191?
Si nosotros pasamos a binario ambos números:
190 = 1 0 1 1 1 1 1 0
9 = 0 0 0 0 1 0 0 1
Cuando coincida el 1 del primer valor, con el 1 del segundo quedará como 1. Si el primer valor hay un 0 y en el segundo hay 1, se quedará el 1 por encima del 0 quedando tal que así:
Estos operadores permiten verificar si hay un str en otro str, lista, diccionario, tupla... (estos 3 últimos los verás más adelante). Se utiliza in para buscar y devolver True si encuentra dicho str, o, not in para verificar que no está.
¿Qué son los módulos? Los módulos son fragmentos de código que contienen librerías... que elaboran otros usuarios o que ya vienen integradas con Python. Hay muchos módulos que vienen ya pre-instalados en el sistema como pueden ser os que permite interactuar con el sistema operativo; subprocess que permite ejecutar comandos de shell; json con el que podremos trabajar con archivos o salidas JSON...
El código de los módulos puede cargarse utilizando la palabra import, como en el siguiente ejemplo:
>>> import json
También podemos cargar parte del código de los módulos como por ejemplo random es un módulo que contiene métodos y propiedades. Podemos cargar solo uno de los métodos que tienes como es .random() y asignarle un alias para trabajar con él como en le siguiente ejemplo:
>>> from random import random as GenerarAleatorio
>>> GenerarAleatorio()
0.9037083824066462
Son un conjunto de valores que se almacenan en modo clave:valor, separados los valores por comas, y todas las claves y sus valores van encerrados en {} como JSON. Las claves no pueden contener tuplas, diccionarios, sets... solo str o int.
Más info en la doc oficial de Python
¡Ya sabemos trabajar mínimamente con estos tipos de datos en Python! En los próximos cursos veremos como trabajar con el control de flujo, es decir, añadiendo condicionales para encausar las decisiones imperativas de nuestro script o programa, y también como iterar diferentes tipos de valores mediante el uso de los bucles.
En este tutorial aprenderás a utilizar Flask. Flask es un web framework elaborado en Python que te permite crear aplicaciones web bastante sencillas, pero potentes ya que el potencial se lo das tu elaborando tu propio sistema de validación, tus propios métodos de conexión a bases de datos... etc porque no olvidemos que es un microframework y no tiene muchas cosas como quizás tendría un framework como Django que contiene muchas más herramientas y desarrrollo.
Este tutorial lo he hecho basándome en la documentación oficial, pero con toques personales, así evito reproducir contenido una y otra vez.
A mi modo de ver las cosas y para no mezclar, siempre es mejor que utilices un entorno virtual que no el propio entorno del sistema, es decir, para instalar Flask hay que descargar una serie de códigos que se instalarán en tu sistema. Sin embargo, con un entorno virtual, puedes instalar, eliminar... o lo que quieras hacer sin dañar la instalación de Python del sistema base, ya sea Fedora, CentOS...etc
Este script carga variables de entorno y rutas para que puedas trabajar con tu proyecto, si te fijas, en el prompt de la terminal ya no está mostrándose como "$", si no, "(proyecto_flask) $"
Utilizamos de ejemplo este directorio: /home/sincorchetes/proyecto_flask, si utilizas otro, que me imagino que sí, adáptalo al que utilices, y crea un subdirectorio llamado app.
Crea un archivo vacio y llámalo core.py (puedes llamarlo como quieras si luego defines que cargue el nombre correcto) y añades el siguiente contenido.
La segunda, inicializamos un objeto llamado proyecto que tiene una clase Flask y que hace referencia a sí mismo.
En la tercera línea, @proyecto.route('/') estamos diciendo que cuando el visitante acceda a: http://pepitodelospalotes.es verá lo que se haya definido en la función de abajo.
En las últimas líneas, desarrollamos la lógica de la aplicación, con la función hola_mundo(), le decimos que cuando el visitante acceda a la página verá lo que hay dentro del return, que en este caso es Hola Mundo.
Guarda el archivo, abre una terminal y sitúate en el directorio de la aplicación.
export FLASK_APP=/home/sincorchetes/proyecto_flask/app/core.py && \
export FLASK_DEBUG=1 && \
flask run
La variables FLASK_APP, defines el core de la aplicación, FLASK_DEBUG permite activar el modo depuración que viene con ayuda para que nos muestre de dónde puede provenir los errores...etc y flask run levanta un servidor de desarrollo para que puedas ver los cambios sin tener que utilizar un servidor web como Nginx o Apache.
Una vez levantada la aplicación, si accedemos a http://localhost:5000 verás el Hola Mundo que has definido en el archivo core.py.
Como he dicho anteriormente, Flask permite crear aplicaciones web, esto no solo incluye la parte de backend que es dónde definimos la lógica de la aplicación, si no que también puedes crear la parte frontend, la parte de visible con la que el usuario interactuará.
Hay que crear el directoriotemplates para añadir las páginas .html
Una vez hecho esto, creas el archivo app/templates/index.html y le añades el siguiente contenido:
<!DOCTYPE html>
<html lang="es">
<head>
<title>Ejemplo de aplicación hecha en Flask</title>
</head>
<body>
<div class="contenedor">
<div class="titulo">
<h1>¡Bienvenidos a mi página Web!</h1>
</div>
<div class="tareas">
<p>¿Te gustan los perros y los coches? Esta es tú página ideal.</p>
</div>
</div>
</body>
</html>
Actualiza el fichero core.py de tal modo que se quede así:
He añadido render_template que permite renderizar contenido .html en el proceso de importar módulos y en la última línea llamamos al método cuyo valor es el archivo que has creado.
Dentro de él, añade todo el contenido CSS o JS que cargará la página, lo que suelo hacer, es crear un subdirectorio css y para las hojas de estilo y js para la lógica de eventos para el usuario.
Para llamarlo, bastará con importar el módulo url_for y luego referenciarlo en el index.html.
core.py
<!DOCTYPE html>
<html lang="es">
<head>
<title>Ejemplo de aplicación hecha en Flask</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/ejemplo.css') }}">
</head>
<body>
<div class="contenedor">
<div class="titulo">
<h1>¡Bienvenidos a mi página Web!</h1>
<hr>
</div>
<div class="tareas">
<h2>Flask es un microframework web - <span class="date">Editado 19-09-2020 09:20:00 am</span></h2>
<p>En el siguiente artículo hablaré de las maravillas de Flask....</p>
</div>
</div>
<script src="{{ url_for('static', filename='js/ejemplo.js') }}"></script>
</body>
</html>
Cuando accedas a http://localhost:5000 vas a ver una página como esta:
No es que digas ¡como mola esta página!, simplemente es para que veas cómo se pueden crear rutas, cómo renderizar contenido .html desde el backend y cargar archivos css y js para la parte frontend de la aplicación.
En las próximas entregas, verás como trabajar con variables, listas...etc que se renderizarán en la página y con un toque más profesional en el diseño con Bootstrap.
CSS proviene del inglés Cascade Style Sheet traducido al español como hoja de estilos en cascada que como su nombre propio indica, le atribuye estilo como colores, formas, bordes, dimensiones a determinados elementos o un conjunto de elementos de una página elaborada con lenguaje de etiquetado HTML.
CSS ha tenido varias versiones a lo largo de los años, CSS2 según el portal de documentación Mozilla Developer, necesitó de 9 años para su estandarización desde agosto del 2002 hasta junio del 2011. Con lo que hace lento su normalización. Sin embargo, adaptaremos el contenido para la última pre-versión.
En el CSS tenemos lo que se llaman reglas con las que estilizar los elementos del documento Web. Estas reglas están formadas por un selector que es un elemento Web como puede ser un anclaje (<a>); un párrafo (<p>), una tabla (<table>)... una propiedad que puede ser común para muchos elementos como color para un texto, anclaje... y un valor que suele determinarse según lo que tengamos que declarar en la propiedad, ya sean píxels, porcentajes, números y texto...etc Tanto la propiedad como el valor, van incluídos dentro de llaves {}
| Selector |
-------- Valor
| | -------- |
body { |
font-family: Sans;
-----------
|
Propiedad
}
NOTA: Se pueden añadir tantas propiedades como uno quiera, o el selector lo permita.
Cuando nosotros declaramos una regla a un elemento padre que engloba a muchos hijos tipo body. Todos los elementos heredarán las propiedades junto con el valor y se representarán como tal (siempre que el elemento lo permita). Sin embargo, cuando hacemos reglas específicas, siempre prevalecerán las específicas sobre las general. Por ejemplo, si tenemos un body con un color de fondo en negro, y párrafos con un fondo rojo. Los párrafos utilizarán de fondo el color rojo que se interpreta aquí como un subrayado.
Existen 3 formas de enmaquetación Web con las hojas de estilo que pueden alternarse entre sí, pero es preferible escoger 1, y a ser posible la última de todas estas. Más que nada por legibilidad del código y la propia separación de los demás lenguajes de marcas como es HTML del de programación Web como Javascript entre otros.
1. Etiqueta <style>
2. Atributo style=""
3. Fichero separado .css
Se le puede designar a un elemento un estilo más específico como un atributo.
Por ejemplo:
<body>
<h1>Cuando éramos jóvenes</h1>
<p style="color:brown"> Correteábamos en la playa con un cubito que llenábamos de agua del mar para hacer nuestros castillos más fuertes, mientras que otros en otras zonas de la península....</p>
</body>
Sin duda alguna, esta es la mejor forma de enmaquetar una paǵina Web. Tener un directorio en nuestro proyecto llamado css/ al que añadir todas nuestras hojas de estilo personalizadas sin tener que buscar dentro de 1000 líneas de css.
Para incluirna en nuestra Web, bastará con añadir la siguiente etiqueta en <head></head>
<!DOCTYPE html>
<html>
<head>
<title>Mi primera página Web</title>
<meta author="Álvaro Castillo">
<meta keywords="web, html5, css">
<link rel="stylesheet" href="css/example.css">
</head>
<body>
<h1>Cuando éramos jóvenes</h1>
<p> Correteábamos en la playa con un cubito que llenábamos de agua del mar para hacer nuestros castillos más fuertes, mientras que otros en otras zonas de la península....</p>
</body>
example.css
body {
background-color: yellow;
font-size: 20px;
}
p {
font-family: Sans;
color: cyan;
}
El resultado:
* Fondo en todo el body de color amarillo.
* Tamaño fuente general para todos los elementos de la página a tamaño 20
* Tipo de familia de la tipografía que utilizarán los párrafos es Sans.
* Color de las letras de todos los párrafos utilizará el color Azul Cian.
Las fuentes son muy importantes para el diseño de nuestro proyecto. No solo porque le otorgamos un cierto caracter y estilo, sino porque también ayudaremos al lector a poder comprenderlo y sobre todo qué sencación de seguridad podemos darle. Recordemos que las fuentes influyen en el punto de vista del lector que pueden determinar insconcientemente algunos sentimientos como bien se recoge en algunos artículos de la psicología de la tipografía.
Cuando queremos modificar el tamaño de las fuentes de nuestro documento, nos encontramos con una propiedad clave como font-size. Esta nos permite asignar un valor que se puede declarar como %, unidades de longitud, una cadena como valor y/o em.
Los porcentajes tienden muchas veces a fallarnos y a no comportarse como uno quiere ya que los navegadores no los interpretan igual, mencionar que está disponible para utilizarse pero que no son recomendados.
Por otro lado, tenemos diferentes medidas de longitud como los píxeles (px), centímetros (cm)...
Una medida interesante es el em, es un tamaño relativo de fuente. Si utilizamos 2 ems quiere decir que equivale 2 veces el tamaño de la fuente actual. Suele utilizarse mucho en diseños "responsive"
medium, xx-small, small, large, x-large, xx-large, initial, inherit...: Son valores no numéricos que predefinen el tamaño de una fuente.
Éstas contienen un código hexadecimal que ya interpreta el navegador directamente a pesar de ser un código hexadecimal encubierto no requiere más que utilizar la palabra clave para su uso.
* cyan: Azul Cian
* pink: Rosa
* yellow: Amarillo
* brown: Marrón
* blue: Azul
Y así un sin fin más, podemos ver una lista completa a través de la página de la w3.
Red Green Blue es un modelo de color que trabaja con los colores primarios, y que a su vez, la mezcla de estos generan diferentes colores aplicando una intensidad de color diferente en cada uno de estos 3 colores. Este modo de color pueden llegar a crear 16.7 millones de colores solo haciendo uso de estos 3 colores.
Para poder darle un valor, se utiliza numeración decimal que va desde el 255 (saturación máxima de colores) hasta el 0 (ausencia total de color), o bien, mediante representación hexadecimal completa o abreviada.
Color
Valor decimal
Valor hexadecimal
Hexadecimal abreviado
Rojo
255 0 0
##FF0000
#FF0
Verde
0 255 0
##00FF00
#0F0
Azul
0 0 255
##0000FF
#00F
NOTA: En el artículo anterior, explicamos como pasar de decimal a hexadecimal o viceversa. La representación abreviada del hexadecimal, solo puede hacerse si coinciden las 3 primeras cifras de cada color. F= Rojo, F=Verde, F=Azul
HSL o Hue, Saturation, Lightness es un modo de color basado en matriz, saturación y luminosidad. La matriz comprende un valor entre 0 y/o 360 refiriéndose a los grados en los que rotará en el espectro de colores. Mientras que la saturación y el brillo tiene una relación en porcentajes comprendidos entre 0 y 100.
El canal alfa se añadió en CSS3 como una mejora para añadir cierto efecto a las fuentes añdiendo un grado de transparencia tanto para el modo de color RGB como para el HSL, eso sí, no podemos declararlo en valores hexadecimales.
Aquí dejamos una lista con algunas propiedades y sus valores para trabajar con el texto:
font-size: px|%|small,large...: Permite establecer el tamaño de la fuente mediante:
Unidad de longitud (px, cm, em...)
Porcentaje
Palabras clave como medium, small, large...
font-family; a,b,c,d...: Permite definir que tipografía utilizar, y sobre todo, en caso de que no la tenga el sistema o no se descargue bien de un CDN, mostrar la siguiente fuente especificada.
font-style; normal|italic|oblique: Muestra como se verá la fuente:
normal: Formato limpio
italic: Tipo itálica, en HTML sería lo equivalente a -> <em></em>
oblique: Parecido a itálica, pero con otro estilo
font-weight: normal|bold: Permite añadir negrita o no
color: valor:: Establece un valor para la fuente:
RGB => Hexadecimal: #000000
RGB => Hexadecimal abreviado: #000
RGB => Decimal: rgb(rrr,ggg,bbb)
RGB => Decimal con canal alfa: rgba(rrr,ggg,bbb,A)
HSL => hsl(grados,%,%)
HSL => Con canal alfa: hsla(grados,%,%,A)
background-color:: Establece un subrayado en la fuente parecido al que utilizamos para recalcar lo importante en los libros, se pueden declarar los mimos valores de la propiedad color.
En las siguientes entregas hablaremos sobre la teoría de las cajas, modificar vistas en relación a la resolución de pantalla, jugar con los selectores y frameworks más utilizados.
HTML proviene de las siglas en inglés HyperText Markup Language, traducido al español "Lenguaje de etiquetas de Hipertexto". Es un lenguaje (no de programación) interpretado que principalmente se caracteriza por el uso de unas "etiquetas". Estas permiten generar y organizador una serie de elementos que se representarán dentro de una página Web.
El código que se escribe será interpretado por un navegador Web como es el caso de Google Chrome, Mozilla Firefox, Opera, Microsoft Edge. Estos exploradores leerán lo que se ha escrito, lo interpretará y lo representará dentro de nuestro documento Web en cuestión de milisegundos.
El 95% de las etiquetas empiezan siempre empiezan y acaban con elemento que queramos representar en el documento Web.
<h1>Ejemplo de encabezado</h1>, esto representará un encabezado con un tamaño de fuente superior al resto de encabezados y con un sombreado añadido.
Sin embargo, existen etiquetas que contienen el nombre del elemento junto con una serie de atributos pero sin mencionar el nombre del elemento en el cierre.
<input type="button">, esta etiqueta por ejemplo generará un tipo de elemento de información de entrada en modo botón.
Existen una serie de atributos globales estandarizados para los elementos de nuestro documento que nos permiten definir eventos como cuando pulsemos un clic que haga una determinada acción (esto es en relación con JavaScript que veremos más adelante), identificación de un elemento como único como es el caso del atributo id... podemos encontrar una lista de estos atributos aquí
Por otro lado, también existen tributos sin valor como podemos destacar placeholder, controls... de los cuáles hablaremos de ellos más tarde.
<!DOCTYPE html>
Nos permite definir que lenguaje de etiquetas debe interpretar el navegador. En este caso comunicamos al explorador que debe interpetar la versión 5 de HTML.
<html></html>
Constituye el comienzo y final del documento, si el contenido junto con los elementos se encuentran fuera de estas etiquetas, nos arriesgamos a que los navegadores no logren interpretarlo.
Nota: El atributo lang="" permite definir el idioma del documento, si es español deberá llevar como valor "es", si es Francés, "fr" y viceversa. Más información en la página de la w3
<head></head>
Permite definir una cabecera en nuestro documento en el cual, le otorgamos cierta información descriptiva al mismo con el uso de las siguientes etiquetas:
<title></title>: Define el título del documento, este lo veremos representado en el título de la pestaña y de la ventana del explorador Web.
Las etiquetas <meta>
Estas permiten definir la información tanto del autor como palabras clave, descripción, codificación...
<meta author="Nombre del autor"><meta keywords="Palabras, clave``<meta description="Descripción del documento"><meta charset="utf-8">
Etiquetas opcionales
<link>: Es una etiqueta muy utilizada cuando se quiere vincular una hoja de estilos elaborada con CSS3. Las hojas de estilos permiten añadir determinados diseños personalizados para cada elemento de nuestro documento Web. Tienen una sintaxis propia que explicaremos más adelante.
<body>
La etiqueta <body></body> permite definir el cuerpo de nuestro documento Web. Aquí añdiremos todos los elementos con los que el usuario interactuará como es el caso de los párrafos, imágenes, videos, enlaces...etc
<footer></footer>
Este elemento es el último dentro del documento Web que estemos redactando, permite añadir un pie de página al documento con la información que nosotr@s estimemos oportuna.
Los comentarios nos permiten puntualizar determinadas partes del código para explicar que sirve, anotar cómo hemos llegado hasta ahí o simplemente salvarnos de una metedura de pata. Muchas personas no hacen uso de los comentarios arriesgandose sobre todo en un proyecto en el que hay más personas involucradas frene productivamente su desarrollo.
Para comentar simplemente tendremos que utilizar estos caracteres <!-- para la apertura y --> para el cierre.
Todos los elementos poseen una serie de atributos por defecto sobre su estilo que pueden modificarse aplicando una serie palabras clave que se basan en un lenguaje de estilos llamado CSS que veremos en los siguientes posts.
Con él, podemos definir un fondo de pantalla mucho más vistoso, modificar el tamaño y familia de la tipografía que queremos utilizar, modificar la posición de los elementos...
Para poder modificar los estilos se pueden hacer de 3 maneras.
* Etiqueta
* Añadiendo la etiqueta <style></style> dentro del elemento <head></head>
* Atributo de un elemento
* <div style="background-color:black"></div>
* Hoja referenciada
* Adjuntando en <head></head> un enlace a una hoja de estilos de la siguiente manera:
<link rel="stylesheet" href="ruta_absoluta_o_relativa_de_la_hoja_de_estilos.css">
La norma de un buen desarrollador es, nunca mezclarás. Con esto queremos decir, que debemos escoger siempre la 3 opción ya que es más legible para los demás y para uno mismo, ya que si no funciona determinado estilo y tenemos todos ellos desperdigados por los elementos, nos volveríamos loc@s para encontrarlos.
Los encabezados nos permiten pre-formatear un texto con un sombreado y un tamaño específico. Nos permiten describir el contenido que vamos a comentar. Un ejemplo sencillo son los titulares de un periódico.
Cuando queremos representar un contenido debidamente estructurado y organizado no lo podemos representar solamente con etiquetas que den formato al contenido. Necesitaremos unas etiquetas que nos permitan representar el contenido como queramos.
Para esto se inventaron los div's. La palabra proviene del inglés "division" o lo que es lo mismo, un contenedor que divide la página en secciones. Estas secciones son muy útiles para agrupar elementos en un documento HTML.
Con la llegada de HTML5 los divs cobran un significado semántico y ahora tenemos las siguientes etiquetas:
* <header></header>: Dónde especificamos qué añadir en la cabecera de la página, el equivalente en el viejo estándar es <div class="header"></div>{.right}
* <nav></nav>: Utilizado para generar una barra de navegación, en el viejo estándar sería <div class="menu"></div>
<section></section>: Representa una sección general dentro de un documento. Antes se hacía uso de <div class="content"></div>
<article></article>: Se utiliza para representar un artículo, que si se anidan, quiere decir que todos los artículos estarán relacionados con el artículo padre. Antes se utilizaba, <div class="article"></div>
<aside></aside>: Se considera un elemento independiente del contenido ya que se suele utilizar para elaborar barras laterales, elementos publicitarios...
<footer></footer>: Añadimos un pie de págin al documento. <div id="footer"></div>
Se puede añadir ciertos matices al contenido mediante las siguientes etiquetas:
* <em>: Permite mostrar el texto en cursiva
* <strong>: Añade un énfasis en negrita
* <u></u>: Subrayado de texto
* <strike></strike>: Tacha el texto
* <sup></sup>: Crear un texto con formato de exponente
* <sub></sub>: Crea un texto con formato de texto más bajo y más pequeño.
Si queremos añadir un espacio entre elementos, se puede llevar a cabo haciendo uso de <br>. También podemos añadirlo dentro de un párrafo y dividirlo sin afectar la posición completa del mismo con respecto al resto de elementos.
<p>Esto es un ejemplo de un párrafo que dividiremos en dos. <br>
Se visualizará un salto de línea dentro de este párrafo</p>
En HTML tenemos a disposición 2 tipos de listas, una lista ordenada con la que tendremos ítems organizados por números y por otro lado, una lista sin ordenar con otros tipos de símbolos para representar a los ítems de la lista.
Los vínculos permiten conectar una página con otra, pueden utilizarse rutas relativas o absolutas siempre y cuando el fichero exista.
<a href="https://www.echemosunbitstazo.es">Echemos un bitstazo</a>
<a> proviene del inglés "anchor" que en español quiere decir "ancla".
Hay un atributo que es bastante útil y muy utilizado para definir el comportamiento del enlace. Este atributo recibe el nombre de target. Es muy útil sobre todo para los visitantes que quieran consultar una información enlazada en el documento sin tener que perderlo de vista.
Para abrir el enlace en una nueva ventana, se hace uso del atributo target="_blank". Tambien tenemos los valores:
* _self: Acción por defecto, se abre la página en la misma página
* _parent: Se abre el documento a cuerpo completo en una ventana
* framename: Se abre el documento en un frame
Para añadir imágenes tipo .jpeg, .png, .jpg, .gif... tenemos que utilizar la etiqueta <img src="ubicación.img" />. El valor que recibirá el atributo SRC es la URL de la imagen que puede añadirse desde una rula relativa o absoluta.
Hay un atributo específico que se utiliza para aquellas personas que tengan dificultades en la visión o no puedan ver directamente, existen "lectores de pantalla" que leen el texto generando un audio para que puedan escuchar cuál es el contenido del documento.
No la lee, básicamente toma el valor del atributo, que en este caso suele ser una descripción y se lo comunica a la persona que accedió al documento.
<img src="ubicación.img" alt="Paseo de Gracia"/>
En caso de que falle la carga de la imagen, también podemos leer la descripción, o si situamos el cursor encima de ella.
Por otro lado permite mejorar el SEO (Search Engine Optimization) ya que los motores de búsqueda como Google no pueden indexar las imágenes, no las lee directamente y utilizan este atributo para tener una descripción y así posicionar mejor tu sitio.
Antaño, para añadir un video al sitio Web, necesitamos tener un reproductor que estaba elaborado en Adobe Flash Player y rezar porque funcionase. Sin embargo, con el tiempo, esto se ha solucionado implementando la etiqueta <video></video>
Esta etiqueta requiere del atributo src que apunte a la fuente del video. Se puede forzar la resolución del video utilizando los atributos:
* width: Para el ancho en píxeles
* height: Para la altura también en píxeles
Para especificar el MIME-type del video, se utiliza el atributo type="x/y".
type="video/mp4". Un MIME-type es básicamente informar al documento del tipo de contenido que se quiere mostrar. Aquí tienes una lista con multitud de tipos
Por último el atributo controls que no posee un valor alguno, permite mostrar los controles del reproductor.
Está muy bien añadir como contenido dentro de la etiqueta video (que como hemos visto queda vacía) un texto que comente "Video no soportado", para que aquella persona que espere a ver el video comprenda que su navegador no lo soporta.
Exactamente se añade igual como el video solo que cambia la etiqueta <video> por <audio> y que por obligación, hay que especificar el atributo controls, si no, no funcionará a pesar de haberlo encontrado en su ruta.
Se puede añadir un espacio en las columnas cuando no hay contenido que representar mediante el atributo colspan="x" en un <td> ó <th>, donde X es un número entero.
No obstante, también podemos hacerlo en las filas con el atributo rowspan="y", dónde y es un valor entero.
En HTML se nos permite generar formularios para recoger datos.
NOTA: No mostraremos en esta misma página los inputs, porque dan lugar conflictos con estilo y JS, sin embargo, hemos añadido el mismo código con la descripción en el servicio "JSFiddle" que puedes acceder desde aquí. Solo hay que pulsar en RUN y en la parte inferior derecha aparecerá una pequeña ventana con el código resultante.
<form></form>: Creamos los formularios y los cerramos de la siguiente forma. Esta etiqueta posee una serie de atributos muy especiales como es method="" y action="".
* method="": Especificamos el encabezado HTTP que queramos utilizar, existen 5, pero comentaremos los 3 más utilizados:
* GET: Los datos que se envían se pueden ver a través del campo URL del explorador. Se suele utilizar para obtener información de un servidor de un recurso específico.
* POST: Los datos se envían como si fuera un modelo de caja negra, no se ven. Este método se suele utilizar para enviar información al servidor y que este sea recepcionado por un lenguaje o sistema de fondo.
* PUT: Muy común para subir archivos.
action="": Define a qué ruta enviar la información, si hay un fichero que lo trata del lado del servidor elaborado con PHP, Ruby on Rails.. o que sea procesado con JS mediante un AJAX... mil posibilidades.
Esta etiqueta se utiliza para asociar un control de un formulario y se vincula con un input, este provee de una breve descripción. Este hace uso de un atributo llamado for cuyo valor es el id del input.
Un formulario no es un formulario solo por tener una etiqueta que lo defina, si no tenemos una serie de elementos que nos permitan interactuar con la persona que se encuentra detrás de la pantalla, poco podemos hacer con él.
Los siguientes elementos nos permiten recoger información escrita por el usuario.
Permite recoger texto en una sola línea. <input type="text">
Recuadro ajustable de texto en el que se puede visualizar lo escrito en múltiples líneas. <textarea></textarea>
Campo tipo input que tiene una validación que no permite al usuario enviar la información si no inserta una dirección mail válida. <input type="email">
Elemento del formulario que permite verificar si la URL introducida es correcta, sin embargo, en aquellos navegadores que no soporten este campo se tornará en un input tipo texto. <input type="url">
Campo tipo text con opciones adicionales como un icono con el que se puede eliminar lo previamente escrito además de soportar (según el navegador) un pequeño historial de búsqueda realizada. <input type="search">
Elemento del formulario en un navegador de escritorio no se aprecia la diferencia, pero si utilizamos un smartphone o un dispositivo móvil. A la hora de escribir, el teclado se alternará mostrando únicamente el "dial pad". <input type="tel">
Los siguientes elementos a nuestra disposición para seguir recolectando datos de usuario:
Representa una casilla para marcar múltiples opciones, muy útil para representar las famosas casillas de "Acepto..." o múltiples subscripciones. <input type="checkbox">
Opción única dentro de un conjunto de opciones múltiples. <input type="radio">
Permite seleccionar un valor representado en una barra y que devuelve un número entero. <input type="range">
Los select son inputs que agrupan opciones que se muestran a través de una lista desplegable cuando se quiere escoger una opción.
Su sintaxis es:
<select>
<option></option>
</select>
Una de las diferencias importantes del select es que el atributo value no se asigna en <select></select>, si no que se asigna en cada una de las opciones.
También se puede definir una opción por defecto utilizando un atributo sin valor llamado default.
Para poder enviar los datos del formulario necesitaremos un input que actúe de botón y los pueda enviar. También se pueden utilizar otros elementos y hacer el envío mediante JS, pero eso se verá en otros posts.
<input type="submit"> Enviando datos:
Se puede modificar el mensaje de "Submit" utilizando el atributo value: <input type="submit" value="Enviar">
Podemos añadir ciertos atributos que nos pueden ser útiles a la hora de verificar que el usuario realmente va a enviar información y no la envía vacia, también podemos añadir una pequeña descripción dentro del input para que el usuario se percate que tipear. Algunos de estos atributos son característicos porque no es necesario que se le asigne un valor.
Evitar que el usuario envíe información vacía required.
Añadir una descripción placeholder="Descripción"
Deshabilitar la edición del input readonly
Deshabilitar un input disabled
Especificar tamañado del input size=X
Definir el límite de caracteres permitido maxlength=X
Establecer el primer input al que introducir información autofocus
Establecer valores máximos y mínimos max=X y min=Y
Bienvenido a mi primera entrega de PHP, en esta entrega podrás conocer los conceptos básicos para saber qué es PHP y cómo trabaja. También verás ejemplos de un código PHP programado para una Web y también ejecutado directamente en una consola PHP en tu sistema operativo.
PHP viene de las siglas un tanto recursivas en inglés PHP: Hypertext Preprocessor.Es uno de los lenguajes de programación de código abierto más populares que existen en el desarrollo de páginas Web cuyo contenido sea dinámico como puede ser un blog como es el caso de Wordpress; una herramienta de administración de monitorización como puede ser Nconf... por lo que los desarrolladores lo conocerán como un lenguaje que se ejecuta en el lado del servidor y no en el lado del cliente como es el caso de Javascript.
Además de poder trabajar con él generando páginas Web cuyo contenido sea dinámico, también se pueden crear scripts y rutinas conjuntamente con el sistema operativo, ya que posee una consola con la que poder interactuar con él.
Esto permite a PHP ser un lenguaje versátil con el que puedes programar procesos o rutinas que se ejecuten en el sistema mediante metodología de scripting, o bien, programar procesos que trabajen con un servidor Web, un sistema gestor de base de datos... que puedan generar contenido dinámico.
A nivel de sistema operativo, cuando tienes una consola, los comandos que se ejecuten en ella, directamente se ejecutará y devolverá un resultado. Esto es válido también para el desarrollo de scripts junto con el sistema operativo. Se pueden crear rutinas y ejecutar código bash a través de una shell de PHP.
Sin embargo, también se puede ejecutar código PHP y que inserte el resultado en una página web con contenido HTML siempre y cuando su extensión sea .php. Además, se puede controlar qué código HTML dependiendo de un resultado como por ejemplo, que quieres que se muestre si estás logueado o no, o si incorporas un sistema con mecanismos de control.
Aquí tienes una explicación simple del funcionamiento de un servidor Web con PHP.
Para trabajar con un servidor Web como NGINX, Apache, Lighthttpd, Cherokee... habrá que respetar la extensión .php en tus archivos. y añadir una etiqueta de apertura para que el servidor interpete el código PHP como código PHP y no código HTML.
Por ejemplo:
/var/www/html/index.php en un servidor X existe el siguiente código:
<?php
echo "Hello World!" # Contenido de ejemplo que muestra la frase Hello world
?>
Si el servidor Web y el PHP están correctamente instalados, devolverá el siguiente mensaje:
Hello world!
Automáticamente, se traduce en HTML como un párrafo <p>Hello world!</p>
Se puede mezclar código HTML y PHP siempre y cuando tenga la extensión .php tu archivo:
Hace unos días acabé una pequeña herramienta Web llamada Share Your Doc, que permite compartir código fuente, mensajes, scripts...etc via Web como si fuese un típico servicio de Pastebin, Fpaste como seguramente conocerás.
Sin embargo, lo bueno que tiene este, es que trabaja conjuntamente con el sistema operativo, no requiere de ningún método para validarse de usuarios, ni tampoco hace uso de conexiones FTP. Simplemente, añades tu código, creas el token y a correr.
Es una herramienta pensada para trabajos de grupo con desarrolladores, administradores de sistemas... aunque puedes darle el uso que quieras. Lo único que necesitas para tenerla instalada, es tener PHP, un servidor Apache, y si acaso, tocar algún que otro permiso en Linux.
Para obtenerla solo te tendrás que clonar el repositorio alojado tanto en Github como en Gitlab.
Buenas tardes compañer@s, siento no poder llegar a los plazos de las entregas, pero tenemos un ritmo frenético de trabajo, no obstante, tenemos muchas ideas para entregar y sobre todo queremos acabar nuestro Mastering en Bash para/con vosotr@s.
Hemos ideado un script llamado ¡Twister!, ¡Sí!, porque mezclar frameworks es divertido e incrementa las funcionalidades de nuestros sitios Web por menos tiempo!
Twister nos permite crear nuestros proyectos basados en frameworks conocidos del lado del "front-end". Para quiénes no lo sepan, cuando se elabora un desarrollo Web, suelen haber (no siempre) diversos compañer@s que se encargan de diversas capas del proyecto.
* Desarrolladores front-end, son aquellas personas que se dedican a elaborar el diseño de la página Web como la plantilla, las ventanas de diálogo, efectos...
* Programadores back-end, encargad@s de elaborar todo el contenido que será procesado por servidores, como consultas a sistemas gestores de bases de datos...etc
* Redactores de documentación, se encargan de elaborar los manuales de usuari@, de continuación de desarrollo...
Ahora bien, ¿Qué es un framework? Un framework o bifurcación en español, es una extensión de un software, aplicación...etc que ya existe, y potenciarlo bajo otro nombre. Ya sea porque el software que está es viejo, ya no se mantiene, y se pretende darle otro aire; por motivos prácticos como pasó cuando Oracle paró el desarrollo de OpenOffice y así nació LibreOffice; enriquecimiento personal...
Sin embargo, en los desarrollos Web es común ver como hay una multitud de frameworks que permiten facilitarnos la vida a tod@s aquell@s que diseñan o elaboran un sitio Web. Ya que, una persona o un conjunto de personas han elaborado otra forma de hacer las cosas, y que, si lo hiciésemos nosotr@s desde 0 tardaríamos meses de trabajo tedioso como es la traducción de mensajes a otros idiomas de cada diálogo que elaboremos, un sistema de login de usuari@s...
Ahora bien, este script permite descargar y crear entorno de trabajo con algunos frameworks más utilizados como es el caso de jQuery, un framework de JavaScript que lleva vigente desde el 26 de agosto del 2006 con el propósito de facilitar la gestión de eventos, efectos y muchas cosas con las que tardaríamos la vida si lo hiciéramos con JavaScript puro.
Bootstrap liderado por Twitter desde agosto de 2011 que consiste en un conjunto de código CSS (hojas de estilo) y JS (JavaScript) apoyado en jQuery que permite obtener una interfaz profesional con poco código utilizado.
Y por último, VUE.js, elaborado en febrero de 2014 por Evan , un desarrollador de Google contribuyó mucho en un framework de JavaScript muy conocido como es AngularJS. Este extrajo algunas partes que consideraba buenas y creó otro frameworkpara desarrollar y facilitar así la programación de eventos, interfaz... así como crear una aplicación Web del lado del cliente. (En otros post explicaremos todo con más detalle).
Más adelante, iremos actualizando el script añadiendo mejoras como, instalar frameworks que se ejecuten en el lado del servidor (backend); menú gráfico; más frameworks interesantes...etc
El Script está elaborado en Bash, licenciado bajo los términos GNU GPL 2.0, y se puede obtener desde GitLab
Vivaldi es un navegador gratuito desarrollado por la empresa Vivaldi Technologies, cuya compañía fue fundada por el cofundador y ex-CEO de Opera Jon Stephenson von Tetzchner, y Tatsuki Tomita quiénes quedaron bastante descontentos por varias decisiones que tomó la empresa Opera Software hace bastante tiempo como el cierre del portal comunitario My Opera y dejando atrás las opiniones de las personas que ayudaban a su desarrollo y mejora.
categories: ["Administración de sistemas", "Desarrollo Web"]
Vivaldi es un navegador gratuito desarrollado por la empresa Vivaldi Technologies, cuya compañía fue fundada por el cofundador y ex-CEO de Opera Jon Stephenson von Tetzchner, y Tatsuki Tomita quiénes quedaron bastante descontentos por varias decisiones que tomó la empresa Opera Software hace bastante tiempo como el cierre del portal comunitario My Opera y dejando atrás las opiniones de las personas que ayudaban a su desarrollo y mejora.
Vivaldi es muy poco conocido pero que daría mucho del qué hablar. Tiene una apariencia parecida a Opera y contiene multitud de características y ventajas por doquier.
Actualmente dispone de paquete estables x86/x86_64 tanto para sistemas que usen paquetería .deb como .rpm. También hay un paquete considerado inestable enfocado a ARM 32 y solo disponible en formato .deb.
Por otro lado soporta Windows y Mac.
Vivaldi es capaz de consumir una cuarta parte de lo que consumiría Google Chrome o Firefox a pesar de tener multitud de pestañas abiertas, con lo que podemos navegar de una forma fluida y trabajar con nuestro equipo sin tener que estar prescindiendo de determinados programas, páginas con contenido interactivo...etc
Si no puedes vivir sin las extensiones de Google Chrome con Vivaldi podrás tenerlas sin ningún problema y sin tener que instalar complementos o extensiones adicionales. Con tan solo acceder a la página Chrome Store podrás instalar cualquier extensión sin problemas.
Utiliza Blink para interpretar todos los elementos del diseño y el contenido Web a una velocidad de vértigo. Por defecto es el motor de renderizado que utiliza Google Chrome y Opera Software.
Se pueden utilizar gestos para abrir páginas Web, pestañas, cerrarlas y configurar tus propios gestos para que se apliquen determinadas configuraciones, con lo que más de alguna ocasión agradecerás poder cerrar una simple ventana haciendo un dibujo con el ratón, o con el dedo en caso de ser pantalla táctil.
El navegador incluye un botón con el que capturas la página y te permite seleccionar un determinado área, o la página completa y guardarla en formato .png, .jpg o copiarla directamente al portapapeles. Esto nos evita tener que utilizar herramientas externas cada vez que queramos compartir alguna información interesante o dibujos que no puedan escribirse.
Con esto nos olvidamos de consumir tanto ancho de banda y espacio en disco ya que al desactivarlo no se ejecutan. Es muy interesante ya que también reduce el costo de CPU y de memoria al no reproducirse.
Dispone de una lista enorme de efectos que se pueden aplicar a la página como filtros para alterar los colores como blanco y negro, escala de grises, inversión del color, intensificar...
También tiene otras características como depurador de CSS, suprimir o forzar efectos de transiciones, utilizar tipografía "Monospace"...
Vivaldi incluye un editor mínimo de colores de la apariencia del navegador, además de poder incorporar un fondo determinado. Pero eso no es todo, ¡también puede editarse a nivel de CSS y personalizarle a tu antojo!
Incorpora un pequeño editor de notas para tomar apuntes de cualquier tipo, capturas, archivos adjuntos, e incluso posee un visor de Markdown, que además es de fácil acceso ya que se abre en el panel lateral izquierdo y permite tomar las notas de una forma fácil y rápida.
Un pequeño mural que permite ver las últimas páginas visitadas o también existe la posibilidad de añadir páginas como las que tenemos en favoritos. No obstante, se pueden tener varios "Speed dial" para determinadas páginas y ponerles un nombre. Nos evita tener que ir buscando en la típica barra de marcadores página por página.
Se pueden desplazar las barras de pestañas a cualquier lateral del navegador, arriba, abajo, izquierda, derecha. Así podemos aumentar nuestra productividad.
¡Incluye un gestor de tareas! Con el puedes ver cuánto está consumiendo cada página en relación CPU y M.RAM y cerrarlas cuando ¡quieras! Nos olvidamos de aquellas páginas o aplicaciones Web que no paran de consumir y que muchas veces, o al menos en Chrome, se quedan colgadas sin respuesta teniendo que reiniciar la conexión.
Si estás navegando, y quieres dedicarte a mirar otras Webs pero sin tener que perder las páginas que visitas, entonces, puedes almacenar la sesión y volver abrirla cuando te plazca.
No solo podrás ver las páginas que has visitado ordenadas por día, mes y/o año sino que también el ancho de banda que consumiste representado en una gráfica.
También se pueden buscar páginas web o abrir páginas de marcadores utilizando la tecla F2. Este botón accionará una ventana en el centro de la pantalla del navegador esperando a que le introduzcas lo que quieres buscar.
Se pueden modificar las opciones mediante via URL y también visualizar registros, llevar a cabo pruebas y depuraciones con según que cosas:
* vivaldi://settings -> Gestiona la configuración del navegador
* vivaldi://bookmarks -> Gestión de marcadores
* vivaldi://downloads -> Descargas vivaldi://accessibility -> Opciones
de accesibilidad
* vivaldi://net-internals -> Opción muy interesante que engloba todo lo que tiene que ver con la red
* vivaldi://media-internals -> Reproductores de audio y video
* vivaldi://cache -> Lista toda la caché almacenada (URL)
* vivaldi://components -> Componentes adicionales
* vivaldi://appcache-internals -> Caché de aplicaciones Web utilizadas
* vivaldi://indexeddb-internals -> Apps, extensiones... que hacen uso de IndexedDB
* vivaldi://omnibox -> Permite buscar en el historial parámetros que hayan sido utilizados por las URLs tipo name,user...
* vivaldi://user-actions -> Depura las acciones del usuario nada más empezar, cambiar de pestaña, abirir ventanas...etc
* vivaldi://password-manager-internals -> En teoría son logs de contraseñas almacenadas
* vivaldi://quota-internals -> Datos utilizados
* vivaldi://webrtc-internals -> Depuración de uso del protocolo WebRTC
* vivaldi://terms -> Licencia
* vivaldi://sandbox -> Estado de caja de arena (aislar un contenido Web)
* vivaldi://device-log -> Registro de eventos con dispositivos ¡USB, Bluetooth...!
* vivaldi://flags -> Opciones experimentales o en fase beta
* vivaldi://about -> Información acerca del navegador
* vivaldi://blob-internals -> Información sobre blobs
Vivaldi tiene una comunidad viva y grandísima con muchos posts publicados cada día, el inglés es el idioma por defecto, pero hay subforos con otros idiomas como el nuestro.
Si te haces usuari@ de Vivaldi, automáticamente posees un correo electrónico gratuito sin publicidad. Utilizan la plataforma RoundCube para webmail sin ningún tipo de publicidad añadida.