jueves, 28 de diciembre de 2023

Gershgorin with montecarlo

 import numpy as np
from itertools import permutations

def is_in_gershgorin_disks(matrix):
    # Check if all eigenvalues of the matrix are in the Gershgorin disks
    eigenvalues = np.linalg.eigvals(matrix)
    
    n = matrix.shape[0]
    for i in range(n):
        center = matrix[i, i]
        radius = np.sum(np.abs(matrix[i, :])) - np.abs(center)
        if not np.all(np.abs(eigenvalues - center) <= radius):
            return False
    return True

def permute_rows(matrix, permutation):
    # Permute rows in the matrix based on the given permutation
    return matrix[list(permutation), :]

def monte_carlo_approximation(matrix, num_samples=1000):
    n = matrix.shape[0]
    
    for _ in range(num_samples):
        # Randomly sample a permutation
        permutation = np.random.permutation(n)
        
        # Permute rows
        permuted_matrix = permute_rows(matrix, permutation)
        
        # Check if the permuted matrix satisfies Gershgorin's Circle Theorem
        if is_in_gershgorin_disks(permuted_matrix):
            return permutation, permuted_matrix
    
    return None, None

# Input matrix
original_matrix = np.array([
    [0, 0, 1],
    [1, 0, 0],
    [0, 1, 0]
])

# Monte Carlo approximation
permutation, permuted_matrix = monte_carlo_approximation(original_matrix, num_samples=1000)

if permutation is not None:
    print(f"\nRows permutation {permutation} results in a matrix satisfying Gershgorin's Circle Theorem:")
    print(permuted_matrix)
else:
    print("No permutation found in the Monte Carlo approximation.")


Gershgorin Circle Theorem

 I want to get the matrice where all ones are next to diagonal.
Seems it could be get from 

import numpy as np
from itertools import permutations
 
def is_in_gershgorin_disks(matrix):
      # Check if all eigenvalues of the matrix are in the Gershgorin disks
      eigenvalues = np.linalg.eigvals(matrix)
   
      n = matrix.shape[0]
      for i in range(n):
        center = matrix[i, i]
        radius = np.sum(np.abs(matrix[i, :])) - np.abs(center)
        if not np.all(np.abs(eigenvalues - center) <= radius):
            return False
      return True
 
def permute_rows(matrix, permutation):
      # Permute rows in the matrix based on the given permutation
      return matrix[list(permutation), :]
 
# Input matrix
original_matrix = np.array([
      [1, 0, 1, 0, 0, 0],
      [0, 0, 0, 1, 0, 0],
      [0, 1, 0, 0, 0, 0],
      [1, 0, 0, 0, 0, 0],
      [0, 0, 0, 1, 0, 1],
      [0, 0, 0, 0, 1, 1]
])
 
# Get all possible row permutations
n = original_matrix.shape[0]
all_permutations = list(permutations(range(n)))
 
best_permutation = None
best_fitness = 0.0  # Initialize with the worst fitness value
 
# Check each permutation for Gershgorin's Circle Theorem
for idx, permutation in enumerate(all_permutations, start=1):
      # Permute rows
      permuted_matrix = permute_rows(original_matrix, permutation)
   
      # Check if the permuted matrix satisfies Gershgorin's Circle Theorem
      if is_in_gershgorin_disks(permuted_matrix):
        # Calculate fitness value based on the sum of eigenvalues
        fitness_value = np.sum(np.linalg.eigvals(permuted_matrix))
       
        # Update the best permutation if the current one is better
        if fitness_value > best_fitness:
            best_permutation = permutation
            best_fitness = fitness_value
 
        print(f"Permutation #{idx} results in a matrix satisfying Gershgorin's Circle Theorem with fitness value: {fitness_value}")
      else:
        print(f"Permutation #{idx} did not result in a matrix satisfying Gershgorin's Circle Theorem.")
 
# Print the best permutation found
print("\nBest Permutation:", best_permutation)
 


miércoles, 27 de diciembre de 2023

row sorting

import numpy as np

matrix = np.array([
    [0, 1, 0, 0, 0],
    [0, 0, 0, 1, 0],
    [1, 0, 0, 0, 0],
    [0, 0, 1, 0, 0],
    [0, 0, 0, 0, 1]
])

num_rows = matrix.shape[0]

identity = np.eye(num_rows)

for i in range(len(matrix)):
    for j in range(len(identity)):
        product = matrix[i] * identity[j]
        if np.any(product > 0):
            print(f"{i+1} > {j+1}")


lunes, 20 de noviembre de 2023

al Moodle, llista d'activitats "no ocultes per als estudiants" i el seu enllaç al Clipboard

function copyToClipboard(data) {
    const el = document.createElement('textarea');
    el.value = data.map(row => row.join('\t')).join('\n');
    document.body.appendChild(el);
    el.select();
    document.execCommand('copy');
    document.body.removeChild(el);

    console.log('Data copied to clipboard.');
}

var xpath = '//li[@class and not(.//*[@class="badge badge-pill badge-warning"])]/.//span[@class="inplaceeditable inplaceeditable-text"]/a[@href]';
var elements = document.evaluate(xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var linksList = [];

for (var i = 0; i < elements.snapshotLength; i++) {
    var linkElement = elements.snapshotItem(i);
    var linkText = linkElement.textContent.trim();
    var linkHref = linkElement.getAttribute('href');

    // Check if linkText or linkHref contains #
    if (linkText.includes('#') || (linkHref && linkHref.includes('#'))) {
        // Skip this iteration if # is present
        continue;
    }

    linksList.push([linkText, linkHref]);
}

copyToClipboard(linksList);


viernes, 22 de septiembre de 2023

Programa pel ChromeBook

 per accedir a Snippets i poder entrar el programa al navegador Chrome: 

  1. premem F12
  2. Ctrl+Majúsc+P
  3. Snippet
  4. New snippet
    for (let i = 1; i <= 10; i++) {
        const row = [];
        for (let multiplier = 1; multiplier <= 10; multiplier++) {
            row.push(i * multiplier);
        }
        console.log(row.join('\t'));
    }

el resultat és:











lunes, 11 de septiembre de 2023

Criteris d'avaluació - a l'excel

values_to_search = ["101","102","103","104"] values_to_search = ["105","106","107","108","109"] values_to_search = ["105","106","108","109"] values_to_search = ["103","104","105","106","107","108","109","110","111"] values_to_search = ["201","202","203","204","205","206","207","208","209","210","211"] values_to_search = ["201","202","203","204","205","206","207","208","209","210","211"] values_to_search = ["302","303","304","305","306","307","401","402","403","404","405","406","407","408","409","410"] values_to_search = ["501","502","503","504","505","506"] =CONCAT("values_to_search = [";CHAR(34);TEXTJOIN(CONCAT(CHAR(34);",";CHAR(34));TRUE;F11:F23);CHAR(34);"]")

Criteris d'avaluació - del codi a la descripció

# Input array of values values_to_search = ["105","106","107","108","109"] modulUF=["M01U5"] # Your data data = [ "M01U5R100\t1. Configura circuits bàsics d’automatismes programables, seleccionant-ne els elements i elaborant-ne els esquemes.", "M01U5R101\t1.1 Identifica les especificacions tècniques del sistema automàtic.", "M01U5R102\t1.2 Descriu els principis de funcionament i característiques de mecanismes (d'accionament, control, protecció i senyalització), receptors i motors que intervenen en el sistema automàtic proposat.", "M01U5R103\t1.3 Calcula les característiques tècniques dels components de la instal·lació.", "M01U5R104\t1.4 Utilitza catàlegs de fabricants per a la selecció de materials.", "M01U5R105\t1.5 Elabora esquemes de connexió d’entrades i sortides de l’autòmat, amb la simbologia normalitzada.", "M01U5R106\t1.6 Confecciona el programa de control de l’autòmat.", "M01U5R107\t1.7 Utilitza programes informàtics de CAD electrotècnic.", "M01U5R108\t1.8 Aplica la normativa electrotècnica i convencionalismes d’automatismes.", "M01U5R109\t1.9 Té en compte els temps previstos per al procés.", "M01U5R110\t1.10 Respecta els criteris de qualitat.", "M01U5R111\t1.11 Mostra autonomia i resol satisfactòriament els problemes que es presenten.", "M01U5R200\t2. Munta sistemes automàtics amb control programable, interpretant-ne la documentació tècnica i verificant-ne el funcionament.", "M01U5R201\t2.1 Identifica les entrades, sortides (analògiques i digitals) i les seves referències.", "M01U5R202\t2.2 Connecta els equips i elements perifèrics del sistema.", "M01U5R203\t2.3 Estableix la comunicació del programari amb el dispositiu programable.", "M01U5R204\t2.4 Realitza circuits de control bàsics amb autòmats programables.", "M01U5R205\t2.5 Realitza petits programes seqüencials de control a partir del GRAFCET.", "M01U5R206\t2.6 Realitza un control de motors asíncrons amb convertidors de freqüència.", "M01U5R207\t2.7 Verifica el funcionament del sistema.", "M01U5R208\t2.8 Compleix les normes de prevenció de riscos laborals (incloses les de seguretat vers el risc elèctric) i de protecció ambiental.", "M01U5R209\t2.9 Realitza les activitats en el temps requerit.", "M01U5R210\t2.10 Aplica les normes de qualitat en les intervencions.", "M01U5R211\t2.11 Mostra autonomia i resol satisfactòriament els problemes que es presenten.", "M01U5R212\t2.12 Organitza les diferents fases del treball en les operacions de muntatge de sistemes automàtics amb control programable.", "M01U5R300\t3. Localitza avaries i disfuncions en instal·lacions d’automatització programable,analitzant-ne els símptomes i identificant-hi les causes que les produeixen.", "M01U5R301\t3.1 Elabora un pla d’intervenció.", "M01U5R302\t3.2 Realitza mesures i verificacions per a la localització d’avaries en instal·lacions d’automatització programable.", "M01U5R303\t3.3 Identifica disfuncions de la instal·lació mitjançant una comprovació funcional en instal·lacions d’automatització programable.", "M01U5R304\t3.4 Identifica la causa de l’avaria.", "M01U5R305\t3.5 Compleix les normes de prevenció de riscos laborals (incloses les de seguretat davant el risc elèctric).", "M01U5R306\t3.6 Opera amb autonomia i destresa en la manipulació d’elements, equips ieines.", "M01U5R307\t3.7 Realitza la intervenció en el temps requerit.", "M01U5R308\t3.8 Aplica les normes de qualitat.", "M01U5R400\t4. Repara avaries i disfuncions en instal·lacions d’automatització programable,ajustant-hi o substituint-hi els elements defectuosos.", "M01U5R401\t4.1 Elabora un pla d’intervenció correctiva i preventiva.", "M01U5R402\t4.2 Repara l’avaria substituint elements en instal·lacions d’automatització programable.", "M01U5R403\t4.3 Ajusta les proteccions d’acord amb les característiques dels receptors.", "M01U5R404\t4.4 Compleix les normes de prevenció de riscos laborals (incloses les de seguretat davant el risc elèctric) i de protecció ambiental.", "M01U5R405\t4.5 Verifica la compatibilitat del nou element instal·lat.", "M01U5R406\t4.6 Registra dades per elaborar l’informe de reparació i factura.", "M01U5R407\t4.7 Restableix les condicions de funcionament normal.", "M01U5R408\t4.8 Opera amb autonomia i destresa en la manipulació d’elements, equips i eines en instal·lacions d’automatització programable.", "M01U5R409\t4.9 Realitza la intervenció en el temps requerit.", "M01U5R410\t4.10 Aplica les normes de qualitat.", "M01U5R411\t4.11 Resol satisfactòriament els problemes que es presenten.", "M02U4R100\t1. Realitza la memòria tècnica de disseny d’una instal·lació d’habitatge ambgrau d’electrificació elevada i d’una oficina, local comercial o indústria atenentel REBT.", "M02U4R101\t1.1 Identifica les característiques de la instal·lació tenint en compte la seva utilització i potència.", "M02U4R102\t1.2 Confecciona una petita memòria justificativa.", "M02U4R103\t1.3 Dibuixa els esquemes unifilars dels circuits atenent la normalització.", "M02U4R104\t1.4 Calcula els dispositius de tall i protecció de l’habitatge, oficina, local comercial o indústria.", "M02U4R105\t1.5 Realitza amb suport informàtic els croquis i/o plànols de l’habitatge, oficina, local comercial o indústria reflectint-hi la ubicació dels diferents elements iel traçat de la instal·lació.", "M02U4R106\t1.6 Utilitza catàlegs i documentació tècnica per justificar les decisions adoptades.", "M02U4R107\t1.7 Confecciona la documentació adequada atenent les instruccions del REBT i les disposicions autonòmiques vigents.", "M02U4R108\t1.8 Elabora les instruccions generals per al manteniment i l’ús correctes de lesinstal·lacions elèctriques d’interiors.", "M02U4R109\t1.9 Utilitza les disposicions vigents publicades per l’òrgan competent de la Generalitat de Catalunya aplicables a les instal·lacions elèctriques interiors.", "M02U4R110\t1.10 Realitza càlculs de les seccions dels conductors actius i de protecció a partir de les normatives i reglamentacions vigents.", "M02U4R111\t1.11 Emplena els impresos normalitzats (certificat de la instal·lació, esquemes i memòria, entre d’altres).", "M02U4R112\t1.12 Demostra coneixement suficient de la normativa aplicable a la documentació tècnica d’instal·lacions elèctriques interiors.", "M2U5R100\tCalcula i representa gràficament instal·lacions elèctriques utilitzant eines informàtiques:", "M2U5R101\t1.1 Utilitza programari comercialitzat per al dibuix de plànols i esquemes elèctrics amb la simbologia normalitzada.", "M2U5R102\t1.2 Utilitza fulls de càlcul per al dimensionament d’instal·lacions elèctriques.", "M2U5R103\t1.3 Utilitza fulls de càlcul per a la valoració i facturació d’instal·lacions elèctriques.", "M2U5R104\t1.4 Utilitza processador de textos per elaborar la documentació tècnica.", "M2U5R105\t1.5 Utilitza recursos informàtics per emplenar impresos normalitzats de les instal·lacions elèctriques de baixa tensió.", "M2U5R106\t1.6 Imprimeix i emmagatzema el treball desenvolupat.", "M2U5R107\t1.7 Utilitza programes d’accés a Internet.", "M2U5R108\t1.8 Utilitza eines d’Internet.", "M06U1R100\t1. Identifica els elements que configuren les instal·lacions d’energia solar fotovoltaica, analitzant-ne el funcionament i característiques.", "M06U1R101\t1.1 Classifica els tipus d’instal·lacions d’energia solar.", "M06U1R102\t1.2 Reconeix el principi de funcionament de les cèl·lules.", "M06U1R103\t1.3 Identifica els paràmetres i corbes característiques dels panells.", "M06U1R104\t1.4 Descriu les condicions de funcionament dels diferents tipus de bateries.", "M06U1R105\t1.5 Descriu les característiques i la missió del regulador.", "M06U1R106\t1.6 Classifica els tipus de convertidors.", "M06U1R107\t1.7 Identifica la normativa de connexió a la xarxa.", "M06U1R200\t2. Configura instal·lacions solars fotovoltaiques justificant l’elecció dels elements que la conformen.", "M06U1R201\t2.1 Interpreta la documentació tècnica de la instal·lació.", "M06U1R202\t2.2 Dibuixa els croquis i esquemes necessaris per configurar la solució proposada.", "M06U1R203\t2.3 Calcula els paràmetres característics dels elements i equips.", "M06U1R204\t2.4 Selecciona l’estructura suport dels panells.", "M06U1R205\t2.5 Consulta catàlegs comercials.", "M06U1R206\t2.6 Selecciona els equips i materials necessaris.", "M06U1R207\t2.7 Elabora el pressupost.", "M06U1R208\t2.8 Aplica la normativa vigent.", "M06U1R300\t3. Munta els panells solars fotovoltaics acoblant-ne els elements i verificant-ne,si escau, el funcionament.", "M06U1R301\t3.1 Descriu la seqüència de muntatge.", "M06U1R302\t3.2 Realitza les mesures per assegurar l’orientació.", "M06U1R303\t3.3 Selecciona les eines i equips per al muntatge.", "M06U1R304\t3.4 Col·loca els suports i ancoratges.", "M06U1R305\t3.5 fixa els panells sobre els suports.", "M06U1R306\t3.6 Interconnecta els panells.", "M06U1R307\t3.7 Realitza les proves de funcionalitat i els ajustos necessaris.", "M06U1R308\t3.8 Compleix les normes de prevenció de riscos laborals.", "M06U1R309\t3.9 Respecta els criteris de qualitat.", "M06U1R309\t3.9 Organitza les diferents fases del treball en les operacions de muntatge de panells solars fotovoltaics.", "M06U1R310\t3.10 Manté l’àrea de treball, les eines, estris i equips amb el grau apropiat d’ordre, conservació i netedat.", "M06U1R311\t3.11 Col·labora amb l’equip de treball amb una actitud responsable, respectuosa i tolerant.", "M06U1R400\t4. Munta instal·lacions solars fotovoltaiques interpretant-ne la documentació tècnica i verificant-ne el funcionament.", "M06U1R401\t4.1 Interpreta els esquemes de la instal·lació.", "M06U1R402\t4.2 Selecciona les eines, components, equips i mitjans de seguretat per al muntatge.", "M06U1R403\t4.3 Situa els acumuladors en la ubicació adequada.", "M06U1R404\t4.4 Col·loca el regulador i el convertidor segons les instruccions del fabricant.", "M06U1R405\t4.5 Interconnecta els equips i els panells.", "M06U1R406\t4.6 Realitza les connexions de la instal·lació de posada a terra.", "M06U1R407\t4.7 Realitza les proves de funcionalitat, els ajustos necessaris i la posada en servei.", "M06U1R408\t4.8 Mesura els paràmetres de funcionament.", "M06U1R409\t4.9 Compleix les normes de prevenció de riscos laborals (incloses les de seguretat davant el risc elèctric) i de protecció ambiental.", "M06U1R410\t4.10 Respecta els criteris de qualitat.", "M06U1R411\t4.11 Organitza les diferents fases del treball en les operacions de muntatge de panells solars fotovoltaics.", "M06U1R412\t4.12 Manté l’àrea de treball, les eines, estris i equips amb el grau apropiat ordre, conservació i netedat.", "M06U1R500\t5. Reconeix les condicions de connexió a la xarxa de les instal·lacions solars fotovoltaiques atenent a la normativa.", "M06U1R501\t5.1 Elabora un informe de sol·licitud de connexió a la xarxa.", "M06U1R502\t5.2 Descriu les pertorbacions que es poden provocar a la xarxa i a la instal·lació.", "M06U1R503\t5.3 Identifica les proteccions específiques.", "M06U1R504\t5.4 Descriu les proves de funcionament del convertidor.", "M06U1R505\t5.5 Reconeix la composició del conjunt de mesura de consum.", "M06U1R506\t5.6 Aplica la normativa vigent.", "M06U1R507\t5.7 Mostra autonomia i resol satisfactòriament els problemes que se li presenten.", "M06U1R600\t6. Aplica les normes de prevenció de riscos laborals i de protecció ambiental en el muntatge i manteniment d’instal·lacions solars fotovoltaiques, identificant-hi els riscos associats, les mesures i equips per prevenir-los.", "M06U1R601\t6.1 Identifica els riscos laborals en les tasques de muntatge i manteniment d'instal·lacions solars fotovoltaiques (manipulació de materials, equips, eines, estris,màquines, bateries, realització de proves i verificacions d’instal·lacions, reparaciói subst", "M06U1R602\t6.2 Determina les mesures de seguretat i de protecció personal que s'han d'adoptar en cada cas.", "M06U1R603\t6.3 Identifica les possibles fonts de contaminació de l’entorn ambiental.", "M06U1R604\t6.4 Valora l’ordre i la netedat d’instal·lacions i equips com a primer factor de prevenció de riscos.", "M06U2R100\t1. Manté instal·lacions solars fotovoltaiques aplicant tècniques de prevenció i detecció i relacionant la disfunció amb la causa que la produeix.", "M06U2R101\t1.1 Mesura els paràmetres de funcionament.", "M06U2R102\t1.2 Neteja els panells.", "M06U2R103\t1.3 Revisa l’estat de l’estructura de suport.", "M06U2R104\t1.4 Comprova l’estat de les bateries.", "M06U2R105\t1.5 Fórmula hipòtesis de les possibles causes de l’avaria i la seva repercussió en la instal·lació.", "M06U2R106\t1.6 Localitza el subsistema, equip o element responsable de la disfunció o avaria.", "M06U2R107\t1.7 Substitueix o repara els components causants de l’avaria.", "M06U2R108\t1.8 Verifica la compatibilitat de l’element instal·lat.", "M06U2R109\t1.9 Restableix les condicions de funcionament de l’equip o de la instal·lació.", "M06U2R110\t1.10 Compleix les normes de prevenció de riscos laborals (incloses les de seguretat davant el risc elèctric) i de protecció ambiental.", "M06U2R111\t1.11 Respecta els criteris de qualitat.", "M06U2R112\t1.12 Mostra autonomia i resol satisfactòriament els problemes que se li presenten.", "M07UF1R100\t1. Elabora documentació tècnica de transformadors relacionant símbols normalitzats i representant gràficament elements i procediments.", "M07UF1R101\t1.1 Dibuixa croquis i plànols dels transformadors i els seus bobinats.", "M07UF1R102\t1.2 Dibuixa esquemes de plaques de borns, connexions i debanats segonsnormes.", "M07UF1R103\t1.3 Realitza esquemes de maniobres i assajos de transformadors.", "M07UF1R104\t1.4 Utilitza programari de disseny per realitzar esquemes.", "M07UF1R105\t1.5 Utilitza simbologia normalitzada.", "M07UF1R106\t1.6 Redacta documentació tècnica diversa.", "M07UF1R107\t1.7 Analitza documents convencionals utilitzats en el manteniment de transformadors.", "M07UF1R108\t1.8 Realitza un informe de treball tipus.", "M07UF1R109\t1.9 Realitza un pla de muntatge i un de manteniment de transformadors.", "M07UF1R110\t1.10 Respecta els temps previstos en els dissenys.", "M07UF1R111\t1.11 Respecta els criteris de qualitat establerts.", "M07UF1R200\t2. Munta transformadors monofàsics i trifàsics, acoblant-ne els elements i verificant-ne el funcionament.", "M07UF1R201\t2.1 Selecciona el material de muntatge segons càlculs, esquemes i especificacions del fabricant.", "M07UF1R202\t2.2 Selecciona les eines i equips adequats a cada procediment.", "M07UF1R203\t2.3 Identifica cada peça de la màquina i el seu acoblament.", "M07UF1R204\t2.4 Realitza els bobinatges del transformador.", "M07UF1R205\t2.5 Connecta els debanats primaris i secundaris a la placa de borns.", "M07UF1R206\t2.6 Munta el nucli magnètic.", "M07UF1R207\t2.7 Acobla tots els elements de la màquina.", "M07UF1R208\t2.8 Prova el seu funcionament realitzant assajos habituals.", "M07UF1R209\t2.9 Compleix les normes de prevenció de riscos laborals (incloses les de seguretat davant el risc elèctric) i de protecció ambiental.", "M07UF1R210\t2.10 Respecta els temps previstos en els processos.", "M07UF1R211\t2.11 Utilitza catàlegs de fabricants per a la selecció del material.", "M07UF1R212\t2.12 Respecta criteris de qualitat.", "M07UF1R213\t2.13 Organitza les diferents fases del treball en les operacions de muntatge detransformadors.", "M07UF1R214\t2.14 Manté l’àrea de treball, les eines, estris i equips amb el grau apropiatd’ordre, conservació i netedat.", "M07UF1R215\t2.15 Col·labora amb l’equip de treball amb una actitud responsable, respectuosai tolerant.", "M07UF1R300\t3. Repara avaries en transformadors, realitzant comprovacions i ajustos per a la posada en servei.", "M07UF1R301\t3.1 Classifica avaries característiques i els seus símptomes en petits transformadors monofàsics, trifàsics i autotransformadors.", "M07UF1R302\t3.2 Utilitza mitjans i equips de localització i reparació d’avaries.", "M07UF1R303\t3.3 Localitza l’avaria i n’identifica les solucions possibles.", "M07UF1R304\t3.4 Desenvolupa un pla de treball per a la reparació d’avaries.", "M07UF1R305\t3.5 Realitza operacions de manteniment.", "M07UF1R306\t3.6 Realitza mesures elèctriques per a la localització d’avaries.", "M07UF1R307\t3.7 Verifica el funcionament de la màquina mitjançant assajos.", "M07UF1R308\t3.8 Compleix les normes de prevenció de riscos laborals (incloses les de seguretat davant el risc elèctric) i de protecció ambiental.", "M07UF1R309\t3.9 Respecta els temps previstos en els processos.", "M07UF1R310\t3.10 Respecta criteris de qualitat.", "M07UF1R311\t3.11 Mostra autonomia i resol satisfactòriament els problemes que es presenten.", "M07UF1R400\t4. Aplica les normes de prevenció de riscos laborals i de protecció ambientalen el muntatge i manteniment de màquines elèctriques, identificant-ne els riscosassociats, les mesures i equips per prevenir-los.", "M07UF1R401\t4.1 Identifica els riscos laborals en les tasques de muntatge i manteniment demàquines elèctriques (manipulació de materials, equips, eines, estris, màquines,realització de proves i verificacions, reparació i substitució d’elements, entre d’altres).", "M07UF1R402\t4.2 Determina les mesures de seguretat i de protecció personal que s’hand’adoptar en cada cas.", "M07UF1R403\t4.3 Identifica les possibles fonts de contaminació de l’entorn ambiental.", "M07UF1R404\t4.4 Valora l’ordre i la netedat d’instal·lacions i equips com a primer factor deprevenció de riscos.", "M07UF2R100\t1. Elabora documentació tècnica de màquines elèctriques rotatives de corrent continu relacionant símbols normalitzats i representant gràficament elements i procediments.", "M07UF2R101\t1.1 Dibuixa croquis i plànols de les màquines elèctriques rotatives de corrent continu i els seus bobinatges.", "M07UF2R102\t1.2 Dibuixa esquemes de plaques de borns, connexions i debanats segons normes.", "M07UF2R103\t1.3 Realitza esquemes de maniobres i assajos de màquines elèctriques rotatives de corrent continu.", "M07UF2R104\t1.4 Utilitza programari informàtic de disseny per realitzar esquemes.", "M07UF2R105\t1.5 Utilitza simbologia normalitzada.", "M07UF2R106\t1.6 Redacta documentació tècnica diversa.", "M07UF2R107\t1.7 Analitza documents convencionals utilitzats en el manteniment de màquines elèctriques rotatives de corrent continu.", "M07UF2R108\t1.8 Realitza un informe de treball tipus.", "M07UF2R109\t1.9 Realitza un pla de muntatge i un de manteniment de màquines elèctriques rotatives de corrent continu.", "M07UF2R110\t1.10 Respecta els temps previstos en els dissenys.", "M07UF2R111\t1.11 Respecta els criteris de qualitat establerts.", "M07UF2R200\t2. Munta màquines elèctriques rotatives de corrent continu, acoblant-ne els elements i verificant-ne el funcionament.", "M07UF2R201\t2.1 Selecciona el material de muntatge, les eines i els equips.", "M07UF2R202\t2.2 Identifica cada peça de la màquina i el seu acoblament.", "M07UF2R203\t2.3 Utilitza les eines i equips característics d’un taller de bobinatge.", "M07UF2R204\t2.4 Realitza bobines de la màquina rotativa de corrent continu.", "M07UF2R205\t2.5 Acobla bobines i altres elements de les màquines de corrent continu.", "M07UF2R206\t2.6 Connecta els bobinatges rotòric i estatòric.", "M07UF2R207\t2.7 Munta les escombretes i el col·lector connectant-los als seus borns.", "M07UF2R208\t2.8 Prova el seu funcionament realitzant assajos habituals.", "M07UF2R209\t2.9 Compleix les normes de prevenció de riscos laborals (incloses les de seguretat davant el risc elèctric) i de protecció ambiental.", "M07UF2R210\t2.10 Respecta els temps previstos en els processos.", "M07UF2R211\t2.11 Utilitza catàlegs de fabricants per a la selecció del material.", "M07UF2R212\t2.12 Respecta criteris de qualitat.", "M07UF2R213\t2.13 Organitza les diferents fases del treball en les operacions de muntatge de màquines elèctriques rotatives de corrent continu.", "M07UF2R214\t2.14 Manté l’àrea de treball, les eines, estris i equips amb el grau apropiat ordre, conservació i netedat.", "M07UF2R215\t2.15 Col·labora amb l’equip de treball amb actitud responsable, respectuosa i tolerant.", "M07UF2R300\t3. Manté i repara màquines elèctriques rotatives de corrent continu realitzat comprovacions i ajustos per a la posada en servei.", "M07UF2R301\t3.1 Classifica avaries característiques i els seus símptomes en màquines elèctriques rotatives de corrent continu.", "M07UF2R302\t3.2 Utilitza mitjans i equips de localització d’avaries.", "M07UF2R303\t3.3 Localitza l’avaria i proposa possibles solucions.", "M07UF2R304\t3.4 Desenvolupa un pla de treball per a la reparació d’avaries.", "M07UF2R305\t3.5 Realitza mesures elèctriques per a la localització d’avaries.", "M07UF2R306\t3.6 Repara l’avaria.", "M07UF2R307\t3.7 Verifica el funcionament de la màquina mitjançant assajos.", "M07UF2R308\t3.8 Substitueix escombretes, coixinets, entre d’altres.", "M07UF2R309\t3.9 Compleix les normes de prevenció de riscos laborals (incloses les de seguretat davant el risc elèctric) i de protecció ambiental.", "M07UF2R310\t3.10 Respecta els temps previstos en els processos.", "M07UF2R311\t3.11 Respecta criteris de qualitat.", "M07UF2R312\t3.12 Mostra autonomia i resol satisfactòriament els problemes que es presenten.", "M07UF2R400\t4. Realitza maniobres característiques en màquines elèctriques rotatives decorrent continu, interpretant esquemes i aplicant tècniques de muntatge.", "M07UF2R401\t4.1 Prepara eines i equips.", "M07UF2R402\t4.2 Acobla mecànicament les màquines de corrent continu.", "M07UF2R403\t4.3 Munta circuits de comandament i força per a les maniobres d’arrencada,inversió, entre d’altres.", "M07UF2R404\t4.4 Connecta les màquines de corrent continu als diferents circuits.", "M07UF2R405\t4.5 Mesura magnituds elèctriques.", "M07UF2R406\t4.6 Analitza resultats de paràmetres mesurats.", "M07UF2R407\t4.7 Té en compte la documentació tècnica.", "M07UF2R408\t4.8 Compleix les normes de prevenció de riscos laborals (incloses les de seguretat davant el risc elèctric) i de protecció ambiental.", "M07UF2R409\t4.9 Respecta els temps previstos en els processos.", "M07UF2R410\t4.10 Respecta criteris de qualitat.", "M07UF2R411\t4.11 Elabora un informe de les activitats realitzades i resultats obtinguts.", "M07UF2R412\t4.12 Organitza les diferents fases del treball en la realització de maniobres de màquines elèctriques rotatives de corrent continu.", "M07UF3R100\t1. Elabora documentació tècnica de màquines elèctriques rotatives de corrent altern relacionant símbols normalitzats i representant gràficament elements i procediments.", "M07UF3R101\t1.1 Dibuixa croquis i plànols de les màquines elèctriques rotatives de corrent altern i els seus bobinatges.", "M07UF3R102\t1.2 Dibuixa esquemes de plaques de borns, connexions i debanats segons les normes corresponents.", "M07UF3R103\t1.3 Realitza esquemes de maniobres i assajos de màquines elèctriques rotatives de corrent altern.", "M07UF3R104\t1.4 Utilitza programari de disseny per realitzar esquemes.", "M07UF3R105\t1.5 Utilitza simbologia normalitzada.", "M07UF3R106\t1.6 Redacta documentació tècnica diversa.", "M07UF3R107\t1.7 Analitza documents convencionals utilitzats en el manteniment de màquines elèctriques rotatives de corrent altern.", "M07UF3R108\t1.8 Realitza un informe de treball tipus.", "M07UF3R109\t1.9 Realitza un pla de muntatge i un de manteniment de màquines elèctriques rotatives de corrent altern.", "M07UF3R110\t1.10 Respecta els temps previstos en els dissenys.", "M07UF3R111\t1.11 Respecta els criteris de qualitat establerts.", "M07UF3R200\t2. Munta màquines elèctriques rotatives de corrent altern, acoblant-ne els elements i verificant el funcionament.", "M07UF3R201\t2.1 Selecciona el material de muntatge, les eines i els equips.", "M07UF3R202\t2.2 Identifica cada peça de la màquina i el seu acoblament.", "M07UF3R203\t2.3 Utilitza les eines i equips característics d’un taller de bobinatge.", "M07UF3R204\t2.4 Realitza bobines de la màquina rotativa de corrent altern.", "M07UF3R205\t2.5 Acobla bobines i altres elements de les màquines de corrent altern.", "M07UF3R206\t2.6 Connecta els bobinatges rotòric i estatòric.", "M07UF3R207\t2.7 Munta les escombretes i anells lliscants connectant-los als borns.", "M07UF3R208\t2.8 Prova el seu funcionament realitzant els assaigs habituals.", "M07UF3R209\t2.9 Compleix les normes de prevenció de riscos laborals (incloses les de seguretat davant el risc elèctric) i de protecció ambiental.", "M07UF3R210\t2.10 Respecta els temps previstos en els processos.", "M07UF3R211\t2.11 Utilitza catàlegs de fabricants per a la selecció del material.", "M07UF3R212\t2.12 Respecta criteris de qualitat.", "M07UF3R213\t2.13 Organitza les diferents fases del treball en les operacions de muntatge de màquines rotatives de corrent altern.", "M07UF3R214\t2.14 Manté l’àrea de treball, les eines, estris i equips amb el grau apropiat ordre, conservació i netedat.", "M07UF3R215\t2.15 Col·labora amb l’equip de treball amb una actitud responsable, respectuosa i tolerant.", "M07UF3R300\t3. Manté i repara màquines elèctriques rotatives de corrent altern realitzat comprovacions i ajustos per a la posada en servei.", "M07UF3R301\t3.1 Classifica avaries característiques i els seus símptomes en màquines elèctriques rotatives de corrent altern.", "M07UF3R302\t3.2 Utilitza mitjans i equips de localització d’avaries.", "M07UF3R303\t3.3 Localitza l’avaria i hi proposa possibles solucions.", "M07UF3R304\t3.4 Desenvolupa un pla de treball per a la reparació d’avaries.", "M07UF3R305\t3.5 Realitza mesures elèctriques per a la localització d’avaries.", "M07UF3R306\t3.6 Repara l’avaria.", "M07UF3R307\t3.7 Verifica el funcionament de la màquina mitjançant assajos.", "M07UF3R308\t3.8 Substitueix escombretes, coixinets, entre d’altres.", "M07UF3R309\t3.9 Compleix les normes de prevenció de riscos laborals (incloses les de seguretat davant el risc elèctric) i de protecció ambiental.", "M07UF3R310\t3.10 Respecta els temps previstos en els processos.", "M07UF3R311\t3.11 Respecta criteris de qualitat.", "M07UF3R312\t3.12 Mostra autonomia i resol satisfactòriament els problemes que es presenten.", "M07UF3R400\t4. Realitza maniobres característiques en màquines elèctriques rotatives decorrent altern, interpretant esquemes i aplicant tècniques de muntatge.", "M07UF3R401\t4.1 Prepara eines i equips.", "M07UF3R402\t4.2 Acobla mecànicament les màquines de corrent altern.", "M07UF3R403\t4.3 Munta circuits de comandament i força per a les maniobres d’arrencada i inversió, entre d’altres.", "M07UF3R404\t4.4 Connecta les màquines de corrent altern als diferents circuits.", "M07UF3R405\t4.5 Mesura magnituds elèctriques.", "M07UF3R406\t4.6 Analitza resultats de paràmetres mesurats.", "M07UF3R407\t4.7 Té en compte la documentació tècnica.", "M07UF3R408\t4.8 Compleix les normes de prevenció de riscos laborals (incloses les de seguretat davant el risc elèctric) i de protecció ambiental.", "M07UF3R409\t4.9 Respecta els temps previstos en els processos.", "M07UF3R410\t4.10 Respecta criteris de qualitat.", "M07UF3R411\t4.11 Elabora un informe de les activitats realitzades i resultats obtinguts.", "M07UF3R412\t4.12 Organitza les diferents fases del treball en la realització de maniobres de màquines rotatives de corrent altern." ] # Function to find and return the matching second columns def find_matching_columns(values): matching_columns = [] for value in values: target_value = "".join(modulUF) + "R" + value for entry in data: if entry.startswith(target_value): matching_columns.append(entry.split('\t')[1]) break return matching_columns # Find and print matching second columns matching_columns = find_matching_columns(values_to_search) if matching_columns: print("\nMatching second columns:") for column in matching_columns: print(column) else: print("\nNo matches found.")

jueves, 7 de septiembre de 2023

Chrome Webdriver (solved from August 2023)

https://stackoverflow.com/questions/72868256/chromedrivermanager-install-doesnt-work-webdriver-manager https://pypi.org/project/webdriver-manager/

viernes, 25 de agosto de 2023

Excel - Label text linked to cells

Dim counter As Integer

Sub InsertCellTextIntoTextbox()
    counter = counter + 1
    Dim ws As Worksheet
    Set ws = ActiveSheet
    
    Dim xCoord As Double
    Dim yCoord As Double
    
    ' Get the coordinates of the active cell
    xCoord = ActiveCell.Left
    yCoord = ActiveCell.Top
    
    Dim shp As Shape
    Set shp = ws.Shapes.AddTextbox(Orientation:=msoTextOrientationHorizontal, _
                                Left:=xCoord, Top:=yCoord, Width:=100, Height:=30)
    
    ' Get the text from the cell corresponding to the counter value
    shp.TextFrame.Characters.Text = ws.Cells(counter, 1).Value
    
    shp.TextFrame.Characters.Font.Size = 16
    shp.TextFrame.Characters.Font.Bold = True
End Sub

Sub AssignShortcutKey()
    Application.OnKey "^+B", "InsertCellTextIntoTextbox" ' Ctrl + Shift + B
End Sub
 

Excel - Label insert When Ctrl+Shift+B

 Dim counter As Integer

Sub InsertIncrementedLabel()
    counter = counter + 1
    Dim ws As Worksheet
    Set ws = ActiveSheet
    
    Dim xCoord As Double
    Dim yCoord As Double
    
    ' Get the coordinates of the active cell
    xCoord = ActiveCell.Left
    yCoord = ActiveCell.Top
    
    Dim shp As Shape
    Set shp = ws.Shapes.AddTextbox(Orientation:=msoTextOrientationHorizontal, _
                                Left:=xCoord, Top:=yCoord, Width:=100, Height:=30)
    shp.TextFrame.Characters.Text = "Label " & counter
    shp.TextFrame.Characters.Font.Size = 16
    shp.TextFrame.Characters.Font.Bold = True
End Sub

Sub AssignShortcutKey()
    Application.OnKey "^+B", "InsertIncrementedLabel" ' Ctrl + Shift + B
End Sub



miércoles, 26 de julio de 2023

Levenstein a EXCEL

 Function Levenshtein(ByVal string1 As String, ByVal string2 As String) As Long

Dim i As Long, j As Long
Dim string1_length As Long
Dim string2_length As Long
Dim distance() As Long

string1_length = Len(string1)
string2_length = Len(string2)
ReDim distance(string1_length, string2_length)

For i = 0 To string1_length
    distance(i, 0) = i
Next

For j = 0 To string2_length
    distance(0, j) = j
Next

For i = 1 To string1_length
    For j = 1 To string2_length
        If Asc(Mid$(string1, i, 1)) = Asc(Mid$(string2, j, 1)) Then
            distance(i, j) = distance(i - 1, j - 1)
        Else
            distance(i, j) = Application.WorksheetFunction.Min _
            (distance(i - 1, j) + 1, _
             distance(i, j - 1) + 1, _
             distance(i - 1, j - 1) + 1)
        End If
    Next
Next

Levenshtein = distance(string1_length, string2_length)

End Function


lunes, 24 de julio de 2023

Drag a txt file to Chrome. Two columns in txt file, tab separated, have values to Levenstein comparison (all from 1st col to all 2nd col)

// Function to calculate Levenshtein distance between two strings
function levenshteinDistance(str1, str2) {
  // Create a 2D array to store the distances
  const dp = Array.from({ length: str1.length + 1 }, () => Array(str2.length + 1).fill(0));

  // Initialize the array with base cases
  for (let i = 0; i <= str1.length; i++) {
    for (let j = 0; j <= str2.length; j++) {
      if (i === 0) dp[i][j] = j;
      else if (j === 0) dp[i][j] = i;
      else {
        const cost = str1[i - 1] === str2[j - 1] ? 0 : 1;
        dp[i][j] = Math.min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + cost);
      }
    }
  }

  return dp[str1.length][str2.length];
}


// Main function to calculate Levenshtein distances and copy results to clipboard
function calculateLevenshteinDistances() {
  // Get the content of the current tab
  const result = document.evaluate('/html/body/pre', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
  const preElement = result.singleNodeValue;
  const content = preElement ? preElement.textContent.trim() : '';

  const rows = content.split('\n');

  // Assuming the headers are present in the first row, you can extract them like this:
  const [header1, header2] = rows.shift().split('\t');

  // Use the Clipboard API to copy the header row to clipboard
  let clipboardData = `${header1}\t${header2}\tLevenshteinDistancesCalculated\n`;

  // Use the Clipboard API to append each row of data to clipboard
  for (let i = 0; i < rows.length; i++) {
    const [column1Value, column2Value] = rows[i].split('\t');

    if (column1Value !== '-' && column2Value !== '-') {
      for (let j = 0; j < rows.length; j++) {
        const [column1ValueToCompare, column2ValueToCompare] = rows[j].split('\t');

        if (column1ValueToCompare !== '-' && column2ValueToCompare !== '-') {
          const distance = levenshteinDistance(column1Value, column2ValueToCompare);
          clipboardData += `${column1Value}\t${column2ValueToCompare}\t${distance}\n`;
        }
      }
    }

    // Send a progress message to the console after each row is processed
    console.log(`Processing row ${i + 1} of ${rows.length}`);
  }

  // Copy the final clipboardData to the clipboard
  copyToClipboard(clipboardData);

  // Send completion message to the console
  console.log('Levenshtein distance calculations completed.');
}

// Function to copy text to clipboard
function copyToClipboard(text) {
  const el = document.createElement('textarea');
  el.value = text;
  document.body.appendChild(el);
  el.select();
  document.execCommand('copy');
  document.body.removeChild(el);

  console.log('Data copied to clipboard.');
}

// Call the function to execute the code
calculateLevenshteinDistances();


lunes, 17 de julio de 2023

Get a list of unique words sorted alphabetically from drag txt file

 const result = document.evaluate('/html/body/pre', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
const preElement = result.singleNodeValue;
const content = preElement ? preElement.textContent.trim() : '';

// Split the content into an array of words
const words = content.split(/\s+/);

// Create a Set to store unique words
const uniqueWords = new Set(words);

// Convert the Set back to an array and sort it alphabetically
const sortedWords = Array.from(uniqueWords).sort();

console.log('Content:', content);
console.log('Word Count:', words.length);
console.log('Unique Words:', sortedWords);

// Open a new tab with the sorted words
const newTab = window.open('');
newTab.document.write('<html><head>');
newTab.document.write('<style>body { font-family: Consolas; font-size: 10pt; }</style>');
newTab.document.write('</head><body>');
newTab.document.write('<h1>Sorted Words</h1>');
newTab.document.write('<ul>');
sortedWords.forEach((word) => {
  newTab.document.write(`<li>${word}</li>`);
});
newTab.document.write('</ul>');
newTab.document.write('</body></html>');
newTab.document.close();


Drag the txt file in Chrome and refer to it as Content object

const result = document.evaluate('/html/body/pre', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);

const preElement = result.singleNodeValue;

const content = preElement ? preElement.textContent.trim() : '';

console.log('Content:', content);

lunes, 12 de junio de 2023

Variaciones con repetición 2 elementos para cuatro espacios

 function generateCombinations(gaps, currentCombination = '') {
  if (gaps === 0) {
    return currentCombination + '<br>';
  }

  const combinations = [];
  combinations.push(...generateCombinations(gaps - 1, currentCombination + 'C'));
  combinations.push(...generateCombinations(gaps - 1, currentCombination + '+'));

  return combinations;
}

// Generate combinations for 4 gaps
const combinations = generateCombinations(4);

// Open a new window with the results
const newWindow = window.open();
newWindow.document.write('<html><body>');
newWindow.document.write('<pre>' + combinations.join('') + '</pre>');
newWindow.document.write('</body></html>');
newWindow.document.close();


viernes, 9 de junio de 2023

X Y pointer position on Chrome

 // Create the rectangle element
var rectangle = document.createElement("div");
rectangle.style.position = "fixed";
rectangle.style.top = "50px";
rectangle.style.left = "50px";
rectangle.style.width = "200px";
rectangle.style.height = "100px";
rectangle.style.backgroundColor = "rgba(0, 0, 0, 0.5)";
rectangle.style.color = "#fff";
rectangle.style.padding = "10px";
rectangle.style.fontFamily = "Arial";
rectangle.style.fontSize = "16px";
rectangle.style.zIndex = "9999";

// Append the rectangle to the document body
document.body.appendChild(rectangle);

// Update the mouse position values in the rectangle
document.onmousemove = function(e) {
    var position = {
        x: e.clientX,
        y: e.clientY
    };
    rectangle.innerHTML = "Mouse Position: X = " + position.x + ", Y = " + position.y;
};


martes, 6 de junio de 2023

parágrafos del REBT que coinciden con una palabra "motor", se incluyen el parágrafo previo y el posterior, así como título

//https://www.boe.es/buscar/act.php?id=BOE-A-2002-18099

 function copyToClipboard(text) {
    const el = document.createElement('textarea');
    el.value = text;
    document.body.appendChild(el);
    el.select();
    document.execCommand('copy');
    document.body.removeChild(el);

    console.log('Data copied to clipboard.');
}

var headers = document.querySelectorAll('h3, h4, h5');
var plainText = '';

for (var i = 0; i < headers.length; i++) {
    var header = headers[i];
    var correspondingParagraph = header.nextElementSibling;
    var codeBefore = '';
    var codeAfter = '';

    while (correspondingParagraph) {
        if (
            correspondingParagraph.nodeName === 'P' &&
            correspondingParagraph.classList.length > 0 &&
            correspondingParagraph.textContent.includes('motor')
        ) {
            var prevSibling = correspondingParagraph.previousElementSibling;
            var nextSibling = correspondingParagraph.nextElementSibling;

            if (prevSibling && prevSibling.tagName === 'P') {
                codeBefore = prevSibling.textContent;
            }

            if (nextSibling && nextSibling.tagName === 'P') {
                codeAfter = nextSibling.textContent;
            }

            plainText += header.textContent + ':\n';
            plainText += codeBefore + '\n';
            plainText += correspondingParagraph.textContent + '\n';
            plainText += codeAfter + '\n';
            break;
        }
        correspondingParagraph = correspondingParagraph.nextElementSibling;
    }
}

copyToClipboard(plainText);


capítulos del REBT 842/2002 en los que se menciona "tierra" > to be run as prompt in Console DevTools

//https://www.boe.es/buscar/act.php?id=BOE-A-2002-18099
function copyToClipboard(text) {
    const el = document.createElement('textarea');
    el.value = text;
    document.body.appendChild(el);
    el.select();
    document.execCommand('copy');
    document.body.removeChild(el);

    console.log('Data copied to clipboard.');
}

var headers = document.querySelectorAll('h3, h4, h5');
var plainText = '';

for (var i = 0; i < headers.length; i++) {
    var header = headers[i];
    var correspondingParagraph = header.nextElementSibling;

    while (correspondingParagraph) {
        if (
            correspondingParagraph.nodeName === 'P' &&
            correspondingParagraph.classList.length > 0 &&
            correspondingParagraph.textContent.includes('tierra')
        ) {
            plainText += header.textContent + ': ' + correspondingParagraph.textContent + '\n';
            break;
        }
        correspondingParagraph = correspondingParagraph.nextElementSibling;
    }
}

copyToClipboard(plainText);


miércoles, 24 de mayo de 2023

List of labels whose checkmark is checked. Copy them in clipboard

(function() {
  var checkboxes = document.querySelectorAll('input[type="checkbox"]');
  var checkedLabels = [];

  checkboxes.forEach(function(checkbox) {
    if (checkbox.checked) {
      var label = checkbox.nextElementSibling;
      if (label && label.innerText) {
        checkedLabels.push(label.innerText);
      }
    }
  });

  // Copy the checked labels to the clipboard
  var textToCopy = checkedLabels.join('\n');
  var tempInput = document.createElement("textarea");
  document.body.appendChild(tempInput);
  tempInput.value = textToCopy;
  tempInput.select();
  document.execCommand("copy");
  document.body.removeChild(tempInput);

  console.log("Labels of checked checkboxes copied to clipboard.");
})();


Checkbox marked as string in a text label - DevTools in Chrome Snippet

 (function() {
  var checkboxes = document.querySelectorAll('input[type="checkbox"]');
  checkboxes.forEach(function(checkbox) {
    var label = checkbox.nextElementSibling;
    if (label && label.innerText.includes(")*_")) {
      checkbox.checked = true;
    }
  });
})();


miércoles, 26 de abril de 2023

SQL amb IIf imbricats Mid i InStr

 SELECT Mid(Sheet1.Field1,InStr(Sheet1.Field1,"; Di")+2,InStr(Sheet1.Field1,"h.;")-InStr(Sheet1.Field1,"; Di")) AS DiaHora, Mid(Sheet1.Field1,InStr(Sheet1.Field1,"; del "),InStr(Sheet1.Field1,"; Di")-InStr(Sheet1.Field1,"; del ")) AS DataData, Mid(Sheet1.Field1,InStr(Sheet1.Field1,"_M"),5) AS MP_UF_, 

IIf(InStr([Sheet1].[Field1], "IEA") > 0, 
IIf(  Mid([Sheet1].[Field1],InStr([Sheet1].[Field1],"IEA"),3)="IEA","IEA"), 

    IIf(InStr([Sheet1].[Field1], "GAD") > 0, 
IIf(  Mid([Sheet1].[Field1],InStr([Sheet1].[Field1],"GAD"),3)="GAD","GAD"),
 
    IIf(InStr([Sheet1].[Field1], "TAPSD") > 0, 
IIf(  Mid([Sheet1].[Field1],InStr([Sheet1].[Field1],"TAPSD"),3)="TAPSD","TAPSD"), 

    IIf(InStr([Sheet1].[Field1], "AFI") > 0, 
IIf(  Mid([Sheet1].[Field1],InStr([Sheet1].[Field1],"AFI"),3)="AFI","AFI"),

    IIf(InStr([Sheet1].[Field1], "EDI") > 0, 
IIf(  Mid([Sheet1].[Field1],InStr([Sheet1].[Field1],"EDI"),3)="EDI","EDI"),"")))))

AS Cicle1
FROM Sheet1;


viernes, 21 de abril de 2023

clic a un conjunto de botones a través de su xpath - DevTools Console

const elements = document.evaluate('//a[@class="answer flex items-center text-xl text-aac-orange hover:no-underline"]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);


for (let i = 0; i < elements.snapshotLength; i++) {

  const element = elements.snapshotItem(i);

  element.click();

}


jueves, 6 de abril de 2023

Open the Device Manager from the Run dialog box (Win+R)

 You can open the Device Manager from the Run dialog box (Win+R) by following these steps:

Press Win+R to open the Run dialog box.

Type "devmgmt.msc" (without the quotes) in the "Open" field and press Enter or click OK.

This will open the Device Manager window where you can view and manage the devices installed on your computer.

martes, 4 de abril de 2023

List of available cameras on computer

Get-CimInstance -ClassName Win32_PnpEntity | Where-Object {$_.Caption -like '*camera*'} | Select-Object Name, Caption

 

PowerTip: Use PowerShell to Discover Laptop Webcam

Doctor Scripto

Summary: Use Windows PowerShell to discover a webcam attached to your laptop.

Hey, Scripting Guy! Question How can I use Windows PowerShell to find a webcam or camera that is attached to my laptop?

Hey, Scripting Guy! Answer Use the Get-CimInstance or the Get-WmiObject cmdlet, examine the Win32_PnpEntity WMI class,
          and look for something that matches camera in the caption.

By using Get-CimInstance in Windows PowerShell 3.0 or later:

Get-CimInstance Win32_PnPEntity | where caption -match 'camera'

By using Get-WmiObject in Windows PowerShell 2.0:

Get-WmiObject Win32_PnPEntity | where {$_.caption -match 'camera'}

Note  Not all webcams populate exactly the same way, so it may take a bit of searching
to find the right string.