ivanadas
11/9/18
Obtener Certificación de tener Título Universitario
Pulsar en Buscar trámites.
En texto poner: “Consulta de títulos Universitarios Oficiales”.
Pulsamos Buscar.
Pulsamos Acceso.
En la siguiente página pulsamos Acceder
En DNI/Certificado Electrónico pulsamos Acceder
Vamos a la pestaña Autorizaciones.
En en Acciones pulsar sobre el icono de pdf.
21/2/18
Variables en SqlServer
En ocasiones es cómodo almacenar en una variable un valor si se van a hacer varias consultas. Siempre se puede repetir la consulta original pero a veces no tiene sentido.
Para hacer esto en SqlServer...
declare @idDeTrabajo int; select @idDeTrabajo = (select id from nuestraTabla where claveAlternativa like 'ED820');--sin paréntesis falla select * from Telefono where idTrabajo = @idDeTrabajo; select * from DireccionPostal where idTrabajo = @idTrabajo;
Subtabla separada por comas.
Explico el ejemplo:
- Tenemos una relación de muchos a muchos (Productos, Categorias)
- La pasamos a una relación de uno (Productos) a muchos (Categorías unida con ProductosCategorias)
- Mostramos la lista de productos con un campo que se extrae de la tabla de la parte muchos.
SELECT Productos.Nombre, STUFF( (SELECT ', ' + Categorias.Categoria FROM Categorias INNER JOIN ProductosCategorias ON ProductosCategorias.idCategoria = Categorias.idCategoria WHERE ProductosCategorias.idProducto = Productos.idProducto FOR XML PATH('')), 1, 2, '') As Categorias FROM Productos
1/2/18
Powershell. Problema al instalar paquetes npm que incluyen "@" arroba.
npm install @types/chai --save-dev
El comando powershell superior da un error "Símbolo (token) no reconocido en el texto de origen."
El problema está en la "@". En powershell el símbolo @ se usa para definir cosas que siguen como arrays, literales de más de una línea, etc. por lo que no funciona tal y como funcionaría en cmd.exe o shells de linux
Para solucionarlo en Powershell, hemos de poner entre comillas el paquete que incluya la @
npm install "@types/chai" --save-dev
9/1/18
Powershell. Que no trunque las propiedades al mostrarlas.
Buscar todos los directorios y ficheros que contengan "Test" y guarda la ruta completa.
dir -Recurse *Test* | select fullname |Out-File -width 230 .\borrame.test.txtLos pasos son:
- Buscar Test
- Selecciona el nombre completo
- Lo pasa a un fichero "borrame.test.txt" con una anchura de 230 caracteres (donde en principio suponemos que entrará la cadena)
Me edito a mi mismo. Hay una solución mejor.
Si en lugar de "select fullname" escribirmos "% fullname", pasa a la línea siguiente sin problemas. tendríamos:
dir -recurse *.* | % fullnameNos mostrará todos los ficheros, con la ruta completa y uno por línea, si se pasa de una línea lo pone en 2.
Además si al final ponemos " | clip ". Nos lo copiará al portapapeles.
dir -recurse *.* | % fullname | clip
27/11/17
Scrapping con C#. Listas de Contratación Temporal de la Xunta.
url es la variable con la url a scrapear //valga el palabro
"//td[@align='left']" es una expresión xpath que devolvería los TD con alineación izquierda
Para hacer el scrapping con cSharp usamos ScrapySharp
Hay ejemplo completo en GitHub aquí
Código:
ScrapingBrowser Browser = new ScrapingBrowser(); Browser.UserAgent = new FakeUserAgent("primero", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"); Browser.AllowAutoRedirect = true; // Browser has settings you can access in setup Browser.AllowMetaRedirect = true; WebPage PageResult = await Browser.NavigateToPageAsync(new Uri(url)); IEnumerableTDs = PageResult.Html.SelectNodes("//td[@align='left']"); this.lNombre.Clear(); foreach (HtmlNode item in TDs) { this.lContenidosTDs.Add(item.InnerText); }
22/11/17
Comprobación de Consulta das Listas de Vinculación Temporal Decreto 37/2006. Javascrip
const fileName = "./personas.json";
const Horseman = require("node-horseman");
const cheerio = require('cheerio')
const fs = require('fs');
var horseman = new Horseman();
var Personas = [];
var PersonasAnteriores;
var grabarFichero = false;
function GestionDeParametros(params){
if(params.length == 3){// así es que se envía un parámetro
grabarFichero = true;
}
}
function getPersonas(body) {
var $ = cheerio.load(body);
//$(".taboadatos TD");
var columna = 0;
$('.taboadatos TD').each(function () {
columna++;
if (columna === 1) {
Personas.push($(this).text());
}
if (columna === 4) {
columna = 0;
}
});
if(grabarFichero){
fs.writeFileSync(fileName,JSON.stringify(Personas),'utf-8');
}
var i = 0;
console.log("LISTA DE CAMBIOS DE LAS LISTAS DEL B SEGÚN FICHERO: " + fileName);
console.log("===================================================");
Personas.forEach(element => {
if (element === PersonasAnteriores[i]) {
console.log("" + (i + 1) + ": (IGUALES) " + element);
} else {
console.log("" + (i + 1) + ": (DIFERENTES) " + element + '///' + PersonasAnteriores[i]);
}
i++;
});
}
function ShowPersonas(per) {
console.log(per);
}
function CargarPersonasAnteriores() {
try {
PersonasAnteriores = JSON.parse(fs.readFileSync(fileName, 'utf-8'));
} catch (err) {
console.error(err);
console.error("No existe el fichero generelo con: ***");
}
}
GestionDeParametros(process.argv);
CargarPersonasAnteriores();
horseman
.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0")
.open('http://www.xunta.es/rcp/listas/rcp_li05/li05_lista_ambito_sel.jsp?rcpCOD_LISTA=76&rcpCOD_AMBITO=U0000&rcpDES_AMBITO=AMBITO%20AUTON%D3MICO&lang=gl')
.waitForSelector("TD")
.html()
.then(function (body) {
getPersonas(body)
horseman.close();
})
;
20/11/17
Test. Clase de ayuda para envío de pulsaciones de teclas.
SSk: Static Send Keys.
Es un envoltorio para facilitar el uso de la función "SendKeys.SendWait(string keys)" y algunas utilidades más como introducir un tiempo de espera entre pulsación y pulsación. También permite generar apropósito tiempo de espera (Tread.Sleep(miliseconds)) y facilita el envío de algunas teclas especiales.
Se encuentra en github como parte del proyecto Utils pero es, de momento, muy independiente y no necesita nada del resto del proyecto.
https://github.com/IvanCruzFraguela/UtilNs/blob/master/Test/SSk.cs