Bueno vamos a probar Kubernetes en Azure, así de una, sin vueltas, sin caretearla (?).
Para empezar ingresamos al Portal de Azure con nuestras credenciales y en "Inicio" a la izquierda vamos a ver los servicios que nos ofrece Azure para desplegar.
Uno de ellos es "Servicios de Kubernetes", clickeamos ahí:
Luego vamos a crear nuestro primer cluster haciendo click en "Agregar" o "Crear Servicio de Kubernetes":
Elegimos nuestra suscripción, creamos un nuevo grupo de recursos o resource group, elegimos el nombre del cluster y la región. Y mas abajo elegimos el tamaño del nodo y la cantidad, este paso es muy importante, porque al definir el tamaño del nodo básicamente estamos eligiendo las especificaciones técnicas (cpu, memoria, disco) que van a tener las maquinas virtuales que van a formar los nodos del cluster y esto no se podrá cambiar después de crearlo. El numero de nodos si se puede cambiar.
En mi caso elijo la maquina virtual mas barata que es la DS2 v2, que tiene un 2 CPU y 7GB de RAM.
Fijense que a la derecha aparecen los precios de las virtuales (Costo Mensual Estimado):
Mostrando entradas con la etiqueta Programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta Programación. Mostrar todas las entradas
lunes, 1 de junio de 2020
Instalar Kubernetes en Azure
Etiquetas:
Azure,
Debian,
Docker,
Internet,
Kubernetes,
Linux,
Playbook,
Programación,
Redes,
Software,
Tutoriales,
Ubuntu
sábado, 30 de mayo de 2020
Rollback de Deployments y Namespace en Kubernetes
Hola Ardillas, para estos posts largos prefiero ir directamente al asunto y evitar chistes como el del hacker, así que arranquemos.
Para los que no quieren leer todo (aunque lo recomiendo) podríamos dividir el post en 3 grandes títulos que voy a marcarlos en mayúscula, azul y subrayado así TITULO
Los títulos son:
CREAR NAMESPACE
CREAR DEPLOYMENT
ROLLBACK DE UN DEPLOYMENT
Antes de avanzar con el post de rollback de un deployment en si vamos a ver que tengo corriendo actualmente en mi cluster de Kubernetes:
Para ver un listado de lo que tenemos corriendo en el cluster:
kubectl get all
Fijense que diferencia los PODs, de los servicios, de los deployments y las replicas.
Ver detalle de todos los PODs en el namespaces actual:
kubectl get pods -o wide
Ver detalle de todos los PODs en todos los namespaces:
kubectl get pods --all-namespaces
En este caso vemos los mismos ya que tengo solo un namespace (los otros que aparecen son del sistema).
Ver cantidad de replicas:
kubectl get rs
Ver historial de cambios de un deployment:
kubectl rollout history deployment/nombredeldeploy
Para los que no quieren leer todo (aunque lo recomiendo) podríamos dividir el post en 3 grandes títulos que voy a marcarlos en mayúscula, azul y subrayado así TITULO
Los títulos son:
CREAR NAMESPACE
CREAR DEPLOYMENT
ROLLBACK DE UN DEPLOYMENT
Antes de avanzar con el post de rollback de un deployment en si vamos a ver que tengo corriendo actualmente en mi cluster de Kubernetes:
Para ver un listado de lo que tenemos corriendo en el cluster:
kubectl get all
Fijense que diferencia los PODs, de los servicios, de los deployments y las replicas.
Ver detalle de todos los PODs en el namespaces actual:
kubectl get pods -o wide
Ver detalle de todos los PODs en todos los namespaces:
kubectl get pods --all-namespaces
En este caso vemos los mismos ya que tengo solo un namespace (los otros que aparecen son del sistema).
Ver cantidad de replicas:
kubectl get rs
Ver historial de cambios de un deployment:
kubectl rollout history deployment/nombredeldeploy
Etiquetas:
Debian,
Docker,
Internet,
Kubernetes,
Linux,
Playbook,
Programación,
Redes,
Software,
Tutoriales,
Ubuntu
viernes, 29 de mayo de 2020
Javascript PROMISES en 10 minutos
Hola mis ardillas! ¿como van?
La verdad es que a raíz de la impresionante recepción que tuvo el posteo anterior relacionado con la programación ¬¬, me pareció que sería una excelente idea dejarles otro video de Javascript.
Si, para los miles que me preguntaron, ya hablé con nathaner.io y le comente lo que había subido pero ya estaba al tanto, porque es un gran fan de este blog. Realmente se mostró muy entusiasmado, algo así:
No se si tanto en realidad ¬¬
Bueno, vamos al asunto.
En este video se explican las Promises (promesas) agregadas en ES6 (ECMAScript 6) de Javascript, se aborda la función ejecutor y se aprende a resolver o rechazar una promesa.
También explica como obtener los valores de la resolución de la Promise mediante el uso de then, o como capturar el motivo del rechazo de la Promise mediante el uso del catch.
Finalmente se revisa el método finally que les permitirá ejecutar algún código luego de que la Promise o bien se resolvió correctamente o fue rechazada.
Todo en 10 minutos, ¿que haces en 10 minutos? No me contestes.
Basta de promesas ¬¬
Les dejo el vídeo para que disfruten:
Tremendo. Emocionante (?).
Por si les interesa la programación les dejo su canal de Youtube: Programando el destino
Eso es todo amigos.
COMPARTÍ, ¿que te cuesta?
Demostrame que los programadores son mejores que los administradores de sistemas.
Hasta la próxima campeón (?)
La verdad es que a raíz de la impresionante recepción que tuvo el posteo anterior relacionado con la programación ¬¬, me pareció que sería una excelente idea dejarles otro video de Javascript.
Si, para los miles que me preguntaron, ya hablé con nathaner.io y le comente lo que había subido pero ya estaba al tanto, porque es un gran fan de este blog. Realmente se mostró muy entusiasmado, algo así:
No se si tanto en realidad ¬¬
Bueno, vamos al asunto.
En este video se explican las Promises (promesas) agregadas en ES6 (ECMAScript 6) de Javascript, se aborda la función ejecutor y se aprende a resolver o rechazar una promesa.
También explica como obtener los valores de la resolución de la Promise mediante el uso de then, o como capturar el motivo del rechazo de la Promise mediante el uso del catch.
Finalmente se revisa el método finally que les permitirá ejecutar algún código luego de que la Promise o bien se resolvió correctamente o fue rechazada.
Todo en 10 minutos, ¿que haces en 10 minutos? No me contestes.
Basta de promesas ¬¬
Les dejo el vídeo para que disfruten:
Tremendo. Emocionante (?).
Por si les interesa la programación les dejo su canal de Youtube: Programando el destino
Eso es todo amigos.
COMPARTÍ, ¿que te cuesta?
Demostrame que los programadores son mejores que los administradores de sistemas.
Hasta la próxima campeón (?)
Etiquetas:
humor,
Programación,
Software,
Tutoriales,
Ubuntu
lunes, 25 de mayo de 2020
Kubernetes para principiantes
Bueno, ya vimos Ansible, ya vimos Docker y ahora vamos con Kubernetes.
No, hoy no te voy a hacer el chiste del hacker, aunque si, me sigue causando gracia.
Hoy vamos al grano, porque es un post largo que creo que les va a resultar útil.
Kubernetes (K8s) es un proyecto open source que nació en Google y sirve para orquestar contenedores (Docker), aunque no nos permite crear imágenes, ni subirlas al registry, solo sirve para gestionarlos. Es un buen complemento, sino el ideal, de Docker (motor de contenedores) para los entornos de producción grandes en donde Docker solo, no puede escalar.
Distribuye de la mejor forma posible la carga de todos los NODOS.
POD: La unidad mas chica en Kubernetes es un POD, que agrupa dentro suyo diferentes contenedores (en general uno solo) que tienen un componente (kubelet) "que le avisa" al NODO MASTER si la aplicación se encuentra o no corriendo. Y si no esta corriendo entonces Kubernetes levanta una nueva para mantener la cantidad de replicas que configuramos para que se encuentren corriendo. Estas instancias se levantan en base a una imagen, como los containers de Docker.
Los PODs por definición son stateless, y Kubernetes los crea o destruye de manera constante en función de las necesidades. Si los PODs deben tener datos persistentes, deben utilizarse volúmenes.
Los containers levantados en el mismo POD comparten el stack de red y pueden hablar entre si, así como también pueden compartir un volumen y acceder a la misma información. Cada POD tiene su propia direccion IP.
La desventaja de que los containers dentro del POD compartan el stack de red es que no podes tener 2 containers adentro del mismo POD escuchando en el mismo puerto, porque al tener la misma red hay colisión de puertos, pero esto se resuelve poniendo esos 2 containers en PODs diferentes.
NODO: Un NODO conjunto de PODs.
NODO MASTER: Se encargan de coordinar el clúster. Tiene que haber mínimo uno por cluster. Generalmente no ejecutan contenedores, sino que deciden en qué nodo se ejecuta cada contenedor. Usualmente son 3 nodos para alta disponibilidad. Esto es debido a etcd, que guarda el estado global del clúster y su información es crítica. Si hay 3 nodos de etcd y se pierde uno, el sistema puede seguir funcionando, ya que los dos nodos restantes pueden seguir verificándose el uno al otro. Pero ya no se puede perder ningún otro. Por eso, los nodos de etcd se escalan siempre de dos en dos, si hay 3 se puede perder 1, si hay 5 se pueden perder 2 y así sucesivamente.
El NODO MASTER ejecuta los siguientes procesos:
- kube-apiserver que es la forma en la que interactuamos con los otros NODOS del cluster.
- Kubernetes Controller (kube-controller) que compara el estado actual del cluster con el estado que debería tener (chequea por ejemplo si la cantidad de PODs que hay en un NODO es la que debería haber, y sino los levanta).
- Kubernetes Scheduler (kube-scheduler) que es el que se encarga de escuchar al controller y cuando el controller le avisa que le faltan PODs, el scheduler se fija en que NODO pueden estar mejor ubicados y los levanta ahí.
- etcd que es una base de datos que se utiliza para mantener la configuración global del clúster. La información contenida en etcd es crítica y debe tenerse siempre un plan de copias de seguridad.
NODO MINION (WORKERS): Se encargan de la ejecución de los contenedores desplegados en el clúster. Tienen instalado el agente de Kubernetes llamado kubelet (que se encarga de monitorizar que un contenedor se inicie, funcione correctamente y en caso de error, reiniciarlo inmediatamente) y un kube-proxy, que gestiona la red virtual y las IPs virtuales que de cada contenedor.
CLUSTER: Es un conjunto de NODOS.
Entre sus principales funciones se encuentran:
. Permite Escalar
. Permite balanceo de carga
. Reparación automática del contenedor (si falla o muere, el cluster automáticamente levanta uno nuevo)
. Distribución inteligente de la carga de trabajo
. Permite almacenamiento persistente en la nube
. Optimiza nuestros recursos
Para entornos de Workstation se puede usar Minikube .
SERVICES: Los PODs no son visibles más allá de su propio contenedor. Para solucionar esto, existen los services, que son objetos que permiten reenviar tráfico de red a un conjunto de PODs, lo cual nos permite acceder a nuestras aplicaciones. Los services utilizan servidores DNS instalados en la red para registrarse en esta y permitir el acceso por nombres de servicio a sus PODs, facilitando el descubrimiento de los mismos.
VOLUMENES PERSISTENTES: Es una pieza de almacenamiento en el cluster que sirve para guardar los datos de nuestros PODs. Su ciclo de vida es independiente de los PODs individuales.
LABELS/SELECTORS: Los selectors son filtros de las etiquetas. Las labels son muy útiles cuando por ejemplo manejamos 500 contenedores que hacen de webserver y cuya etiqueta es webserver, entonces, si queremos eliminarlos a todos ponemos que borre todo lo que tenga esa etiqueta en lugar de borrar uno por uno.
En Kubernetes, podemos exponer nuestras aplicaciones de varias maneras:
- ClusterIP, es el servicio que se genera de forma predeterminada y nos permite acceder a los servicios dentro del clúster. Este servicio no es accesible desde Internet, para que lo sea necesitaríamos habilitar el acceso a través del proxy de Kubernetes.
- Usando un servicio de tipo Kubernetes NodePort, que expone la aplicación en un puerto a través de cada uno de sus nodos. Sólo un servicio por puerto. No es para ambientes en Producción.
- Usando un servicio de tipo Kubernetes LoadBalancer, que crea un balanceador de carga externo que apunta a un servicio Kubernetes en su clúster.
- Usando un Kubernetes Ingress Controller, que permite un enrutamiento HTTP basado en host o URL. Ingress no es un tipo de servicio como el resto, se trata más de un enrutador que permite la entrada al clúster y gestionar el acceso a múltiples servicios. Hay que tener en cuenta que un Ingress Controller generalmente no elimina la necesidad de un LoadBalancer externo: el Ingress Controller solo agrega una capa adicional de enrutamiento y control detrás del balanceador de carga.
Estos son los patrones básicos para enrutar el tráfico externo a su clúster Kubernetes.
MINIKUBE: Es un proyecto que nos permite probar Kubernetes en una maquina local y utiliza maquinas virtuales de Virtual Box (por defecto). Kubernetes necesita al menos 3 nodos para funcionar, lo cual no siempre es posible en una maquina local. Para eso se creó Minikube, que es una versión reducida de Kubernetes, que corre en una única máquina virtual que hace de maestro y esclavo a la vez.
Ademas de Minikube también necesitara instalar kubectl para poder comunicarse con el servidor Kubernetes.
Kubernetes tiene también una parte Web, con un dashboard que permite monitorizar y gestionar el clúster. Minikube viene instalado con uno por defecto.
DEPLOYMENT: Para mantener los PODs prestando servicio sin interrupción utilizamos los deployments, acá definimos cuantas replicas queremos, como queremos desplegarlos, como queremos escalar y Kubernetes se encarga de mantener el clúster funcionando. Los deployments crean replication controllers que por defecto mantienen el número de réplicas que especificamos en el despliegue, pero nos permitirán cambiar este numero a futuro si así lo deseamos.
Bueno, hasta acá toda la teoría, pero estas aburrido, ¿no?
Queres tocar, queres poner manos a la obra, queres revolcarte en este chiquero (?).
Empecemos:
No, hoy no te voy a hacer el chiste del hacker, aunque si, me sigue causando gracia.
Hoy vamos al grano, porque es un post largo que creo que les va a resultar útil.
Kubernetes (K8s) es un proyecto open source que nació en Google y sirve para orquestar contenedores (Docker), aunque no nos permite crear imágenes, ni subirlas al registry, solo sirve para gestionarlos. Es un buen complemento, sino el ideal, de Docker (motor de contenedores) para los entornos de producción grandes en donde Docker solo, no puede escalar.
Distribuye de la mejor forma posible la carga de todos los NODOS.
POD: La unidad mas chica en Kubernetes es un POD, que agrupa dentro suyo diferentes contenedores (en general uno solo) que tienen un componente (kubelet) "que le avisa" al NODO MASTER si la aplicación se encuentra o no corriendo. Y si no esta corriendo entonces Kubernetes levanta una nueva para mantener la cantidad de replicas que configuramos para que se encuentren corriendo. Estas instancias se levantan en base a una imagen, como los containers de Docker.
Los PODs por definición son stateless, y Kubernetes los crea o destruye de manera constante en función de las necesidades. Si los PODs deben tener datos persistentes, deben utilizarse volúmenes.
Los containers levantados en el mismo POD comparten el stack de red y pueden hablar entre si, así como también pueden compartir un volumen y acceder a la misma información. Cada POD tiene su propia direccion IP.
La desventaja de que los containers dentro del POD compartan el stack de red es que no podes tener 2 containers adentro del mismo POD escuchando en el mismo puerto, porque al tener la misma red hay colisión de puertos, pero esto se resuelve poniendo esos 2 containers en PODs diferentes.
NODO: Un NODO conjunto de PODs.
NODO MASTER: Se encargan de coordinar el clúster. Tiene que haber mínimo uno por cluster. Generalmente no ejecutan contenedores, sino que deciden en qué nodo se ejecuta cada contenedor. Usualmente son 3 nodos para alta disponibilidad. Esto es debido a etcd, que guarda el estado global del clúster y su información es crítica. Si hay 3 nodos de etcd y se pierde uno, el sistema puede seguir funcionando, ya que los dos nodos restantes pueden seguir verificándose el uno al otro. Pero ya no se puede perder ningún otro. Por eso, los nodos de etcd se escalan siempre de dos en dos, si hay 3 se puede perder 1, si hay 5 se pueden perder 2 y así sucesivamente.
El NODO MASTER ejecuta los siguientes procesos:
- kube-apiserver que es la forma en la que interactuamos con los otros NODOS del cluster.
- Kubernetes Controller (kube-controller) que compara el estado actual del cluster con el estado que debería tener (chequea por ejemplo si la cantidad de PODs que hay en un NODO es la que debería haber, y sino los levanta).
- Kubernetes Scheduler (kube-scheduler) que es el que se encarga de escuchar al controller y cuando el controller le avisa que le faltan PODs, el scheduler se fija en que NODO pueden estar mejor ubicados y los levanta ahí.
- etcd que es una base de datos que se utiliza para mantener la configuración global del clúster. La información contenida en etcd es crítica y debe tenerse siempre un plan de copias de seguridad.
NODO MINION (WORKERS): Se encargan de la ejecución de los contenedores desplegados en el clúster. Tienen instalado el agente de Kubernetes llamado kubelet (que se encarga de monitorizar que un contenedor se inicie, funcione correctamente y en caso de error, reiniciarlo inmediatamente) y un kube-proxy, que gestiona la red virtual y las IPs virtuales que de cada contenedor.
CLUSTER: Es un conjunto de NODOS.
Entre sus principales funciones se encuentran:
. Permite Escalar
. Permite balanceo de carga
. Reparación automática del contenedor (si falla o muere, el cluster automáticamente levanta uno nuevo)
. Distribución inteligente de la carga de trabajo
. Permite almacenamiento persistente en la nube
. Optimiza nuestros recursos
Para entornos de Workstation se puede usar Minikube .
SERVICES: Los PODs no son visibles más allá de su propio contenedor. Para solucionar esto, existen los services, que son objetos que permiten reenviar tráfico de red a un conjunto de PODs, lo cual nos permite acceder a nuestras aplicaciones. Los services utilizan servidores DNS instalados en la red para registrarse en esta y permitir el acceso por nombres de servicio a sus PODs, facilitando el descubrimiento de los mismos.
VOLUMENES PERSISTENTES: Es una pieza de almacenamiento en el cluster que sirve para guardar los datos de nuestros PODs. Su ciclo de vida es independiente de los PODs individuales.
LABELS/SELECTORS: Los selectors son filtros de las etiquetas. Las labels son muy útiles cuando por ejemplo manejamos 500 contenedores que hacen de webserver y cuya etiqueta es webserver, entonces, si queremos eliminarlos a todos ponemos que borre todo lo que tenga esa etiqueta en lugar de borrar uno por uno.
En Kubernetes, podemos exponer nuestras aplicaciones de varias maneras:
- ClusterIP, es el servicio que se genera de forma predeterminada y nos permite acceder a los servicios dentro del clúster. Este servicio no es accesible desde Internet, para que lo sea necesitaríamos habilitar el acceso a través del proxy de Kubernetes.
- Usando un servicio de tipo Kubernetes NodePort, que expone la aplicación en un puerto a través de cada uno de sus nodos. Sólo un servicio por puerto. No es para ambientes en Producción.
- Usando un servicio de tipo Kubernetes LoadBalancer, que crea un balanceador de carga externo que apunta a un servicio Kubernetes en su clúster.
- Usando un Kubernetes Ingress Controller, que permite un enrutamiento HTTP basado en host o URL. Ingress no es un tipo de servicio como el resto, se trata más de un enrutador que permite la entrada al clúster y gestionar el acceso a múltiples servicios. Hay que tener en cuenta que un Ingress Controller generalmente no elimina la necesidad de un LoadBalancer externo: el Ingress Controller solo agrega una capa adicional de enrutamiento y control detrás del balanceador de carga.
Estos son los patrones básicos para enrutar el tráfico externo a su clúster Kubernetes.
MINIKUBE: Es un proyecto que nos permite probar Kubernetes en una maquina local y utiliza maquinas virtuales de Virtual Box (por defecto). Kubernetes necesita al menos 3 nodos para funcionar, lo cual no siempre es posible en una maquina local. Para eso se creó Minikube, que es una versión reducida de Kubernetes, que corre en una única máquina virtual que hace de maestro y esclavo a la vez.
Ademas de Minikube también necesitara instalar kubectl para poder comunicarse con el servidor Kubernetes.
Kubernetes tiene también una parte Web, con un dashboard que permite monitorizar y gestionar el clúster. Minikube viene instalado con uno por defecto.
DEPLOYMENT: Para mantener los PODs prestando servicio sin interrupción utilizamos los deployments, acá definimos cuantas replicas queremos, como queremos desplegarlos, como queremos escalar y Kubernetes se encarga de mantener el clúster funcionando. Los deployments crean replication controllers que por defecto mantienen el número de réplicas que especificamos en el despliegue, pero nos permitirán cambiar este numero a futuro si así lo deseamos.
Bueno, hasta acá toda la teoría, pero estas aburrido, ¿no?
Queres tocar, queres poner manos a la obra, queres revolcarte en este chiquero (?).
Empecemos:
Etiquetas:
Debian,
Docker,
Internet,
Kubernetes,
Linux,
Playbook,
Programación,
Redes,
Software,
Tutoriales,
Ubuntu
sábado, 23 de mayo de 2020
Curso Javascript - EVENTOS [addEventListener]
Hola mis ardillas queridas! ¿como van?
Bueno, últimamente cuando voy por la calle me paran muchos programadores que me dicen, ¿y las entradas de programación para cuando?
A lo que yo respondo:
Sin embargo, la otra vez me quedé pensando, y me dije a mi mismo, ¿por que no?.
La cuestión es que me decidí a hacer un post de programación, mas precisamente de Javascript.
Me senté frente a mi computadora, y me acordé algo esencial: No se programar.
Entonces me fui a dormir.
Pero a la mañana siguiente, mientras desayunaba mi café con leche y tocino (?), recordé que alguna vez un programador escribió como invitado en este blog.
Específicamente, escribió un post llamado Primeros pasos con HTML y CSS que pueden ver haciendo click AQUI.
Entonces decidí invitarlo nuevamente a que colabore con este increíble blog de informática y tecnología. Así que fui a su canal de Youtube, vi los títulos de sus videos y le robé el mas interesante (?), que es el del título.
En este vídeo se explica el manejo de Eventos en Javascript, puntualmente el Evento Click para los botones. Se muestra el uso del atributo onclick así como el manejo de eventos mediante los Listeners utilizando el método addEventListener.
Sin mas preámbulos, disfrutenlo:
Increíble, ¿no?.
Para que se queden tranquilos, porque se que estas cosas no les gustan, le voy a decir que lo tomé prestado, pero antes de decirle quiero simplemente ver si sigue siendo seguidor de este sensacional blog.
De paso lo saludo, bienvenido nuevamente Hades_Ra, ahora conocido como nathaner.io.
Por si les interesa la programación les dejo su canal de Youtube: Programando el destino
Eso es todo amigos.
COMPARTÍ, ¿que te cuesta?
Demostrame que los programadores son mejores que los administradores de sistemas.
Nos vemos (?)
Bueno, últimamente cuando voy por la calle me paran muchos programadores que me dicen, ¿y las entradas de programación para cuando?
A lo que yo respondo:
Sin embargo, la otra vez me quedé pensando, y me dije a mi mismo, ¿por que no?.
La cuestión es que me decidí a hacer un post de programación, mas precisamente de Javascript.
Me senté frente a mi computadora, y me acordé algo esencial: No se programar.
Entonces me fui a dormir.
Pero a la mañana siguiente, mientras desayunaba mi café con leche y tocino (?), recordé que alguna vez un programador escribió como invitado en este blog.
Específicamente, escribió un post llamado Primeros pasos con HTML y CSS que pueden ver haciendo click AQUI.
Entonces decidí invitarlo nuevamente a que colabore con este increíble blog de informática y tecnología. Así que fui a su canal de Youtube, vi los títulos de sus videos y le robé el mas interesante (?), que es el del título.
En este vídeo se explica el manejo de Eventos en Javascript, puntualmente el Evento Click para los botones. Se muestra el uso del atributo onclick así como el manejo de eventos mediante los Listeners utilizando el método addEventListener.
Sin mas preámbulos, disfrutenlo:
Para que se queden tranquilos, porque se que estas cosas no les gustan, le voy a decir que lo tomé prestado, pero antes de decirle quiero simplemente ver si sigue siendo seguidor de este sensacional blog.
De paso lo saludo, bienvenido nuevamente Hades_Ra, ahora conocido como nathaner.io.
Por si les interesa la programación les dejo su canal de Youtube: Programando el destino
Eso es todo amigos.
COMPARTÍ, ¿que te cuesta?
Demostrame que los programadores son mejores que los administradores de sistemas.
Nos vemos (?)
Etiquetas:
humor,
Programación,
Software,
Tutoriales,
Ubuntu
martes, 18 de enero de 2011
Primeros pasos con HTML y CSS
En este tutorial veremos, o al menos eso intentaré:
· HTML
· CSS
Pero empezaré con una pregunta, ¿Qué se necesita para poder seguir este tutorial?
Pues, puedo decir que tenemos dos instancias, en la primera bastará con tener un block de notas, aunque recomiendo el Notepad++
Notepad++
Es un editor de texto inteligente, puesto que configurándolo puede reconocer etiquetas de diferentes lenguajes, este nos servirá para editar HTML, CSS, PHP, etc.
Luego, más adelante, necesitaremos nuevos programas para seguir avanzando, pero eso se verá después cuando sea realmente necesario, por el momento el Notepad++ nos alcanza.
HTML – HyperText Markup Language
El HTML es un lenguaje estándar basado en etiquetas utilizado para la estructuración y desarrollo de una página web, en el pasado este lenguaje se utilizaba para toda la web, es decir, tanto para colocar el contenido como para maquetarla, actualmente la maquetación vía HTML cayó en desuso con la creación del CSS, por lo cual, etiquetas dedicadas al diseño como fuentes, colores, etc. ya no se utilizan mas desde el HTML, de manera que serán destacadas en este tutorial.
Particularmente, cuando codifico una página lo hago al estilo XHTML (eXtencible HyperText Markup Language, Lenguaje eXtensible de Marcado de HiperTexto), es un lenguaje que tiene ciertas particularidades, pero la más importante para ésta instancia es que es estricto, es decir, cada etiqueta abierta debe cerrarse, los grupos de etiquetas deben cerrarse en el orden correcto, los valores de atributos deben ir entre comillas (“), los nombres de los elementos y atributos deben ir en minúsculas, etc.
Comenzaremos con lo básico, HTML para ser reconocido como una pagina web y que los navegadores lo puedan interpretar, necesita ciertas etiquetas base que no pueden faltar nunca.
Estas son <html>, <head>, y <body>.
Pero en primera medida, ¿Qué son las etiquetas?
Las etiquetas son las palabras reservadas que tiene HTML y se colocan dentro de sus delimitadores que son “<” y “>” (menor y mayor), como mencioné anteriormente las etiquetas deben cerrarse, para hacer eso se coloca delante del mayor la contra barra (“/”) es decir “/>”.
Etiquetas
<html> Es el contenedor del documento.
<html>Contenido del documento</html>
<head> Es la encargada de contener todo el sector de código que no verá el usuario pero si será interpretado por navegadores y/o buscadores.
<head>Encabezado del documento</head>
<body> Es la encargada de contener todo el cuerpo del documento, es decir, todo lo que verá el usuario.
<body>Cuerpo del documento</body>
<title> Determina el título del documento, éste se verá en el navegador en la barra superior, la cual contiene los botones de minimizar, maximizar y cerrar.
Esta etiqueta debe ir dentro de la etiqueta <head> puesto que ésta es su contenedora.
<head><title>Titulo de la Pagina </title></head>
<p> Determina un párrafo.
Esta etiqueta debe usarse dentro de la etiqueta <body> puesto que ésta es su contenedora.
<body><p>Contenido del párrafo</p></body>
Ahora crearemos nuestra primer pagina, la cual por razones de tradición programática será el clásico “Hola Mundo”.
Escribimos el siguiente código en el Notepad++ o el editor de texto que tengan:
<html>
<head>
<title>Hola Mundo</title>
</head>
<body>
<p>Hola Mundo<p>
</body>
</html>
Y ahora solo resta guardar el archivo como holamundo.html y abrirlo con nuestro navegador
Es importante que la extensión .html esté puesta ya que de lo contrario no funcionará como una pagina web.
Aclaración: Es recomendable que todos los archivos .html que creemos en el futuro tengan su nombre en minúscula, sin espacios o en su defecto separados por el guión bajo (“_”), y sin acentos.
Etiquetas [2]
<strong> Convierte en negrita al texto que contenga.
<strong>Texto</strong>
<em> Convierte en cursiva al texto que contenga.
<em>Texto</em>
<u> Subraya el texto que contenga.
<u>Texto</u>
<del> Tacha al texto que contenga.
<del>Texto</del>
<a> Es hacedora de hipervínculo, debe ir acompañada con la palabra href cuyo parámetro es la dirección web.
<a href=”paginaweb”>Texto Link</a>
<h1>, <h2>, <h3>, <h4>, <h5>, <h6> Estas etiquetas delimitan encabezados, van de mayor a menor, es decir el <h1> es el encabezado mas grande, usado para titulares, el <h2> como titular temático, y el <h6> generalmente usado para pie de página.
Se recomienda que en una página web (documento, no la página completa) debe haber solo un <h1> pudiendo haber varios <h2>, <h3>, etc.
<h1>Texto</h1>
Etiqueta de Tablas [*]
Voy a hacer un apartado especial para las tablas, puesto que serán muy utilizadas, hasta que se ingrese al mundo del maquetado por CSS y Divs.
Las tablas se determinan por la etiqueta <table> ésta determina el sector que ocupará la tabla.
Para agregar una fila a la tabla hay que utilizar la etiqueta <tr>, y para subdividir esta fila en columnas hay que utilizar la etiqueta <td>
Es decir, para crear una tabla con una fila y tres columnas hay que tipear lo siguiente
<table>
<tr>
<td>Primera Celda</td>
<td>Segunda Celda</td>
<td>Tercera Celda</td>
</tr>
<table>
CSS
Ya es tiempo de ver que es CSS, ya que esto nos permitirá avanzar en el "diseño" aunque el curso sea de programación.
CSS es un lenguaje propiamente dicho que permite establecer los estilos a los objetos que forman parte de nuestra página, es decir, a la mayoría de los tags HTML le podremos determinar su posición, su tamaño, su color, etc.
Este lenguaje es un estandar web y esta mantenido por el W3C, sus siglas significan Cascading Style Sheets (Es decir, Hojas de Estilo en Cascada)
La existencia de este lenguaje permitió desglosar la programación propiamente dicha de la página web del diseño de la misma.
Es decir, uno puede programar un HTML para que funcione como página web, y hacer por separado un archivo CSS que le de diseño al mismo, haciendo que el código del HTML sea más limpio, pues dentro de él solo estará la programación de la página.
Las propiedades CSS de los elementos se escriben dentro de llaves ({...}), estos son sus delimitadores.
Veamos un ejemplo:
Supongamos que tenemos una página web y le queremos dar un color de fondo al Body y además establecer la fuente y el color de la misma, para ello debemos escribir el siguiente código.
body { background-color: #000; color: #FFF; font-family: verdana; }
Analicemos la instrucción anterior:
Lo que está delante de la llave que abre ({) es el target, es decir, a donde se va a aplicar el estilo, este puede ser un ID, una Clase (Class) o algún Tag reservado de HTML o XML.
Dentro de las llaves ({...}) se escriben las propiedades y sus respectivos valores, a la izquierda de los dos puntos (:) va la propiedad, a la derecha el valor respectivo.
El valor no es solo una palabra, en realidad existen ciertos estándares que hay que respetar, por ejemplo, cuando se determina el tamaño de algo hay que especificar su unidad de medida es decir --> Propiedad: 200px; <-- "px" quiere decir que la unidad de medida será en píxeles.
Cuando es un color hexadecimal, adelante de su número hay que escribir el símbolo numeral (#), y como éstos cosas hay otros que se verán cuando llegue el momento.
Para terminar una instrucción hay que escribir el punto y coma (;) eso le dice al lenguaje que finalizó la línea que uno escribió.
Pero... ¿Donde escribo eso para que funcione?, existen 3 formas de insertar CSS en un HTML u otro archivo.
Ahora veremos una sola, pero más adelante, si lo necesitamos, veremos las otras.
Como aclaración, de las tres formas de hacerlo solo una deja el código limpio separado del diseño.
Las otras dos lo ensucian, una más que la otra. La que veremos nosotros lo ensucia lo menos posible.
Entre los tags <head> y </head> hay que escribir los tags que le avisarán al navegador que estamos cargando un estilo y este es <style> y </style>, es decir, que nuestro código final para mostrar como funciona CSS es el siguiente:
<html> <head> <style> Body { background-color: #000; color: #FFF; font-family: verdana; } </style> </head> <body> TEXTO QUE SE VERA EN VERDANA</body> </html>
Este código nos mostrará una página con Cuerpo en Negro, Texto en Blanco y la Fuente del texto en Verdana.
Próxima entrega: Como hacer una página con HTML y CSS que funcione como Home.
NOTA: Éste tutorial ha sido escrito por Hades_Ra, quien espero se decida a ser miembro activo del blog Hay ardillas en la red.
NOTA: Éste tutorial ha sido escrito por Hades_Ra, quien espero se decida a ser miembro activo del blog Hay ardillas en la red.
Etiquetas:
Programación,
Tutoriales
Suscribirse a:
Entradas (Atom)

