INFODA | Tu web favorita para la búsqueda de empleo, formación y oposiciones en Euskal Herria

ENCUENTRA TU
FORMACIÓN
Y SÚMALE
EMPLEO

Tu web favorita de búsqueda de empleo, formación y cultura en euskal Herria

normas del foro (1  post)

Leer antes de empezar a postear

: Oiu (superAdmin) - 2022-07-28 ( 0   )

normas del buen comportamiento



Antes de postear, lee por favor las siguientes normas del buen comportamiento. Es vital que entre todas y todos cuidemos las buenas formas y el respeto, al igual que un buen código debe ser eficaz, ordenado y estar comentado.  Seas bienvenid@!

  1. No insultes bajo ningún concepto.

  2. Si alguien se equivoca, corrígele desde el respeto y el conocimiento, no es necesario humillar a nadie.

  3. Nunca dejamos de aprender a lo largo de nuestra vida. Es importante poder transmitir el conocimiento, por lo que no te cortes en ayudar a l@s demás!

  4. Antes de postear una duda, revisa bien que no haya sido planteada anteriormente. El buscador del foro está en proceso.

  5. Postea en la categoría y topic correspondiente al tema del que quieras tratar.

  6. Si detectas un comportamiento irrespetuoso, comunícaselo por favor a l@s moderador@s.

  7. No pongas datos personales de ninguna persona, ni tan siquiera los tuyos. Hablamos de dirección, teléfono u otros datos sensibles. 

Agradecemos tus aportes, tus dudas y tu buen talante. Disfruta!


preguntas frecuentes (1  post)

¿Cómo postear con bloques de código?

: Oiu (superAdmin) - 2022-08-08 ( 0   )

1) Abrimos un nuevo post

2) escribimos el post. También escribimos o  pegamos "sin formato" el bloque de código que queremos incluir, por ejemplo:

"Escribo mi post normal y donde quiera inserto el codigo"

<form enctype="multipart/form-data" method="post" name="fileinfo">
  <label>Your email address:</label>
  <input type="email" autocomplete="on" autofocus name="userid" placeholder="email" required size="32" maxlength="64" /><br />
  <label>Custom file label:</label>
  <input type="text" name="filelabel" size="12" maxlength="32" /><br />
  <label>File to stash:</label>
  <input type="file" name="file" required />
  <input type="submit" value="Stash the file!" />
</form>
<div id="output"></div>

3) seleccionamos el bloque de código y clicamos en "code block", por ejemplo:





El formato no habrá cambiado aparentemente, sólo lo veremos cuando el post esté posteado.

Resultado:

"Escribo mi post normal y  donde quiera inserto el codigo"

<form enctype="multipart/form-data" method="post" name="fileinfo">
  <label>Your email address:</label>
  <input type="email" autocomplete="on" autofocus name="userid" placeholder="email" required size="32" maxlength="64" /><br />
  <label>Custom file label:</label>
  <input type="text" name="filelabel" size="12" maxlength="32" /><br />
  <label>File to stash:</label>
  <input type="file" name="file" required />
  <input type="submit" value="Stash the file!" />
</form>
<div id="output"></div>




quienes somos (1  post)

info da! información sobre empleo, cursos e informática (diseño, web y programación)

: Oiu (superAdmin) - 2022-08-04 ( 0   )

¡es info da!


Del grupo de desarrolladores, artistas y diseñadores gráficos de Liquid ART developers nace también la web www.infoda.eus. Aún está en desarrollo, pero su objetivo no es más que ofrecerte información de una manera rápida, ordenada y sencilla en lo relativo a cursos, empleos y desarrollo informático, donde la experiencia de usuario se cuide en cada punto de manera rigurosa. Por supuesto, aún está en desarrollo, por lo que te rogamos tengas paciencia por si encuentras algún bug o fallo en la web. Mientras tanto, aquí te ofrecemos:

  1. Un foro enfocado al desarrollo informático, web y diseño gráfico; donde resolver y plantear dudas técnicas a l@s demás usuari@s.

  2. Un chat donde poder conversar y resolver también algunas dudas rápidas, o símplemente charlar (en desarrollo).

  3. Un buscador de cursos y empleos donde se mejora la experiencia de usuario: mayor velocidad de búsqueda por agrupaciones y más información relativa al curso o empleo. La información se actualiza cada hora.


Tenemos proyectado añadir a esta web los siguientes puntos:

  • Login de empresa para que puedan añadir cursos privados u ofertas de empleo especiales que no estén en open data euskadi.
  • Zona de gestión de usuarios, donde puedas añadir palabras clave y que cada vez que entres en la web, se te presenten directamente los cursos o empleos que buscas.
  • Poder añadir a favoritos tanto cursos como empleos, y hacer el seguimiento más de cerca de los mismos.
  • Foros de otras temáticas
  • Chats particulares de otras temáticas.
  • En proceso una mejora respecto a ampliar el buscador en otros aspectos.

Con todo ello, seas bienvenid@ a info da!




Liquid ART developers-eko garatzaile, artista eta diseinatzaile grafikoen taldetik sortu zen www.infoda.eus-webgunea ere. Oraindik garatzen ari da, baina helburua da informazioa modu azkar, ordenatu eta errazean ematea ikastaroei, enpleguei eta garapen informatikoari dagokienez, non erabiltzaile-esperientzia puntu bakoitzean zorrotz zaintzen den. Jakina, oraindik garatzen ari da, eta, beraz, pazientzia izateko eskatzen dizugu, webean bug edo akatsen bat aurkitzen baduzu ere. Bitartean, hemen eskaintzen dizugu:

  1. Garapen informatikora, webgunera eta diseinu grafikora bideratutako foroa; gainerako erabiltzaileei zalantza teknikoak argitzeko eta planteatzeko.

  2. Hitz egiteko eta zalantza azkar batzuk argitzeko txata, edo hitz egiteko aukera (garatzen ari dena).

  3. Erabiltzaile-esperientzia hobetzen duten ikastaro eta enpleguen bilatzailea: bilaketa-abiadura handiagoa taldeka eta ikastaroari edo enpleguari buruzko informazio gehiago. Informazioa orduro eguneratzen da.


Webgune honi honako puntu hauek eransteko asmoa dugu:

  • Enpresaren logina, open data euskadin ez dauden ikastaro pribatuak edo lan-eskaintza bereziak gehitu ahal izateko.
  • Erabiltzaileak kudeatzeko gunea, gako-hitzak gehitzeko eta webgunean sartzen zaren bakoitzean bilatzen dituzun ikastaroak edo enpleguak zuzenean aurkezteko.
  • Beste gai batzuetako foroak
  • Beste gai batzuetako txat partikularrak.

Horrekin guztiarekin, ongi etorri
info da!

discord de info da! (1  post)

nuevo discord de info da!

: Oiu (superAdmin) - 2022-10-27 ( 0   )

nuevo discord de info da!



A continuación tienes el enlace para acceder al discord de info da!


Recuerda que puedes compartir este enlace con tus amigos/as para que también formen parte de la comunidad.

En el discord podrás continuar haciendo comunidad, ya que podrás acceder a los diferentes canales de texto o salas de audio donde podrás resolver dudas, plantear proyectos o ayudar a los demás.

No dudes en entrar!

info da!

nuevos cursos (0  post)

másters, cierra el círculo de tu formación (0  post)

HTML / CSS / SCSS (5  post)

difuminar círculo en css (sass) con blur y after + keyframes de parpadeo

: Oiu (superAdmin) - 2022-07-29 ( 1   )

Efecto parpadeante hecho en css (sass)


: igg (user) - 2022-08-16

fino !
diferencia entre EM y REM para el tamaño de fuente (CSS)

: Oiu (superAdmin) - 2022-08-23 ( 0   )

REM y EM son unidades RELATIVAS a un valor de tamaño de fuente establecido inicialmente en un elemento superior. La diferencia entre ambas reside en sobre qué elemento superior hacen referencia.

  • EM: hace referencia al tamaño establecido en su padre más directo.

  • REM hace siempre referencia al tamaño de fuente establecido en los estilos del ROOT o HTML.

Si establecemos un valor de fuente del root en 20px y a cualquier elemento le asignamos un valor de tamaño de fuente de 1rem, estaremos asignándole exactamente 20px. Si así mismo le asignamos 1.5rem, sería un 50% mayor, es decir, 30px.

Si por otro lado tenemos un padre con un tamaño de fuente establecido y queremos trabajar sobre él en sus hijos, usaremos EM, donde si el padre tiene un tamaño de fuente de 30px ysi a su hijo le asignamos un tamaño de fuente de 1.5em, entonces le asignamos un 50% más sobre 30, es decir que el hijo tendrá 45px de fuente.

Ejemplo sobre el que puedes hacer pruebas:


Cualquier duda déjala en los comentarios!
cambiar los estilos de un input del autocompletar del navegador

: Oiu (superAdmin) - 2022-10-29 ( 0   )

A continuación mostraré como evitar y/o cambiar los estilos que impone el navegador cuando se autocompleta un input de nuestro formulario.


Para evitar que el navegador proponga el autocompletar en un input determinado, añadiremos el siguiente atributo:


<input autocomplete="off" >


Cambiar estilos del background-color y color de fuente al autocompletar


No obstante igual nos interesa mantener la funcionalidad del autocompletar en algunos campos de nuestro formulario, pero a cambio no queremos que nos cambie los estilos del mismo cuando el usuario haga uso del mismo. Para ello determinaremos estos estilos CSS

//estilos básicos de los inputs de clase .campo

.campo{
     width: 100%;
     margin-bottom: 20px;
     padding: 6px;
     box-sizing: border-box;
     font-size: 17px;
     font-family: "robotillo";
     color: var(--lightColor);
     border: none;
     border-radius: 4px;
     background-color: var(--discord05);   
}
//ahora los estilos que fuerzan el color de fondo y de fuente tras usar el autocompletar
.campo:-webkit-autofill,
.campo:-webkit-autofill:hover, 
.campo:-webkit-autofill:focus {
     box-shadow: 0 0 0px 1000px var(--varColorFondo) inset;
     -webkit-box-shadow: 0 0 0px 1000px var(--varColorFondo) inset;
     -webkit-text-fill-color:var(--varColorFuente);
}


De esta manera evitaremos cambiar los estilos de los inputs donde se haya usado el autocompletar.

Saludos!
Incluir whatsapp en tu HTML

: Oiu (superAdmin) - 2023-03-08 ( 0   )


El código HTML:


<a id="whatsapp" href="https://api.whatsapp.com/send/?phone=34xxxyyyxxx" target="_blank">
    <img src="./assets/img/whatsapp.svg" alt="">
</a>



Aprende css con este juego

: Franklin (user) - 2022-07-28 ( 3   )

 
 Flexbox Froggy, un juego donde ayudarás a Froggy y a sus amigos escribiendo código CSS.

: Oiu (superAdmin) - 2022-07-28

respuesta de Haruberuto:" Las  CSS están llegando a emular a JS con las nuevas funcionalidades. 

OS dejo un enlace a un crack de CSS https://manz.dev/
Muy interesante, profe. Gracias!

: igg (user) - 2022-08-16

FINO !

JAVASCRIPT / TYPESCRIPT / JQUERY (4  post)

Evitar que funcionen los enlaces con Javascript para que cumplan otro cometido por evento propio

: Oiu (superAdmin) - 2022-11-09 ( 0   )

Si queremos anular el efecto LINK de una etiqueta <a> a otra dirección de la misma u otra web por el motivo que sea, usaremos este código

/* evitamos los enlaces para que se cargue con ajax, pero mantenemos los enlaces para el SEO*/
        window.onload = init;        
        function init(){
            var enlaces = document.getElementsByTagName("a");
           
            for(i=0;i<enlaces.length;i++){
                enlaces[i].addEventListener("click",evitarComportamiento);
            }
        }
        function evitarComportamiento(e){
            comportamiento = window.event || e;
            comportamiento.preventDefault();
        }

De esta forma todas las etiquetas <a> perderán su funcionalidad nativa de redireccionar a donde tenga el href.

Por ejemplo, en esta web de infoda se usa, ya que todo el contenido se carga sobre el propio index evitando así la recarga de la página. Es decir, el contenido se carga usando AJAX. Pero claro, esto puede ser un problema para el SEO, ya que esa información sólo se carga por acción del usuario, y no aparece por defecto en una página secundaria de nuestra web.

Para evitarlo usaremos esto: Haremos páginas secundarias fantasma con el contenido cargado por servidor y haremos referencia a ellas desde los enlaces del NAV, pero cuando el usuario clicke en dichos enlaces, no se redireccionará y cargará esta página secundaria, sino que se cargará la info vía ajax, ya que con este código hemos anulado, en este caso, los href de las etiquetas <a>

parentNode y cómo hacer referencia al padre de un target desde javascript

: Oiu (superAdmin) - 2022-11-15 ( 0   )

En ocasiones captamos el evento de un elemento HTML desde nuestro javascript para poder actuar en consecuencia, pero con la casuística de actuar también o no sobre el padre de este div target.

Para ello usaremos parentNode sobre el target.

e.target.classList.add("selected")
e.target.parentNode.classList.add("selecteda") //añadimos clase selecteda al padre del target


Saludos,
Anular el touch de la pantalla táctil en la web con Javascript

: Oiu (superAdmin) - 2023-03-24 ( 0   )




document.addEventListener("touchmove",
  function(e) {
    e.preventDefault();
  }, { passive: false }
);



Añadir SameSite a tu cookie

: Oiu (superAdmin) - 2023-07-20 ( 0   )

Because a cookie’s SameSite attribute was not set or is invalid, it defaults to SameSite=Lax, which prevents the cookie from being sent in a cross-site request. This behavior protects user data from accidentally leaking to third parties and cross-site request forgery.
Resolve this issue by updating the attributes of the cookie:
Specify SameSite=None and Secure if the cookie should be sent in cross-site requests. This enables third-party use.
Specify SameSite=Strict or SameSite=Lax if the cookie should not be sent in cross-site requests.

En ocasiones podremos elaborar cookies, indicándole los principles parámetros, pero es importante indicar también el parámetro del uso que tendrá dicha cookie. Para ello usaremos el SameSite donde podrá tener valor "Strict" o "Lax" en caso de que la cookie tenga un uso únicamente local. En caso de que se use con terceros, como puede ser google analytics u otros, tendremos que establecer el valor como "none"

ejemplo:

setCookie(cname, cvalue, exdays) {
        //const d = new Date();
        this.d.setTime(this.d.getTime() + (exdays*24*60*60*1000));
        this.expires = "expires="+ this.d.toUTCString();
        document.cookie = cname + "=" + cvalue + ";" + this.expires + ";path=/;SameSite=Strict";
    }


PHP (6  post)

convertir string a date (fecha) con formato determinado

: Oiu (superAdmin) - 2022-09-20 ( 1   )

Si obtenemos, por ejemplo, un string de fecha pero queremos darle formato de fecha (date) desde PHP para poder operar con él, debemos:

$fechaSinFormato = "2022-07-19";  //obtenemos la fecha sin formato de fecha en string
$fechaConFormato = date("Y-m-d", strtotime($fechaSinFormato));   //pasamos a formato fecha y en formato "año-mes-día"

Hay más formas, pero esta es una de las más sencillas.

: Oiu (superAdmin) - 2024-06-28

eliminado de variables y recuperación de memoria

: Oiu (superAdmin) - 2022-09-20 ( 0   )

Eliminar variables en PHP con unset()

unset($var1, $var2, $var3);    //BORRAMOS VARIABLES


Liberar memoria de una variable de resultado tras consulta a base de datos con free()

$resultado->free();     //LIBERAMOS LA MEMORIA
mysqli_refresh($con,MYSQLI_REFRESH_TABLES);      //VACIAMOS CACHÉ DE LAS TABLAS
mysqli_close($con);   //CERRAMOS CONEXIÓN CON BD
cambiar el idioma de tu html a través de PHP

: Oiu (superAdmin) - 2022-09-20 ( 0   )

Lo primero que debemos tener en cuenta es que nuestra web debe contar con un sistema de cookies o variables de navegador que permita guardar el idioma seleccionado por el usuario. En mi ejemplo también debemos contar con archivos JSON (1 por cada idioma) donde tengamos todas las traducciones realizadas.

A continuación te resumo cómo hago yo para cambiar el idioma de forma reactiva, es decir, sin necesidad de que refresque la web para ello. Todo esto, claro, tanto en el texto html, como en el inyectado através de PHP o JS. En este caso me centraré en el inyectado a través de PHP que bien suele ser alguna llamada desde AJAX.

El resumen sería el siguiente. Todas las etiquetas HTML que contengan o vayan a contener un texto, bien sean etiquetas "spam", "p" o directamente "div" van a tener una clase diferencial y numerada que representará el texto que se va a mostrar. Ejemplo "<span class="txt11"></span>" . En los archivos JSON van a estar esas variables con el texto correspondiente:

 

donde, por ejemplo:


En este caso las variables están llamadas con la "t" y el número diferencial. En mi caso lo he hecho así por otros motivos.

Una vez tenemos los JSON ya podemos proceder al tema. En todos los PHP donde queramos tener las traducciones incluiremos el siguiente código al comienzo:

include("./php/includes/_traducciones.php");  //incluimos lectura del json de tarducciones (en el index, al no ser módulo, no podemos usar la clase de js de traducciones)
$data = file_get_contents("./assets/json/".$idioma.".json");  //cogemos el json en una variable
$traducir = json_decode($data, true);  //decodificamos el json

El include llama al archivo PHP donde recojo la cookie para saber qué JSON debo leer. Aquí el archivo _traducciones.php donde de existir cookie de idiomas nos quedamos con su valor o en su defecto establezco el idioma euskera.


if(!isset($_COOKIE['idiomas'])){
    $idioma="eu"; //si no existe o está vacía la cookie de idiomas la ponemos en eu por defecto
}else{
    $idioma=$_COOKIE["idiomas"]; //cogemos la cookie desde php de idiomas    
}


En los archivos PHP donde queramos incluir variables con el texto traducido haremos lo siguiente. Donde la variable $traducir["t92"] tendrá el valor deseado para ese placeholder en concreto. O el valor del botón enviar tendrá tambíén el texto en un idioma u otro ($traducir['t27'])

<div id="cfc" class="contenedor_form">
    <div class="chatForm">                    
         <input name="message" id="message" type="text" placeholder="<?= $traducir['t92']?>" class="escribir prevenir-envio">
         <input id="send-message" type="button" class="botonChat prevenir-envio" value="<?= $traducir['t27']?>">
    </div>
</div>

o en este otro caso, donde además de poner el valor de la variable PHP de la traducción, establecemos la clase para que haya reacctividad al cambiar el idioma sin necesidad de refresco de la web.

websocket.onopen = function(ev) { //server
msgBox.append('<div class="system_msg" style="color:#bbbbbb"><span class="txt87"><?= $traducir['t87']?></span><!-- bienvenido al chat --></div>'); //notify user
}

y así sucesivamente en todos los textos que sean inyectados a través de PHP.

Cada vez que cambiemos entre idiomas lanzaremos un evento click que recogeremos con JS. Si queremos la reactividad del cambio de idioma, deberemos recoger la variable de cookie de idiomas y ller el JSON desde JS. Después haremos una iteración por todas las clases que tengan "txt" y cambiaremos su valor HTML por el del JSON:

    let jsonIdioma = "";
    jsonIdioma = `assets/json/${idioma}.json`;    
   
    //RECOGEMOS TODOS LOS ELEMENTOS DEL JSON
    fetch(jsonIdioma)
    .then(response =>{
        if(response.ok)
            return response.text()
        else
            throw new Error(response.status);
    })
    .then(data =>{
        //PARSEAMOS EL JSON EN UN OBJETO
        const iJs=JSON.parse(data);
       
        //RECORREMOS LAS PROPIEDADES DE LAS CLAVES DEL OBJETO
        for (var clave in iJs){
            //SI HAY PROPIEDAD EN ESA CLAVE, ENTRAMOS
            if (iJs.hasOwnProperty(clave)) {
                //ESCRIBIMOS HTML DE LAS CLAVES Y EL VALOR DE LAS CLAVES
                /* console.log("2- Clave: " + clave + " - Valor: " + iJs[clave]); */
                if (document.querySelector(`.tx${clave}`) || document.querySelector(`.${clave}`)){ //si existe elemento html con clase de traducción txt o cat
                    for(const item of document.querySelectorAll(`.tx${clave}`)){ //recorremos todos los elementos html con esa clase txt
                        item.innerHTML=iJs[clave];//le cambiamos el valor html con la nueva traducción
                    }
                    for(const item of document.querySelectorAll(`.${clave}`)){ //recorremos todos los elementos html con esa clase cat
                        item.innerHTML=iJs[clave];//le cambiamos el valor html con la nueva traducción
                    }
                }              
            }
          }
        console.log("3- json de idioma establecido en: "+ idioma);
    })
    .catch(err =>{
        console.error("ERROR", err.message)        
    });


De esta forma, cuando haya un click en un idioma este se recogerá desde JS y se procederá a la lectura del json correspondiente y al cambio de todos los HTML que tengan dicha clase. Obviamente habrá traducciones que, al no contener clase, como el placeholder o el value de un botón, se queden fuera de esa reactividad, pero para ello haremos excepciones en el mismo evento click de JS:

    //CAMBIAMOS EL IDIOMA EN LOS PLACEHOLDER, QUE NO SE PUEDE YA QUE NO SE LES PUEDE ASIGNAR CLASE DE IDIOMA
    if(document.getElementById("message")){
        document.getElementById("message").placeholder=traduccion.traducir("t92") //escribe aquí tu mensaje, (placeholder del input del chat)
    };
    if(document.getElementById("send-message")){
        document.getElementById("send-message").value=traduccion.traducir("t27") //enviar, (value del botón enviar del chat)
    };
    if(document.getElementById("idbuscatext")){
        document.getElementById("idbuscatext").placeholder=traduccion.traducir("t97") //busca por palabras clave.., (placeholder del input del buscador de empleo o cursos)
    };
    //CAMBIAMOS LOS DATA-NOMBRE DE LAS CATEGORÍAS DEL FORO
    if(document.getElementById("foroID")){
        var n=9 // iteramos 8 veces, (9 en total) para cambiar los nombres de las cat en el foro <<<<< según se añadan cat hay que incrementar valor de n, siempre que en el json estén en orden del 1 al n
        for(var i=1;i<=n;i++){
            if(document.querySelector(`.cat${i}`)){
                for(const item of document.querySelectorAll(`.cat${i}`)){ //recorremos todos los elementos html con esa clase
                    item.dataset.nombre=`${traduccion.traducir(`cat${i}`)}`
                }
            }
        }
    }


de esta forma, incluso esos elementros serán reactivos y cambiarán de idioma nada más el usuario lo seleccione.

Cualquier duda, deja tus comentarios!










Función mail() con from para que no falle el envío

: Oiu (superAdmin) - 2024-01-10 ( 0   )

En algunos servidores, para poder ejecutar bien la función mail(), además de los parámetros de "destino", "título" y "contenido" tendremos que añadir como cuarto parámetro un "encabezado" donde se indique al menos el From (desde dónde se envía el correo).

Es vital que el correo que se indique en el from exista en el dominio.

Ejemplo

$cabecera = 'From: info@webda.eus' . "\r\n" .
'Reply-To: info@webda.eus' . "\r\n" .
'X-Mailer: PHP/' . phpversion();


mail($destino,"Consulta de la Web",$contenido,$cabecera);

Introducción al PHP

: Oiu (superAdmin) - 2024-06-28 ( 0   )

Introducción al PHP


pronto "mySQLshell"

: igg (user) - 2022-08-16 ( 0   )

Kaixo Team !

Saludos desde Euskadi...

VUE framework (0  post)

MYSQLI / PDO (1  post)

Pronto "mySQLshell"

: igg (user) - 2022-08-16 ( 1   )

Kaixo Team !

saludos desde Errenteria !

: Oiu (superAdmin) - 2022-08-16

Con ganas de verlo, Iñaki! buen trabajo

HTACCESS configuración (5  post)

quitar el index.php de tu URL

: Oiu (superAdmin) - 2022-08-01 ( 0   )

abrimos el archivo htaccess de nuestro host. y escribimos:

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} index\.php
RewriteRule index\.php$ https://www.infoda.eus/ [R=301,L]

donde https://www.infoda.eus/ pones tu URL, bien sea http o https
activar el loging con google (dinahosting)

: Oiu (superAdmin) - 2022-08-01 ( 0   )

En ocasiones el proveedor te puede haber limitado el acceso mediante oAuth2 a tu web. En ese caso, el acceso mediante google. Si tras subir al ftp tus archivo y tener el código correcto ves que al intentar conectarte mediante la autentificación de google te aparece un mensaje como este, uno de los motivos puede ser que no lo tengas activo desde el archivo htaccess:



Abrimos el htaccess y escribimos la siguiente normativa:

<IfModule mod_security2.c>
      SecRuleRemoveById 201 210580
</IfModule>

guardamos y cerramos. Refrescamos página y comprobamos si funciona.

Desconozco si es exclusiva para dinahosting, o para otros hosting.
permitir envío a través de ajax-post scripts de php en variables de formulario

: Oiu (superAdmin) - 2022-08-11 ( 0   )

En este caso, tenemos un formulario con un textarea donde pueden ir bloques de código literales, ya que se trata de un formulario para crear nuevos post en un foro de programación. En el envío a través de POST el apache puede denegar con un 403 al considerarlo una inyección php. Para ello debemos establecer esta regla en el htaccess:

<IfModule mod_security2.c>
SecRuleRemoveById 211220
</IfModule>
Http Cache - Configurar para que tu web cargue más rápido.

: Oiu (superAdmin) - 2023-04-10 ( 0   )

Si pasamos el filtro de PageSpeed Insights para ver la velocidad de carga de nuestra web (entre otros puntos a nivel de rendimiento, SEO y buenas prácticas) quizá veamos que un punto interesante a mejorar sea la política de cache-control o cache http. Esta configuración particular del servidor donde esté alojada la web (el que sea), que de hecho no viene por defecto, nos permitirá que los diferentes elementos de peso de la web (imágenes, fuentes, archivos css, js, json, etc) se mantengan en el navegador del cliente una vez haga la primera visita, acelerando las futuras visitas que haga a la web y aumentando con ello la user experience y de paso el SEO.

La configuración se hará en el archivo htaccess e incluiremos el siguiente código modificable.

<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault                                      "access plus 1 month"
 
  # CSS
    ExpiresByType text/css                              "access plus 1 year"
 
  # Archivos relacionados con AJAX y Web Sockets
    ExpiresByType application/json                      "access plus 0 seconds"
    ExpiresByType application/xml                       "access plus 0 seconds"
    ExpiresByType text/xml                              "access plus 0 seconds"
 
  # Favicon
    ExpiresByType image/x-icon                          "access plus 1 week"
 
  # Componentes HTML (HTCs)
    ExpiresByType text/x-component                      "access plus 1 month"
 
  # HTML
    ExpiresByType text/html                             "access plus 0 seconds"
 
  # JavaScript
    ExpiresByType application/javascript                "access plus 1 year"
 
  # Manifest
    ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
    ExpiresByType text/cache-manifest                   "access plus 0 seconds"
 
  # Fotos, vídeos y audio
    ExpiresByType audio/ogg                             "access plus 1 month"
    ExpiresByType image/gif                             "access plus 1 month"
    ExpiresByType image/jpeg                            "access plus 1 month"
    ExpiresByType image/png                             "access plus 1 month"
    ExpiresByType video/mp4                             "access plus 1 month"
    ExpiresByType video/ogg                             "access plus 1 month"
    ExpiresByType video/webm                            "access plus 1 month"
 
  # Canales RSS y Atom
    ExpiresByType application/atom+xml                  "access plus 1 hour"
    ExpiresByType application/rss+xml                   "access plus 1 hour"
 
  # Fuentes web
    ExpiresByType application/font-woff                 "access plus 1 month"
    ExpiresByType application/vnd.ms-fontobject         "access plus 1 month"
    ExpiresByType application/x-font-ttf                "access plus 1 month"
    ExpiresByType font/opentype                         "access plus 1 month"
    ExpiresByType image/svg+xml                         "access plus 1 month"
</IfModule>

Donde podemos modificar el tiempo que queremos por defecto, o para caso en particular.

Comprimir archivos para aumentar la velocidad de carga

: Oiu (superAdmin) - 2023-04-10 ( 0   )

En el archivo htaccess también podemos configurar el servidor para que comprima los diferentes archivos (css, js, etc) para aumentar el rendimiento de carga de la web.

<IfModule mod_deflate.c>
 
    # Forzar compresión también para las cabeceras malformadas
    # http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping
    <IfModule mod_setenvif.c>
        <IfModule mod_headers.c>
            SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
            RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
        </IfModule>
    </IfModule>
 
    # Comprimir los contenidos que sean de cualquiera de estos tipos
    <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE application/atom+xml \
                                      application/javascript \
                                      application/json \
                                      application/rss+xml \
                                      application/vnd.ms-fontobject \
                                      application/x-font-ttf \
                                      application/x-web-app-manifest+json \
                                      application/xhtml+xml \
                                      application/xml \
                                      font/opentype \
                                      image/svg+xml \
                                      image/x-icon \
                                      text/css \
                                      text/html \
                                      text/plain \
                                      text/x-component \
                                      text/xml
    </IfModule>
 
</IfModule>


Saludos,

WEBSOCKETS PHP (0  post)

VISUAL STUDIO CODE (2  post)

deshabilitar las sugerencias MDN al poner el ratón sobre el código en visual studio code

: Oiu (superAdmin) - 2022-08-11 ( 0   )

En ocasiones puede resultar molesto mientras se programa con cierta intención de agilidad, que aparezcan los cuadros sugerencia MDN y hagas click por error sobre ellos. ¿A que te ha pasado más de una vez?



Para deshabilitarlo sólo tienes que ir a configuración y poner en el buscador: editor hover enabled

y des-checkeas la opción Editor > Hover: Enabled




deshabilitar autocompletar en visual studio code

: Oiu (superAdmin) - 2022-08-15 ( 0   )

Según programamos muchas veces ya sabemos lo que queremos poner, y no nos interesa que nos aparezca un cuadro con diferentes sugerencias. Para ello podremos desactivarlas desde la propia configuración del visual studio code.

Escribimos en el buscador: preferences: open settings (JSON) y elegimos editar en settings JSON



depués añadimos las siguientes líneas:

"editor.quickSuggestions": {
    "other": "off",
    "comments": "off",
    "strings": "off"
},
"editor.acceptSuggestionOnEnter": "off",
"editor.quickSuggestionsDelay": 10,
"editor.wordBasedSuggestions": false,


GIT & GITHUB (1  post)

Algunos enlaces de interés sobre el uso de Git

: Oiu (superAdmin) - 2022-11-17 ( 0   )

David Mahler
     video 1: Introduction to Git - Core Concepts 
     video 2: Introduction to Git - Branching and Merging
     video 3: Introduction to Git - Remotes

Mark Lodato - A Visual Git Reference

Scott Chacon - Pro Git (book) 

Dr. Chris Bourke, cbourke@cse.unl.edu (University of Nebraska–Lincoln)

CONSOLA SSL (LINUX) (1  post)

Algunos comandos interesantes

: Oiu (superAdmin) - 2023-01-10 ( 0   )

Para poder mostrar lo que se está ejecutando en servidor:

ps -aux

Para poder matar un proceso:

kill (ID del proceso)

Para poder matar todos los procesos de un mismo user:

killall --user (nombre del usuario)


Para hacer una tarea CRON que borre, por ejemplo, todos los procesos activos una vez al día (esto conviene hacer para resetear bien todo antes de volver a ejecutar el server, por ejemplo):

00 04 * * * killall -9 -u infoda

.--------------- minuto (0-59) 
|  .------------ hora (0-23)
|  |  .--------- día del mes (1-31)
|  |  |  .------ mes (1-12) o jan,feb,mar,apr,may,jun,jul... (meses en inglés)
|  |  |  |  .--- día de la semana (0-6) (domingo=0 o 7) o sun,mon,tue,wed,thu,fri,sat (días en inglés) 
|  |  |  |  |
*  *  *  *  *  comando a ejecutar



Continuará.

WOO-COMMERCE (0  post)

WORDPRESS (0  post)

FIGMA (0  post)

JAVA (0  post)

.NET / VB / VBA (0  post)

PHYTON (0  post)

C# (0  post)

ILLUSTRATOR (0  post)

PHOTOSHOP (1  post)

Problema al abrir imágenes enviadas desde Whatsapp en Photoshop

: Oiu (superAdmin) - 2023-05-08 ( 0   )

Abrir imágenes enviadas por Whatsapp en Photosop: Solución


EL truco es abrir la imagen con otro programa, por ejemplo el PAINT, y guardarlo tal cual, en la extensión de origen. Después ya nos permitirá abrir la imagen en los programas de adobe.

Saludos,

Liquid Art Developers

INDESIGN (0  post)

SEO (2  post)

configuración del archivo sitemap.xml

: Oiu (superAdmin) - 2022-11-03 ( 0   )

SEO: configuración básica del archivo sitemap.xml



¿Qué es un sitemap.xml?


Un sitemap es un archivo XML que lista el contenido a destacar e indexar de tu web. Los motores de búsqueda harán uso de este archivo para listar las páginas que hayas indicado en el mimo, posicionandolas de mejor manera.


¿Dónde lo creo?


Depende que proveedor tengas, es posible que en el panel de administración del servidor web contratado dispongas de la opción de "crear un sitemap.xml". Por ejemplo en dinahosting, en SEO Toolkit dispones de dicha opción, por lo que sólo debes escribir el código y guardarlo dentro de la carpeta www de tu ftp.


¿Qué código debo poner y qué significa cada etiqueta?


A continuación un ejemplo del sitemap de infoda.eus

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://infoda.eus/</loc>
                <priority>1</priority>
<lastmod>2022-10-18</lastmod>
                <changefreq>always</changefreq>
</url>
<url>
<loc>https://infoda.eus/otroarchivo.php</loc>
                <priority>0.8</priority>
<lastmod>2022-10-18</lastmod>
                <changefreq>always</changefreq>
</url>
</urlset>


Explico cada etiqueta:

<loc> contendrá la dirección del archivo que queremos indexar.
<priority> contendrá valores entre 0 y 1 siendo 1 lo más priorizable.

  • 0 - 0.3  = publicaciones de noticias antiguas, guías desactualizadas, páginas irrelevantes que, sin embargo, no desea eliminar, fusionar o actualizar
  • 0.4 - 0.7  = artículos, publicaciones de blog, páginas de categorías, preguntas frecuentes, páginas del sistema. La mayor parte del contenido de su sitio cae dentro de este rango.
  • 0.8 -  1 =  contenido extremadamente importante, como su página de inicio, páginas de categorías principales, páginas de productos e índices de subdominios.

<lastmod> fecha de la última modificación.
<changefreq> frecuencia con la que cambia el contenido de la página en cuestión indexada.

  • always: si es una página que cambia de contenido cada vez que alguien la visita.
  • hourly
  • daily
  • weekly
  • monthly
  • yearly
  • never

más info en:

configuración del robots.txt para el SEO

: Oiu (superAdmin) - 2022-11-10 ( 0   )

Si queremos que los robots tengan en cuenta qué archivos no queremos (o queremos) que sean rastreados, lo declararemos en el robots.txt que estará alojado junto al sitemaps.xml en nuestro host.


Sitemap: https://www.infoda.eus/sitemap.xml          < le decimos dónde está el sitemap.xml
User-agent: *                        <le decimos que todos los robots. Aquí podríamos especificar qué robot, o poner * y que sean todos.
allow: /humans.txt         < Activamos el rastreo en humans.txt
Disallow: /cgi-bin            < Desactivamos el rastreo de los archivos de la carpeta cgi-bin
Disallow: /php               < Desactivamos el rastreo de los archivos de la carpeta php



Saludos,

SEM (0  post)

deportes (0  post)

mascotas (0  post)

videojuegos (0  post)

PARTICIPA Y CREA COMUNIDAD: DISEÑO GRÁFICO
WEB
PROGRAMACIÓN

foro, chat & discord dedicados a tu disposición

En infoda cuentas con varios medios donde poder plantear tus dudas o resolver las de otros usuari@s. ¡Tu participación suma!

Aún en versión beta, esta sección pretende crear colaboración neuronal entre alumnos, profesionales y docentes de la materia; compartiendo y aumentando el conocimiento en áreas como el diseño gráfico; programación web, web 3.0, apps, videojuegos; wordpress & e-commerce; edición de vídeo; redes sociales; fotografía... entre otros muchos campos relativos.

visita nuestro discord