Flexbox

El model Flexbox de CSS és una de les eines més potents per crear dissenys web adaptables i ordenats sense necessitat de calcular mides exactes o flotar elements. Amb la propietat display: flex podem controlar com es distribueixen els elements dins d’un contenidor.

Funcionament de flexbox

Quan apliquem display: flex a un element contenidor, tots els seus elements fills es converteixen automàticament en “flex items”. Això ens permet alinear-los i distribuir-los fàcilment a l’espai disponible.


.container {
display: flex;
}
.item {
background: lightblue;
padding: 10px;
margin: 5px;
}

En aquest exemple, els elements dins de la classe .container s’alinearan en una sola línia, un al costat de l’altre, de forma automàtica.

Direcció i alineació

La propietat flex-direction defineix si els elements s’organitzen en fila (row), columna (column) o altres variants.


.container {
display: flex;
flex-direction: column;
/* Col·loca els elements en columna */
}

A més, podem alinear els elements horitzontalment i verticalment amb justify-content i align-items:


.container {
display: flex;
justify-content: space-between; /* Espai entre els elements */
align-items: center; /* Centra verticalment */
}

Adaptabilitat i distribució

Els elements flexibles poden créixer o reduir-se segons l’espai disponible gràcies a la propietat flex. Aquesta combina tres valors: flex-grow, flex-shrink i flex-basis.


.item {
flex: 1; /* Cada element ocuparà el mateix espai */
}

Això fa que els elements s’ajustin automàticament dins del contenidor sense trencar el disseny, ideal per a estructures responsive.

Exemple complet


<div class="container">
<div class="item">Bloc 1</div>
<div class="item">Bloc 2</div>
<div class="item">Bloc 3</div>
</div>


.container {
display: flex;
justify-content: space-around;
align-items: center;
height: 200px;
background-color: #f2f2f2;
}
.item {
background-color: #8ecae6;
padding: 20px;
border-radius: 8px;
}

En aquest cas, els tres blocs es distribuiran uniformement i es centraran verticalment dins del contenidor. Un exemple senzill però molt potent!

Conclusió

Flexbox simplifica molt la creació de dissenys web adaptables i nets. Amb només unes poques línies de codi, pots controlar fàcilment la distribució, alineació i mida dels teus elements. Si encara no l’has provat, és hora de fer-ho!

Documents XML ben formats

Regles Sintàctiques XML

Per fer un document XML ben format cal complir les regles següents:

Declaració XML: Cada document XML ha de començar amb una declaració XML que defineixi la versió i el tipus de codificació, per exemple:

<?xml version="1.0" encoding="UTF-8"?>

Element Arrel: Cada document XML ha de tenir un únic element arrel que conté tots els altres elements. Per exemple:
<arrel><!-- Altres elements aquí --></arrel>

Elements Ben Tancats: Cada element ha de tenir una etiqueta d’obertura i una etiqueta de tancament, o ser un element auto-tancat. Per exemple:

<element>Contingut</element>
<element_autotancat />

Sensibilitat a Majúscules i Minúscules: Els noms dels elements i atributs són sensibles a majúscules i minúscules. Per exemple:

<Element> ← són diferents → <element>

Atributs en Etiquetes: Els atributs han d’estar entre cometes. Per exemple:

<element atribut="valor">Contingut</element>

Regles Sintàctiques Generals

Comentaris: Els comentaris es poden afegir utilitzant . Per exemple:

<!-- Aquest és un comentari -->

Caràcters Especials: Alguns caràcters especials com <, >, &, i estan reservats pels lleguauges de marques i cal representar-los com entitats especials predefinides en HTML. Aquí pots trobar una llista completa de les entitats HTML.

Espais en Blanc: Els espais en blanc dins dels elements es conserven. Això significa que els espais en blanc poden ser significatius.

Declaració de Tipus de Document (DTD): Opcionalment, es pot incloure una DTD per definir l’estructura del document XML.

Seguint aquestes regles, pots assegurar-te que els teus documents XML estiguin ben formats i siguin fàcils de processar per diferents aplicacions.

DTD (Documen Type Definition)

Els arxius DTD (DocumenType Definition) defineixen l’estructura i les regles que ha de seguir un document XML, com si fos un “manual d’instruccions” per validar-ne el contingut. S’utilitzen per garantir que el document XML segueixi una organització concreta, especificant quins elements i atributs pot contenir, en quin ordre, i quin tipus de dades s’hi poden introduir.

Exemple de document DTD inscripció.dtd

01. <!ELEMENT inscripcio (alumne+)>
02. <!ELEMENT alumne (dni, nom, curs, telefon, email)>
03. <!ELEMENT dni (#PCDATA)>
04. <!ELEMENT nom (#PCDATA)>
04. <!ELEMENT curs (#PCDATA)>
05. <!ATTLIST telefon tipus (mobil|fixe) #REQUIRED>
06. <!ELEMENT telefon (#PCDATA)>
07. <!ELEMENT email (#PCDATA)>

01. <!ELEMENT inscripcio (alumne+)> El document ha de tenir un element principal, anomenat inscripcio, que conté un o més elements alumne (el signe + indica que poden haver-hi un o més elements).

02.<!ELEMENT alumne (dni, nom, curs, telefon, email)> Cada alumne té cinc elements obligatoris: dni, nom, curs, telefon i email, i han d’estar en aquest ordre.

<!ELEMENT dni (#PCDATA)>, <!ELEMENT nom (#PCDATA)>, <!ELEMENT curs (#PCDATA)>, <!ELEMENT telefon (#PCDATA)>, <!ELEMENT email (#PCDATA)> Aquests elements contenen PCDATA (Parsed Character Data), és a dir, text. Cada un és un camp d’informació textual com ara el DNI, el nom, el curs, el telèfon i l’email de l’alumne.

05. <!ATTLIST telefon tipus (mobil|fixe) #REQUIRED> L’element telefon ha de tenir un atribut anomenat tipus que indica si el telèfon és mobil o fixe, i aquest atribut és obligatori (#REQUIRED).

Aquest DTD estableix que un document XML sobre inscripcions ha de tenir una estructura concreta: cada inscripció conté un o més alumnes, i cada alumne té un DNI, un nom, un curs, un telèfon (amb atribut de tipus), i un email. El DTD s’assegura que tots aquests elements existeixin i segueixin l’estructura definida.

Escrit per grigol@xtec.cat

 

Etiquetes, marques o tags

Les marques o etiquetes característiques de l’XML es representen mitjançant un nom tancat entre els símbols menor_que (<) i major_que (>). Podem posar el nom que vulguem a les etiquetes, però evidentment és aconsellable posar noms que ens ajudin a identificar el seu contingut. En l’exemple de l’article anterior, la primera etiqueta que trobem és: <llistaclients> i ens informa de que a continuació trobarem una «llista de clients».

Les marques o etiquetes identifiquen blocs de dades, per tant, sempre tindrem un punt d’inici i un punt final (quan s’acaben les dades). En conseqüència les etiquetes sempre van per parelles. Quan iniciem un bloc de dades obrirem una etiqueta, i en finalitzar el bloc de dades haurem de posar l’etiqueta de tancament corresponent. Les etiquetes de tancament es diferencien de les d’obertura posant una barra (/) davant el nom.

En l’exemple la última etiqueta que trobem és: i la seva funció és tancar el bloc de dades que hem obert amb l’etiquetat . Els documents XML sempre han de tenir una etiqueta arrel (en l’exemple és ) que contindrà totes les altres etiquetes.

Per tal de mantenir l’estructura d’arbre és imprescindible que les etiquetes s’obrin i es tanquin en el lloc correcte (no es poden creuar blocs de dades). Per exemple, la següent estructura és incorrecte:


01. <noticia>
02.  <titol>El Barça guanya la lliga
03.   <contingut>Aquest dissabte el barça s'ha proclamat ...
04.  </titol>
05.   </contingut>
06. </noticia>

Aquest bloc de dades representa una noticia. La noticia està formada per dos nous blocs de dades: El títol i el contingut de la notícia. El problema està en el fet de que tanquem l’etiqueta que delimita el títol quan ja hem obert l’etiqueta de contingut. Estem creuant blocs de dades.

Escrit per grigol@xtec.cat

   

Introducció a “Simple PHP CMS”

Com hem vist, la majoria de llocs web dinàmics fan servir algun tipus de gestor de continguts (CMS). Malgrat que existeixen moltes opcions gratuïtes (WordPress, Driipal, …), no està de més veure com funcionen aquests sistemes. Per experimentar-ho crearem un petit gestor de continguts en PHP.

  • Creació d’una base de dades
  • Connexió amb la base de dades
  • Elaboració d’un formulari
  • Desar les dades del formulari a la base de dades
  • Mostrar les dades desades de la base de dades

Per veure com interactuen el PHP (llenguatge de codi obert) i MySQL (base de dades), establirem una classe senzilla en un fitxer anomenat ‘simpleCMS.php’.


<?php
class simpleCMS {

var $host;
var $username;
var $password;
var $table;

public function display_public() { }
public function display_admin() { }
public function write() { }
public function connect() { }
private function buildDB() { }

}
?>


En aquest fitxer inclourem quatre variables i cinc mètodes que ens permetin, de manera clara, enfocar el CMS a una programació orientada a objectes PHP.

Thunderbird: Client de correu electrònic

Thunderbird és un client de correu electrònic de codi obert distribuït per la Fundació Mozilla. Va començar com una aplicació d’escriptori dedicada al correu electrònic, als grups de discussió i als canals RSS. Es basa en el motor Gecko, cosa que li confereix més rapidesa i estabilitat.

Igual que amb Firefox, a Thunderbird se li poden instal·lar extensions que amplien les seves característiques. Es distribueix sota les llicències MPL (Mozilla Public License) i MPL/GPL/LGPL (trillicència), i és disponible per a GNU/Linux, Windows i Mac OS X.

Activitats
  • Configura el servei de consulta de correu POP3 o IMAP amb Thunderbird.
  • Instal·la alguna extensió de Thunderbird i valora-la.
  • Busca software alternatiu a Thunderbird i fes una fitxa (Nom, web oficial, plataformes suportades, llicència).

Spam: tipologies i seguretat

El correu electrònic és una eina molt potent, ja que permet posar-nos en contacte amb molta gent a un cost molt baix. Malgrat això, les seves virtuts poden ser també un defecte donat que moltes persones utilitzen aquest sistema per enviar spam.

No hi ha una definició clara ja que existeixen diferents variants, però en general es pot denominar com “correus massius no sol·licitats”.

Activitats
  • Defineix breument els termes següents relacionats amb l’spam: Spam comercial, Spam nigerià, Pishing.
  • Busca els orígens de l’spam i fes una explicació del seu funcionament.
  • Enumera diferents mesures per evitar l’spam.

Com viatja un missatge a la xarxa? (apps mòbil)

Els sistemes de missatgeria mòbil actuals van aparèixer amb l’objectiu de replicar l’experiència dels missatges de text o SMS tot evitant els costos directes d’aquests. L’operació d’enviar i rebre missatges s’esdevé per art de màgia. Tot té una raó i una explicació tècnica. Whatsapp, Telegram, Signal, WeChat, entre moltes altres, permeten enviar xats, però com funciona tècnicament?

Quan l’usuari envia un missatge, aquest s’envia als servidors de la companyia. Allà es processa i es reenvia directament al destinatari, qui descarrega el missatge de l’emissor enviant un senyal informàtica perquè el servidor ho elimini. Però quins són els protocols i quina seguretat els acompanya. La infografia següent pot donar algunes pistes.

Com viatja un missatge a la xarxa

Activitats
  • Explica com funciona tècnicament la missatgeria mòbil.
  • Compara el funcionament amb el protocol d’enviament i recepció d’un correu electrònic ordinari.

El Diògenes digital

Heu intentat ordenar mai tots els arxius digitals que teniu emmagatzemats? Arxius com ara fotografies, documents de text, fulls de càlcul, treballs de l’escola, documents de l’empresa…
Cada vegada emmagatzemem més arxius. TeraBytes, PetaBytes i Exabytes d’informació que no acostumem a tenir ben organitzada, tot sovint repetida i fins i tot ammb formats obsolets. Molts de nosaltres som, ja avui en dia, veritables Diògenes digitals.

Activitats
  • Fes una definició del concepte de ‘Diògenes digital’.
  • Crea una llista de eines, hàbits, trucs i aplicacions per posar ordre i deixar de ser un Diògenes digital.

Creació d’un theme en wordpress (IV)

El document functions.php

Al costat dels documents bàsics per la creació d’un theme de Wrodpress no podem obviar functions.php. Aquest és un document opcional per a un framework de WordPress però molt necessàri per activar i editar determinades funcionalitats en un theme una mica més avançat.

El document functions.php, se situa a l’arrel del directori del theme i queda automàticament vinculat al mateix. Entre moltes altres, les funcions principals permeten activar i editar plugins de WordPress, com ara l’edició de menus, la creació d’àrees de ginys (widgets), l’associació de miniatures als articles (thumbnails) o el control de la llargada dels resums de les entrades o posts del weblog …

A continuació trobareu un recull comentat del codi que hem treballat a classe per tal d’afegir aquestes funcionalitats extres al nostre framework.

functions.php

01. <?php
 
<!-- 'register_nav_menus' és una funció permet la creació de menus personalitzats per al theme. En aquest cas s'ha definit tres menus diferents: un primari, un secundari i un per a dispositius mòbils. Afegint aquesta funció s'activen les funcionalitats menus al tauler d'Aparença' de l'administrador. -->
 
02. register_nav_menus( array(
03.    'primary' => __( 'Menú principal', 'framework' ),
04.    'secondary' => __( 'Menú secundari', 'framework' ),
05.    'mobile' => __( 'Menú mòbil', 'framework' )
06. ));
 
07. function framework_theme_widget() {
08.   register_sidebar( array(
09.     'name' => 'Widget Peu',
10.     'id => 'footer_left',
11.     'before_widget' => '<div>',
12.     'after_widget' => '</div>',
13.     'before_title' => '<h4>',
14.     'after_title' => '</h4>',
15.  ));
16. }
 
17. add_action( 'widgets_init', 'framework_theme_widget' );
18. add_theme_support( 'post-thumbnails' );
 
19. ?>