ingobernable / kaos155 Goto Github PK
View Code? Open in Web Editor NEWPrograma de analisis de Contratación con la administración pública y relaciones societarias en España.
License: GNU General Public License v3.0
Programa de analisis de Contratación con la administración pública y relaciones societarias en España.
License: GNU General Public License v3.0
Como obtenemos nuestros datos de fuentes accesibles al público, para no tener problemas, quizás deberíamos avisarlo de la misma manera que lo hace el Libreborme en un párrafo dentro de su Aviso Legal:
Limitación de responsabilidad
La información que muestra LibreBORME se ha obtenido de fuentes accesibles al público y cuyos datos se presumen correctos. Debido a que la recopilación de los datos es un proceso informático automatizado y a que la enorme cantidad de datos hace imposible su completa verificación, LibreBORME no asume responsabilidad alguna por errores, inexactitudes u omisiones de la información facilitada.
El USUARIO no podrá exigir responsabilidad alguna por los daños y perjuicios derivados de errores y/o incorrección y/o inexactitud en la información suministrada y acepta que la información suministrada en la PAGINA WEB se ofrece con carácter orientativo.
El USUARIO es el único responsable de las infracciones en las que pueda incurrir o de los perjuicios que pueda causar o causarse por la utilización de la PAGINA WEB, quedando LibreBORME, exonerado de cualquier clase de responsabilidad que se pudiera derivar por las acciones del USUARIO.
De momento usamos MySQL pero se esta preparando pasar a ElasticSearch (ES).
A mi me preocupa que ES no sea ACID-compliant, he leido mucha gente usando MySQL como BBDD principal y ES como motor de busqueda (FULL TEXT).
Conoceis Percona y TokuDB? Dicen que permite aumentar la velocidad de MySQL por un orden de 10 a 100, manteniendo todo ACID-compliant.. Parece ser el módulo BigData de MySQL.
https://www.percona.com/software/mysql-database/percona-server/feature-comparison
Saludos
varias incidencias con respecto a los commit:
propuesta de soluciones:
development
(normalmente esta rama se conoce como dev
)dev
dev
sea rama por defecto! (ayudará a que cojamos costumbre de trabajar contra dev
siguiente nivel:
master
. Se rechaza y se pide que se haga el pull request a dev
.OJO BUSCAMOS LOS SUMARIOS y como hacer una rutina para sistematizar el proceso
buscar las lógicas en las distintas comunidades autónomas
ANDALUCIA : http://www.juntadeandalucia.es/boja
ASTURIAS : https://sede.asturias.es
ARAGON : http://www.boa.aragon.es/
BALEARES : http://www.caib.es/boib/
CANARIAS : http://www.gobiernodecanarias.org/boc/
CANTABRIA : https://boc.cantabria.es/boces/
CASTILLA LA MANCHA : http://docm.castillalamancha.es/portaldocm/sumario.do
CASTILLA Y LEON : http://bocyl.jcyl.es/
CATALUÑA : http://dogc.gencat.cat/ca
EXTREMADURA: http://doe.gobex.es/
GALICIA : https://www.xunta.gal/diario-oficial-galicia/
LA RIOJA : http://www.larioja.org/bor/es
MADRID : http://www.bocm.es/ INCORPORADO YA
MURCIA : https://www.borm.es/borm/vista/principal/inicio.jsf
NAVARRA: http://www.navarra.es/home_es/Actualidad/BON/
PAIS VASCO: https://www.euskadi.eus/y22-bopv/es/bopv2/datos/Ultimo.shtml
VALENCIA:http://www.dogv.gva.es/inici#IniciUltimDogv
CEUTA:http://www.ceuta.es/ceuta/documentos/
MELILLA:http://www.melilla.es/melillaportal/contenedor.jsp?seccion=bome.jsp&language=es&codResi=1&layout=contenedor.jsp&codAdirecto=15
documentación
http://pinchito.es/2013/modo-cluster.html
Os habeis fijado que hay casos en que hay sociedades absorbidas dentro del sumario, y otras dentro de los "sub-documentos" del mismo sumario?! Ver este caso:
https://boe.es/borme/dias/2016/10/07/pdfs/BORME-A-2016-193-02.pdf (absorbente: ACEITES JUNIO)
.. que es un sub-documento de este sumario (buscar "BORME-A-2016-193-02" en el para comprobarlo!):
https://boe.es/diario_borme/xml.php?id=BORME-S-20161007
.. y este sumario lleva absorpciones todo abajo, pero no la de "ACEITES JUNIO", aunque sí este dentro de uno de sus sub-documentos.
Entendeis porque hay absorpciones decladas en el sumario, mientras otras lo son dentro de sus sub-documentos?! Cual es la diferencia para que aparezcan en uno o en otro?
Gracias!
Ya había terminado BOE (BOE correcto) pero me falla en BOCM
He lanzado varios años al mismo tiempo y ahora solo me funciona el 2017
Aparte del fallo, ¿hay forma de poder forzar a que rehaga el proceso sin borrar TODAS las tablas?
nota: me da el mismo fallo en varios años
MySQL IP:localhost
PROCESS:BOCM
Anyo:2011
new connection BOCM mysql OK
ERROR http://w3.bocm.es/boletin/CM_Boletin_BOCM/2011/01/01/BOCM-20110101.PDF
delay ok.
/home/data/projects/kaos155/App/node_app/_common.js:183
if (data._list.length > 0) {
^
TypeError: Cannot read property 'length' of undefined
at /home/data/projects/kaos155/App/node_app/_common.js:183:48
at /home/data/projects/kaos155/App/node_app/_common.js:84:37
at /home/data/projects/kaos155/App/node_app/scrap/scr_bocm.js:145:25
at Timeout._onTimeout (/home/data/projects/kaos155/App/node_app/func_common.js:53:29)
at ontimeout (timers.js:475:11)
at tryOnTimeout (timers.js:310:5)
at Timer.listOnTimeout (timers.js:270:5)
no lo he probado y no sé si con los últimos cambios se habrá escacharrado
La wiki nos puede servir para ir dejando las notas que queramos del proyecto.
ya esta disponible en dev la primera versión del parser del BORME funcionando, recomiendo crear la db manualmente, y tiene un error al crear la credenciales si no están presentes las de SCRAP.
matrix no, lo siguiente
Leyenda
mm/dd: Azul día en proceso de analisis
PROVINCIA Blanco
+Lectura de nueva linea
E Empresa
. apunte en diario
e Rojo Empresa cesante en cargo
d Rojo Directivo cesante en cargo
a Rojo Auditora cesante
e Verde Empresa entrante en cargo
d Verde Directivo entrante en cargo
a Verde Auditora entrante
Crear un menú al comienzo de la aplicación que permita seleccionar si no hay parámetros de entrada
SCRAP
PARSER
DELETE
BORME
BOE
BOCM
años desde inicio hasta la fecha, en el caso de parser años ya existentes en la tabla anyosread.
la rutina ha de ser lo suficientemente flexible como para poder incorporar fácilmente nuevos comandos y tipos de boletines (quizás unas tablas en otra db aparte) bbdd_kaos155_master? que os parece.
documentación
http://pm2.keymetrics.io/
Hola!
Acabo de encontrar estos muy interesantes artículos 405 y 408!!
http://www.rmc.es/documentacion/publico/RMC-%20Art%C3%ADculos%20que%20determinan%20la%20concesi%C3%B3n%20o%20denegaci%C3%B3n%20de%20las%20denominaciones%20sociales.pdf
Artículo 405. Prohibición de denominaciones oficiales.
-> se entiende que una denominación social puede ser "PLATANOS ANDALUCIA SL", pero no sólo "ANDALUCIA SL". no?
Artículo 408. Concepto de identidad.
PLATANOS CAÑEROS
== PLATANO CAÑERO
== CAÑERO PLATANO
== CAÑEROS PLATANOS
== CAÑEROS PLATANOS PLATANOS CAÑEROS
== CAÑEROS PLATANO PLATANOS CAÑERO ???
-> para generar ID de empresa, normalizar las palabras al singular, ponerlas en orden alfabético, y quitar los duplicados. Sí?
2ª La utilización de las mismas palabras con la adición o supresión
de términos o expresiones genéricas o accesorias, o de artículos, adverbios,
preposiciones, conjunciones, acentos, guiones, signos de puntuación u otras
partículas similares, de escasa significación.
CAÑERO PLATANO
== CAÑERO-PLATANO
== ¡¿..CAÑERO-PLATANO..+!
== CAÑERÓ -- - -- PLATÄNO
== EL CAÑERO PLATANO
== POR EL CAÑERO PLATANO
== POR_EL_CAÑERO_PLATANO ???
== EL CAÑERO PLATANO DE ESPAÑA ???
== EL CANERO PLATANO ??? identificais la "ñ" en este punto 2ª. ?!
-> quitar los acentos de cualquier letra (y la ñ??)
-> para el ID, quitar conjunciones, preposiciones, adverbios, artículos y palabras de escasa significación (necesitamos un diccionario!!!!)
-> reemplazar lo que no es alphanumérico por un espacio, y reducir todo a espacios únicos.
3ª La utilización de palabras distintas que tengan la misma expresión
o notoria semejanza fonética.
PLATANO CAÑERO
== PLATANI CAÑERO
== PLATANHO CANIERO
== PLATANO CANERO ??? la "ñ" se identifica a la "n" ???
-> a veces sí son varias empresas, si tienen la autorización de la primera empresa en tener la denominación social -> lo asimilamos siempre a un grupo de empresa entonces, no a la misma empresa...?
En la certificación expedida por el Registrador Mercantil Central se
consignará la oportuna referencia a la autorización. La autorización habrá
de testimoniarse en la escritura o acompañarse a la misma para su
inscripción en el Registro Mercantil.
CAÑERO PLATANO SL
== CAÑERO PLATANO SA
== CAÑERO PLATANO SLU
etc.. no?
Falta saber también si:
CAÑERO BARBACOA == CAÑERO BARBECUE ?? (identidad entre idiomas)
PLATANOS DE ESPAÑA SL == PLATANOS ESPAÑA SL == PLATANOS SL ???
Saludos
Consideraciones de la DB.
A) cada AÑO y TIPO van en una tabla distinta.
B) anyosRead lleva un control de los años ya escrapeados y si están ya completados.
C) sumarios realiza una lista de todos los sumarios extraídos poniendo una marca si la operación de completo .
D) la tabla errores recoje los errores de aquellos boletines que no han cargado correctamente.
E) en el caso de BOE tiene un campo de anotación para anotar errores encontrados en el formato.
F) en el caso BOE obtendremos también un JSON con los metadatos y el analisis del BOE.
Trabajo a realizar
informar de posibles anomalías y detección de boletines no legibles
objetivo.
scrapear todos los boletines todos los años obteniendo la base de datos con los TEXTOS de CONTRATOS y REGISTRO MERCANTIL
preguntar al comienzo por los datos de acceso a DB y guardarlo en el fichero de ACCESO_mysql_XXXX,json de forma que no venga sino que se construya.
preguntar solo si no se tiene acceso al fichero, se deveria de protejer la password. https://www.npmjs.com/package/simple-encryptor
propuesta de plugin externo para input de consola.
https://www.npmjs.com/package/inquirer
Hola!
si no hay ningun "Importe o canon de adjudicación" especificado, cogeis el "Valor estimado del contrato"? El presupuesto base de licitación? (nos sirven de algo estas 2 cosas?)
como lo contabilizais cuando el importe esta del tipo "0.06
euro/palabra"??
almacenais importes totales o netos? (o ambos..?)
podeis darme un doc o algo con las fechas chungas que teneis sobre
boe y borme? (importante!)
Gracias!
Aquí un enlace interesante!
https://mariadb.com/kb/en/library/choosing-the-right-storage-engine/
Que usa Kaos?
Aconsejo una mezcla de InnoDB para FULL_TEXT (o XtraDB??) y TokuDB con indices de tipo HASH (no BTREE) para columnas de tamaño fijo o búsqueda desde principio de cadenas.
propuesta de separar los ficheros sql en 3 partes diferentes:
CREATE_DB_SCRAP
DELETE_DB_SCRAP
CREATE_PROC_SCRAP
No se si afecta a algo de código, aunque entiendo que en principio no tiene que hacerlo
v0.1.4
2017 ha empezado a fallar...
delay ok.
ERROR http://w3.bocm.es/boletin/CM_Boletin_BOCM/2017/04/14/BOCM-20170414.PDF
delay ok.
ERROR http://w3.bocm.es/boletin/CM_Boletin_BOCM/2017/04/14/BOCM-20170414.PDF
delay ok.
ERROR http://w3.bocm.es/boletin/CM_Boletin_BOCM/2017/04/14/BOCM-20170414.PDF
delay ok.
ERROR http://w3.bocm.es/boletin/CM_Boletin_BOCM/2017/04/14/BOCM-20170414.PDF
delay ok.
ERROR http://w3.bocm.es/boletin/CM_Boletin_BOCM/2017/04/14/BOCM-20170414.PDF
delay ok.
ERROR http://w3.bocm.es/boletin/CM_Boletin_BOCM/2017/04/14/BOCM-20170414.PDF
delay ok.
Hola!
Me pregunto porque permiteis el uso comercial de Kaos?
Y también me pregunto si no usar Creative Commons para SM, contestando NO-NO o ALIKE-NO a este cuestionario: https://creativecommons.org/choose/ Veis algo peligroso en hacerlo? (uso futuro por periodistas y más, posible sostenibilidad económica del proyecto por ejemplo..)
Gracias!
instalación de esta herramienta https://tika.apache.org/ para la conversión de los pdf a texto
https://github.com/ICIJ/node-tika
Depende de node-java , que a su vez requiere JDK y Python 2 (no 3) para compilar.
Requiere JDK 7. Ejecutar node versionpara verificar la versión que node-java está usando. Si se informa la versión incorrecta incluso si instaló JDK 1.7, asegúrese de que JAVA_HOME esté configurado en la ruta correcta, luego elimínelo node_modules/java y vuelva a ejecutarlo npm install.
en el proceso de test de la migración, al crear la DB de PARSER genera un error al crear la función
CREATE DEFINER=root
@localhost
FUNCTION SPLIT_STR
( s MEDIUMTEXT , del CHAR(1) , i INT) RETURNS text CHARSET utf8
DETERMINISTIC
BEGIN
generando un error
1418: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)
solución:
https://stackoverflow.com/questions/26015160/deterministic-no-sql-or-reads-sql-data-in-its-declaration-and-binary-logging-i
#sudo nano my.cnf
hay que tenerlo en cuenta para la documentación.
Ampliación de manual
los caracteres que salen en el SCRAP tienen significado
S = leyendo sumario .=leyendo BOLETIN +=anotando CONTRATO -=anotando NO CONTRADO xxx = boletin fallido fff = sumario no encontrado #=SUMARIO duplicado %=Boletín ya analizado
He probado en dev
y no funciona (si funciona en master
)
kaos155 App - version -0.1.4.
MySQL IP:localhost
PROCESS:BORME
Anyo:2009
module.js:538
throw err;
^
Error: Cannot find module './node_app/SCRAP/scr_borme.js'
at Function.Module._resolveFilename (module.js:536:15)
at Function.Module._load (module.js:466:25)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at Object.SCRAP (/home/data/projects/kaos155/App/app.js:165:33)
at /home/data/projects/kaos155/App/app.js:273:60
at /home/data/projects/kaos155/App/app.js:132:21
at module.exports (/home/data/projects/kaos155/App/node_app/sql_common.js:2:5)
at Object.init (/home/data/projects/kaos155/App/app.js:129:52)
at /home/data/projects/kaos155/App/app.js:273:21
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.