2022-12-08

Comprobar código de respuesta desde google sheets

El uso de Google Sheets es una forma de automatizar una gran amplitud de tareas. Hay varias funciones que pueden realizar varias operaciones dentro de una hoja de Google, incluida la verificación del estado de un sitio web. Abre una hoja de googe sheets haz Click en extensiones y vas a app script Allí puedes pegar este código:
function httpstatuscode(url) {
    var result = [];
        url.toString().trim();
       var options = {
        'muteHttpExceptions': true,
        'followRedirects': false,
    };
        try {
        result.push(UrlFetchApp.fetch(url, options).getResponseCode());
    }
       catch (error) {
        result.push(error.toString());
    } finally {
        return result;
    }
}

2022-05-03

Cambiar los colores de los iframes de Hubspot

 Son muchos los servicios que uan iframes para cargar contenido desde oro sitio. Un ejemplo sería Hubspot que tiene una versión gratuita hasta los 2000 contactos pero que no deja cambiar los colores de los campos del formulario.


Esto se puede solucionar vía javascript inyectando css directamente al iframe. Vamos a ver las formas que hay para hacerlo:


Con Jquery:




setTimeout(function(){

var head = jQuery("#hs-form-iframe-0").contents().find("head");
var css = '<style type="text/css">' +
'.hs-button {' +
          'border-color: #ffffff !important;' +
'background-color: #ffffff !important;'+
'color:#007396 !important;}'+
          '.hubspot-link__container{display:none;} label{color:#ffffff;} a{color:#ffffff !important;}</style>';

jQuery(head).append(css);

}, 1100);
});


Con Vanilla JS


<pre>

setTimeout(function(){

   let myiFrame = document.getElementById("hs-form-iframe-0");

   let doc = myiFrame.contentDocument;

   doc.body.innerHTML = doc.body.innerHTML + '<style>.hs-button {border-color: #ffffff !important; background-color: #ffffff !important; color:#007396 !important;} .hubspot-link__container{display:none;} label{color:#ffffff;} a{color:#ffffff !important;}</style>';

   }, 1100);

});

}</pre>


También se puede enlazar un fichero css:


<pre>window.onload = function() {

  let link = document.createElement("link");

  link.href = "style.css";      /**** your CSS file ****/ 

  link.rel = "stylesheet"; 

  link.type = "text/css"; 

  frames[0].document.head.appendChild(link); /**** 0 is an index of your iframe ****/ 

}</pre>


Cambiando el nombre del ID del iframe podéis atacar cualquier iframe ya sea el de un chat o cualquier otro servicioo que tengáis enveustra página web.


2021-12-06

Trabajar con archivos grandes

 A veces toca trabajar con archivos frandes de más e 1GB y comienzan a salir errores de memoria.


Lo primero es dividirlo en trozos más pequeños:


split -b 300000k se.txt file-


Con este comando de linux dividimos en partes de 300Mb mas o menos que ya es un tamaño más manejable.


Luego coges tu fichero de python

import time
start = time.time()

file1=open("C:\\proyectos\\bak\\ps2\\se-aa.txt","r")
file2=open("C:\\proyectos\\bak\\ps2\\se1.txt","w")
data1 = set(file1.read().splitlines())
for list in data1:
try:
x = list.index(".se.")
y=x+3
z=list[0:y]
file2.write(z)
file2.write('\n')
except ValueError:
print ("error")

file1.close()
file2.close()

end = time.time()
print(end - start)

Coges el fichero de 300 megas lo metes en un set para que quede en memoria y el proceso sea más rápido. Después vas línea a línea y buscas un patrón. en este caso '.se.' 

Quiero que cuando se encuentre se coja toda la línea hasta .se y entonces lo guarde en un fichero.


Mi equipo estaba algo saturado y tardaba 8 segundos en leer los 300Mb .


Debo comprar mas RAM y así podré trabajar bien con archivos de pocas gigas.

2021-03-23

Hacer responsive una página de wix





El que no haya probado como hacer una web en wix mejor que no lo intente.

Código sucio es poco y un asesor SEO que te obliga a hacer las cosas mal si lo sigues al pie de la letra.

Las páginas de wix, supongo que para los usuarios no la cagasen en 2005, sólo permiten una anchura de 980px como máximo.

Si tienes un monitor de 24 pulgadas en el año 2021 verás un gran espacio a ambos lados del contenido de tu página.

Wix recomienda si quieres hacer algo más moderno pasarte a editorx. Esta sería otra historia.

Los chicos de wix también han creado un editor avanzado de javascript. Tan avanzado que no tiene acceso al DOM y se han inventado un javascript propio para que solo puedas hacer cosas mínimas.


El truco para conseguir pasar de las majaderías de esta empresa, es inyectar código en el único sitio donde lo admiten. La zona especial donde se suele meter el código de analytics.


Hay que seguir la siguiente ruta:

Panel de control -> Opciones -> Código personalizado -> añadir

hay qeu incluir el código antes del body así que "Cuerpo final"
Elegir en 2Todas las páginas" y "subir código una vez".

Un código que funciona es escalar el div princpl de nuestro contenido #masterPage. Se puede usar tanto zoom como transform: scale()


<style>
@media only screen and (min-width: 1367px) {
	#masterPage{	
		zoom:1.3;
		-moz-transform: scale(1.3);
		-moz-transform-origin: top;
	}
}
@media only screen and (min-width: 1900px) {
	#masterPage{	
		zoom:1.6;
		-moz-transform: scale(1.6);
		-moz-transform-origin: top;
	}
}
</style>

Con este código insertado, vuestra página se ampliará sin dejar esos huecos tan grandes a los lados. Se debe jugar con las cifras para obtener el mejor resultado.

Poco más se puede hacer con css en wix. La mayoría de los divs están fijados a fuego con código en el html.

No he probado a inyectar javascript. Supongo que también funcionaría.


2020-11-14

Hacer foto de una web con python desde consola

A veces nos resulta necesario hacer una comprobación visual y automática del estado de una página web.

Se puede hacer de muchas maneras. En este ejemplo, vamos a usar la consola de linux. En mi caso, un ubuntu sin entorno gráfico puesto.

Necesitamos instalar Selenium y el chrome driver. Juntos nos proporcionan una forma muy rápida y eficaz de hacer estas fotos.

Instalamos Selenium. Un software que nos puede valer para testear nuestros proyectos web.

pip install -U selenium


Ahora instalamos el chrome driver que básicamente es un navegador desde el cual se hace la foto. Nos renderiza la url que le enviemos.

sudo apt-get install chromium-chromedriver
 
Creamos el fichero makeImg.py con este código:
 
#coding=utf-8                                                                                      >
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options


options = webdriver.ChromeOptions()
options.headless = True
driver = webdriver.Chrome(options=options)

URL = 'https://avanzaweb.net'

driver.get(URL)

S = lambda X: driver.execute_script('return document.body.parentNode.scroll'+X)
driver.set_window_size(S('Width'),S('Height')) # May need manual adjustment >
driver.find_element_by_tag_name('body').screenshot('avanzaweb.png')

driver.quit() 
 
 
Cambiando avanzaweb por la url y nombre de imagen de vuestro agrado tenemos la imagen generada justo en la carpeta de ejecución del script.

Más sencillo imposible. 

2020-04-22

Añadir más RAM al fichero Swap en ARMBIAN



Por ejemplo, si queremos añadir un giga al fichero ram y evitar que nuestro kernel kill algún proceso por falta de memoria. Esta sería una posible solución:

swapoff -a
dd if=/dev/zero bs=1M count=1024 of=/var/swap.img
mkswap /var/swap.img
editar el fichero fstab
nano /etc/fstab
y añadir esta línea:
/var/swap.img none swap sw 0 0
swapon -a

Haciendo esto ya tenéis al momneto el giga . en mi caso tenía 400 megas así que he aumentado el swap en 600 Mb más.

También dicen que no es muy bueno tener el swap en la tarjeta SD pero no he visto forma de ponerla. En principio no tengo punto de montaje ni acceso a esa parte del cacharro. Sería mejor solución poner el swap en esa otra memoria.

2018-11-28

SQlite error: Unable to Open Database File



Recientemente actualicé un archivo correspondiente a un fichero sqlite 3 y no había forma de hacerlo funcionar.
El error que me salía era este:

Warning: SQLite3::query(): Unable to prepare statement: 14

Probé muchas cosas y al final la que me ha funcionado ha sido esta:

1. cambiar tanto los permisos del fichero como de la carpeta:

chown www-data:www-data fichero.db

2. Dar permisos de ejecución

chmod a+x fichero.db

3. Pero aún no iba . Me dí cuenta que sqlite3 generaba otros dos ficheros y que tenían los permisos cambiados así que también procedí a cambiarselos:

chown www-data:www-data fichero*
chmod a+x fichero*

Y comenzó a funcionar. Se ve que sqlite3 no podía trabajar con esos archivos si no tenían esos permisos u otros algo menores.