#wip: Targets, questions and basic GUI.

This commit is contained in:
KyMAN 2025-10-12 21:02:03 +02:00
parent 9b12440f22
commit d2a957761e
83 changed files with 11011 additions and 2 deletions

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
/Data
/Public/data
*.[Ss]ecret.*
*.[Ss]ecrets.*
__pycache__

89
AIPattern.md Normal file
View File

@ -0,0 +1,89 @@
# Patrón IA
Los Tests no son más que archivos JSON con la siguiente estructura:
```json
[{
"origin" : "Quién lo hizo",
"sources" : ["Links para el origen de los datos/Tests."],
"title" : "Título del Test.",
"queries" : [{
"question" : "Pregunta arealizar.",
"rights" : ["Respuestas correctas simples.", ["Respuestas correctas porcentuadas.", 0.5]],
"wrongs" : ["Respuestas incorrectas simples.", ["Respuestas incorrectas porcentuadas.", 0.5]]
}]
}]
```
* **origin**: String. Nombre de la entidad o fuente de la información.
* **sources**: Array de Strings. Fuentes de la que parte la información.
* **title**: String. Título del tema a tratar.
* **Queries**: Array de diccionario. Conjunto de posibles preguntas.
* **question**: String. Texto de la pregunta.
* **rights** y **wrongs**: Array de Strings (Respuesta directa) y/o Array bidimensional con:
0. String. Respuesta.
1. Float. Probabilidad de prebalecer como seleccionada.
Todos los campos ahnde existir siempre y el tipado va acorde a lo expuesto.
Los Array indican que pueden tener uno o más elementos, a excepción de "sources", que puede estar vacío.
Las respuestas porcentuadas indican cuál es la probabilidad de que una vez elegida por el programa, ésta se quede como respuesta y no se seleccione otra. Esto vale para equivaler conjuntos de respuestas dinámicas y estáticas. El valor que lo acompaña es la probabilidad de que permanezcan siendo 1 el 100% y 0 el 0%.
Lo interesante es que halla cuántas más posibles respuestas mejor. No hay un número mínimo ni máximo.
Las respuestas pueden tener factores dinámicos para que una sea más flexibles y dé más resultados. No puede haber anidamientos de éstos. Éstos se basan en claves las cuales son los siguientes.
## rand
Indica un conjunto de elementos de los cuales se eligirá uno aleatoriamente.
```txt
[[rand,opcion1|opcion2|opcion3|opcionN]]
```
```json
{
"wrongs" : ["Esto es [[rand,esto|eso|aquello]]."]
}
```
En el ejemplo puede dar como resultado que es "esto", o "eso" o "aquello".
## range
Indica uno o más rangos o valores fijos numéricos enteros de donde se sacarán valores aleatorios.
```txt
[[rand,desde1-hasta1|desde2-hasta2|desde3-hasta3|desdeN-hastaN]]
```
```txt
[[rand,valor1|valor2|valor3|valorN]]
```
```txt
[[rand,desde1-hasta1|desde2-hasta2|valor3|desdeN-hastaN]]
```
```json
{
"wrongs" : ["Esto es [[range,0-10|15-20|23|31-60]]."]
}
```
En el ejemplo puede coger cualquier valor comprendido entre 0 y 10, 15 y 20, el valor 23, y entre 31 y 60.
## serie
Es como el rango pero con memoria, y la siguiente serie del mismo texto procesado ha de ser igual o más grande.
```json
{
"wrongs" : ["Esto está entre [[serie,0-25]] y [[serie,10-50]]."]
}
```
En el ejemplo, el primer valor puede coger cualquier valor comprendido entre el 0 y el 25; y el segundo puede ser entre 10 si el primero es menor que 10 o desde el primero en caso contrario, hasta el 50.
Sólo se contabiliza una serie por pregunta/respuesta.

View File

@ -0,0 +1,409 @@
"use strict";
import {Check} from "../Utils/Check.ecma.js";
/**
* @typedef {import("../Application/OpoTests.ecma.js").OpoTests} OpoTests
*/
/**
* @class Components
* @constructor
* @param {!OpoTests} ot
* @returns {void}
* @access public
* @static
*/
export const Components = (function(){
/**
* @callback components_event_callback
* @param {!HTMLElement} item
* @param {!Event} event
* @returns {boolean|void}
*/
/**
* @constructs Components
* @param {!OpoTests} ot
* @returns {void}
* @access private
* @static
*/
const Components = function(ot){
/** @type {Components} */
const self = this;
/**
* @returns {void}
* @access private
*/
const constructor = () => {};
/**
* @param {!(string|Array.<string>)} i18n
* @param {!string} [tag = "span"]
* @param {?string} [_default = null]
* @returns {[string, Object.<string, string>, string]}
* @access public
*/
this.i18n = (i18n, tag = "span", _default = null) => [tag, {data_i18n : i18n}, ot.i18n.get(i18n, null, _default)];
/**
* @param {!string} name
* @param {!string} [tag = "span"]
* @returns {[string, Object.<string, string>]}
* @access public
*/
this.icon = (name, tag = "span") => [tag, {data_icon : name}];
/**
* @param {!string} name
* @param {?components_event_callback} [on_click = null]
* @param {!string} [type = "button"]
* @param {?string} [default_text = null]
* @returns {[string, Object.<string, (string|function)>, Array.<(string|[string, Object.<string, string>, string])>]}
* @access public
*/
this.button = (name, on_click = null, type = "button", default_text) => ["button", {
type : type,
data_i18n : name,
data_i18n_without : true,
title : ot.i18n.get(name, null, default_text),
...(on_click ? {on_click : on_click} : {})
}, [
self.icon(name),
self.i18n(name, "span", default_text)
]];
/**
* @param {!string} type
* @param {!string} name
* @param {!boolean} checked
* @param {?components_event_callback} on_change
* @param {?string} default_text
* @returns {[string, Object.<string, (string|function)>, Array.<(string|[string, Object.<string, string>, string])>]}
* @access private
*/
const select_item = (type, name, checked, on_change, default_text) => {
/** @type {string} */
const id = name.slice(-2) == "[]" ? ot.identifiers.get() : name;
return ["label", {
for : id,
class : type + "-input",
data_i18n : name,
data_i18n_without : true,
title : ot.i18n.get(name, null, default_text)
}, [
["input", {
type : type,
id : id,
name : name,
...(on_change ? {on_change : on_change} : {}),
...(checked ? {checked : "checked"} : {})
}],
self.icon(type, "span"),
self.i18n(name, "span", default_text)
]];
};
/**
* @param {!string} name
* @param {!boolean} [checked = false]
* @param {?components_event_callback} [on_change = null]
* @param {?string} [default_text = null]
* @returns {[string, Object.<string, (string|function)>, Array.<(string|[string, Object.<string, string>, string])>]}
*/
this.checkbox = (name, checked = false, on_change = null, default_text) => (
select_item("checkbox", name, checked, on_change, default_text)
);
/**
* @param {!string} name
* @param {!boolean} [checked = false]
* @param {?components_event_callback} [on_change = null]
* @param {?string} [default_text = null]
* @returns {[string, Object.<string, (string|function)>, Array.<(string|[string, Object.<string, string>, string])>]}
*/
this.radio = (name, checked = false, on_change = null, default_text) => (
select_item("radio", name, checked, on_change, default_text)
);
/**
* @param {!string} name
* @param {?number} [value = null]
* @param {?number} [minimum = null]
* @param {?number} [maximum = null]
* @param {?number} [step = null]
* @param {?components_event_callback} [on_change = null]
* @param {?string} [default_text = null]
* @returns {[string, Object.<string, (string|number|function)>, Array.<(string|[string, Object.<string, string>, string])>]}
* @access public
*/
this.number = (name, value = null, minimum = null, maximum = null, step = null, on_change = null, default_text) => {
/** @type {string} */
const text = ot.i18n.get(name, null, default_text);
return ["label", {
for : name,
class : "number-input",
data_i18n : name,
data_i18n_without : true,
title : text,
}, [
["input", {
type : "number",
id : name,
name : name,
...(value !== null ? {value : value} : {}),
...(minimum !== null ? {min : minimum} : {}),
...(maximum !== null ? {max : maximum} : {}),
...(step !== null ? {step : step} : {}),
...(on_change ? {on_change : on_change} : {}),
data_i18n : name,
data_i18n_without : true,
placeholder : text + "..."
}],
["span", {class : "minimum"}, minimum || "-∞"],
["span", {class : "maximum"}, maximum || "∞"]
]];
};
/**
* @param {!string} type
* @param {!string} name
* @param {?string} [value = null]
* @param {?number} [maximum_length = null]
* @param {?string} [pattern = null]
* @param {?components_event_callback} [on_change = null]
* @param {?string} [default_text = null]
* @returns {[string, Object.<string, (string|function)>, Array.<(string|[string, Object.<string, string>, string])>]}
* @access private
*/
const text = (type, name, value = null, maximum_length = null, pattern = null, on_change = null, default_text = null) => {
/** @type {string} */
const text = ot.i18n.get(name, null, default_text);
return ["label", {
for : name,
class : "input-" + type
}, [
["input", {
type : type,
id : name,
name : name,
...(value !== null ? {value : value} : {}),
...(pattern !== null ? {pattern : pattern} : {}),
...(on_change ? {on_input : on_change} : {}),
data_i18n : name,
data_i18n_without : true,
placeholder : text + "..."
}],
["span", {class : "length"}, 0],
...(maximum_length ? [["span", {class : "maximum-length"}, maximum_length || "∞"]] : [])
]];
};
/**
* @param {!string} name
* @param {?string} [value = null]
* @param {?number} [maximum_length = null]
* @param {?string} [pattern = null]
* @param {?components_event_callback} [on_change = null]
* @param {?string} [default_text = null]
* @returns {[string, Object.<string, (string|function)>, Array.<(string|[string, Object.<string, string>, string])>]}
* @access public
*/
this.text = (name, value = null, maximum_length = null, pattern = null, on_change = null, default_text = null) => (
text("text", name, value, maximum_length, pattern, on_change, default_text)
);
/**
* @param {!string} name
* @param {?string} [value = null]
* @param {?number} [maximum_length = null]
* @param {?string} [pattern = null]
* @param {?components_event_callback} [on_change = null]
* @param {?string} [default_text = null]
* @returns {[string, Object.<string, (string|function)>, Array.<(string|[string, Object.<string, string>, string])>]}
* @access public
*/
this.password = (name, value = null, maximum_length = null, pattern = null, on_change = null, default_text = null) => (
text("password", name, value, maximum_length, pattern, on_change, default_text)
);
/**
* @param {...[string, components_event_callback|null, string, string|null]} buttons
* @returns {[string, Object.<string, string>, Array.<(string|[string, Object.<string, string>, string])>]}
* @access public
*/
this.buttons = (...buttons) => ["div", {class : "buttons"}, buttons.map(button => self.button(...button))];
/**
* @param {!string} name
* @param {...any} items
* @returns {[string, Object.<string, string>, Array.<(string|[string, Object.<string, string>, string])>]}
*/
this.group = (name, ...items) => ["div", {
class : "group",
data_i18n : name,
data_i18n_without : true,
title : ot.i18n.get(name)
}, items];
/**
* @param {!string} name
* @param {!Array.<any|null>} structure
* @param {?components_event_callback} on_submit
* @param {...(components_event_callback|null)} [extra_actions]
* @returns {[string, Object.<string, (string|function)>, Array.<(string|[string, Object.<string, string>, string])>]}
* @access public
*/
this.form = (name, structure, on_submit, ...extra_actions) => ["form", {
class : "form",
data_name : name,
method : "get",
action : "#",
...(on_submit ? {on_submit : on_submit} : {})
}, [
["fieldset", {}, [
self.i18n(name, "legend"),
self.i18n(name + "_text", "p"),
["div", {class : "structure"}, structure.map(([type, name, ...item], i) => {
return ["div", {
data_i : i,
data_type : type,
data_i18n : name,
data_i18n_without : true,
title : ot.i18n.get(name, null, item[1] || name)
}, [
["label", {for : name}, [
self.i18n(name),
self.i18n(name + "_description")
]],
["span", {class : "input"}, self[type] ? [self[type](name, ...item)] : item],
["ul", {class : "errors"}]
]];
})],
["ul", {class : "form-errors"}],
self.buttons(
["clean", null, "clean"],
...extra_actions,
on_submit ? ["submit", null, "submit"] : null
)
]]
]];
/**
* @param {!HTMLElement} form
* @returns {HTMLFormElement|null}
* @access public
*/
this.get_form = form => {
if(form)
while(form.tagName.toLowerCase() != "form" && (form = form.parentNode));
return form;
};
/**
* @param {!HTMLElement} form
* @returns {Object.<string, (string|number|boolean|Array.<(string|number|boolean)>)>}
* @access public
*/
this.get_form_data = form => (
[...self.get_form(form).querySelectorAll("[name]")].reduce((data, item) => {
/** @type {string} */
let name_value = item.getAttribute("name");
/** @type {string} */
const name = name_value.replace(/\[\]$/i, ""),
/** @type {boolean} */
is_array = name_value != name;
is_array && !(name in data) && (data[name] = []);
switch(item.getAttribute("type")){
case "radio":
data[name] == [] && (data[name] = false);
item.checked && (data[name] = Number(item.value));
break;
case "checkbox":
if(is_array)
data[name].push(item.checked);
else
data[name] = item.checked;
break;
case "number":
if(is_array)
data[name].push(Number(item.value));
else
data[name] = Number(item.value);
break;
default:
if(is_array)
data[name].push(item.value);
else
data[name] = item.value;
break;
};
return data;
}, {})
);
/**
* @param {!(string|Array.<string>)} sources
* @param {?(string|Array.<string>)} [i18n = null]
* @param {?string} [default_text = null]
* @returns {[string, Object.<string, (string|number|function)>, (string|[string, Object.<string, string>, string])>]}
* @access public
*/
this.image = (sources, i18n = null, default_text = null) => {
/** @type {number} */
let i = 0;
Check.is_array(sources) || (sources = [sources]);
return ["span", {
class : "image",
data_status : "loading",
...(
i18n ? {data_i18n : i18n, title : ot.i18n.get(i18n, null, default_text)} :
default_text ? {title : default_text} :
{}),
}, [
["img", {
src : sources[i],
...(
i18n ? {data_i18n : i18n, alt : ot.i18n.get(i18n, null, default_text)} :
default_text ? {alt : default_text} :
{}),
on_error : (image, event) => {
if(i >= sources.length)
image.parentNode.setAttribute("data-status", "error");
else
image.parentNode.setAttribute("src", sources[++ i]);
},
on_load : (image, event) => {
image.parentNode.setAttribute("data-status", "loaded");
image.parentNode.querySelector("span").style.backgroundImage = "url('" + sources[i] + "')";
}
}],
["span"]
]];
};
constructor();
};
return Components;
})();

View File

@ -0,0 +1,323 @@
"use strict";
import {SettingsManager} from "../Managers/SettingsManager.ecma.js";
import {I18NManager} from "../Managers/I18NManager.ecma.js";
import {IdentifiersManager} from "../Managers/IdentifiersManager.ecma.js";
import {Components} from "./Components.ecma.js";
import {Utils} from "../Utils/Utils.ecma.js";
import {Check} from "../Utils/Check.ecma.js";
import {BaseView} from "../Views/BaseView.ecma.js";
import {MainFormView} from "../Views/MainFormView.ecma.js";
import {TestsView} from "../Views/TestsView.ecma.js";
import {UserView} from "../Views/UserView.ecma.js";
import {CookiesManager} from "../Managers/CookiesManager.ecma.js";
/**
* @class OpoTests
* @constructor
* @param {?(Object.<string, any|null>|Array.<any|null>)} inputs
* @returns {void}
* @access public
* @static
*/
export const OpoTests = (function(){
/**
* @callback opo_tests_preload_callback
* @param {?HTMLElement} item
* @param {!boolean} asynchronous
* @param {!boolean} success
* @returns {void}
*/
/**
* @callback opo_tests_load_file_callback
* @param {?string} responseText
* @param {!number} status
* @param {!number} readyState
* @param {!string} message
* @param {!boolean} success
* @returns {void}
*/
/**
* @callback opo_tests_load_file_end_callback
* @param {!string} message
* @returns {void}
*/
/**
* @callback opo_tests_default_callback
* @returns {void}
*/
/**
* @callback opo_tests_json_each_callback
* @param {!(Object.<string, any|null>|Array.<any|null>)} item
* @param {!opo_tests_default_callback} callback
* @returns {void}
*/
/**
* @constructs OpoTests
* @param {?(Object.<string, any|null>|Array.<any|null>)} inputs
* @returns {void}
* @access private
* @static
*/
const OpoTests = function(inputs = null){
/** @type {OpoTests} */
const self = this;
this.database = [];
/** @type {SettingsManager} */
this.settings = new SettingsManager(self, inputs);
/** @type {I18NManager} */
this.i18n = new I18NManager(self);
/** @type {IdentifiersManager} */
this.identifiers = new IdentifiersManager(self);
/** @type {Components} */
this.components = this.comp = new Components(self);
/** @type {BaseView} */
this.base = new BaseView(self);
/** @type {MainFormView} */
this.main_form = new MainFormView(self);
/** @type {TestsView} */
this.tests = new TestsView(self);
/** @type {UserView} */
this.user = new UserView(self);
this.cookies = new CookiesManager(self);
/**
* @returns {void}
* @access private
*/
const end_constructor = () => {
Utils.execute_array(["default_database_files", "database_files"], (key, next_callback) => {
Utils.execute_array(self.settings.get(key, null, []), (file, next_callback) => {
self.load_file(file, (data, ..._) => {
/** @type {Array.<string>|null} */
const json = data ? JSON.parse(data) : null;
if(Check.is_array(json))
load_database(json, () => {
next_callback();
});
else
next_callback();
});
}, next_callback);
}, () => {
console.log(["database", self.database]);
self.main_form.build();
});
};
/**
* @returns {void}
* @access private
*/
const constructor = () => {
self.settings.start(() => {
self.i18n.start(() => {
self.cookies.start(() => {
self.preload(self.settings.get("position", null, "body"), (position, asynchronous, success) => {
if(success && position){
Utils.html(position, self.base.build());
if(self.cookies.get("ot") == "1")
Utils.execute(end_constructor);
else
self.user.build_login(end_constructor);
};
});
});
});
});
};
/**
* @param {!(string|HTMLElement)} selector
* @param {!opo_tests_preload_callback} callback
* @param {?(Object.<string, any|null>|Array.<any|null>)} [inputs = null]
* @returns {void}
* @access public
*/
this.preload = (selector, callback, inputs = null) => {
if(!Check.is_function(callback))
return;
if(Check.is_html_item(selector))
return Utils.execute(callback, selector, false, true);
if(!Check.is_string(selector))
return Utils.execute(callback, null, false, false);
/** @type {HTMLElement|null} */
let item;
try{
item = document.querySelector(selector)
}catch(e){
return Utils.execute(callback, null, false, false);
};
if(item)
return Utils.execute(callback, item, false, true);
/** @type {number} */
const date = Date.now(),
/** @type {number} */
timeout = self.settings.get(["preload_timeout", "timeout"], inputs, 2000);
/** @type {number} */
let interval = setInterval(() => {
if(item = document.querySelector(selector)){
clearInterval(interval);
Utils.execute(callback, item, true, true);
}else if(Date.now() - date >= timeout){
clearInterval(interval);
Utils.execute(callback, null, true, false);
};
}, 1000 / self.settings.get(["frames_per_second", "fps"], inputs, 24));
};
/**
* @param {!string} url
* @param {!opo_tests_load_file_callback} callback
* @param {?(Object.<string, any|null>|Array.<any|null>)} [inputs = null]
* @returns {XMLHttpRequest}
* @access public
*/
this.load_file = (url, callback, inputs = null) => {
/** @type {boolean} */
let ended = false;
/** @type {XMLHttpRequest} */
const ajax = new XMLHttpRequest(),
/** @type {opo_tests_load_file_end_callback} */
end = message => {
!ended && (ended = true) && Utils.execute(callback, ajax.responseText, ajax.status, ajax.readyState, message, message == "OK");
},
/** @type {number} */
date = Date.now(),
/** @type {number} */
timeout = self.settings.get(["ajax_timeout", "timeout"], inputs, 2000);
ajax.open("GET", url, true);
ajax.timeout = timeout;
ajax.onload = () => {
if(ended)
return;
if(ajax.readyState == 4)
end((ajax.status >= 200 && ajax.status < 300) || [301, 302, 304].includes(ajax.status) ? "OK" : "HTTP_ERROR");
else if(Date.now() - date >= timeout)
end("FORCED_TIMEOUT");
};
ajax.send(null);
ajax.ontimeout = () => end("TIMEOUT");
ajax.onerror = () => end("ERROR");
ajax.onabort = () => end("ABORTED");
return ajax;
};
/**
* @param {!Array.<string>} files
* @param {!opo_tests_default_callback} callback
* @returns {void}
* @access private
*/
const load_database = (files, callback) => {
Utils.execute_array(Check.is_array(files) ? files : [files], (file, next_callback) => {
self.load_file(file, (responseText, status, readyState, message, success) => {
if(success && responseText){
try{
self.database.push(...JSON.parse(responseText).map(item => {
item.queries = item.queries.filter(Check.is_dictionary);
return item;
}));
}catch(exception){
console.log(responseText);
console.error([file, exception]);
};
}else
console.error([file, responseText, message.toLowerCase(), status, readyState]);
next_callback();
});
}, () => {
Utils.execute(callback);
});
};
/**
* @param {!string} message
* @param {?opo_tests_default_callback} [callback = null]
* @param {?string} [default_text = null]
* @return {void}
* @access public
*/
this.alert = (message, callback, default_text = null) => {
alert(self.i18n.get(message, null, default_text));
Utils.execute(callback);
};
/**
* @param {?(Object.<string, any|null>|Array.<any|null>|string)} data
* @param {!opo_tests_json_each_callback} each_callback
* @param {?opo_tests_default_callback} [end_callback = null]
* @param {!boolean} [only_dictionaries = false]
* @returns {void}
* @access public
*/
this.load_json = (data, each_callback, end_callback = null, only_dictionaries = false) => {
if(Check.is_array(data)){
if(only_dictionaries)
Utils.execute_array(data, (item, next_callback) => {
self.load_json(item, each_callback, next_callback, only_dictionaries);
}, end_callback);
else{
Utils.execute(each_callback, data);
Utils.execute(end_callback);
};
}else if(Check.is_dictionary(data)){
Utils.execute(each_callback, data);
Utils.execute(end_callback);
}else if(Check.is_string(data)){
/** @type {Array.<any|null>|Object.<string, any|null>|null} */
let json;
try{
if(json = JSON.parse(data)){
self.load_json(json, each_callback, end_callback, only_dictionaries);
return;
};
}catch(exception){};
self.load_file(data, (responseText, status, readyState, message, success) => {
if(success && responseText){
try{
if(json = JSON.parse(responseText)){
self.load_json(json, each_callback, end_callback, only_dictionaries);
return;
};
}catch(exception){};
};
Utils.execute(end_callback);
});
}else
Utils.execute(end_callback);
};
constructor();
};
return OpoTests;
})();

View File

@ -0,0 +1,112 @@
"use strict";
/**
* @typedef {import("../OpoTests.ecma.js").OpoTests} OpoTests
*/
import {Utils} from "../Utils/Utils.ecma.js";
/**
* @class CookiesManager
* @constructor
* @param {!OpoTests} ot
* @returns {void}
* @access public
* @static
*/
export const CookiesManager = (function(){
/**
* @callback cookies_manager_default_callback
* @returns {void}
*/
/**
* @constructs CookiesManager
* @param {!OpoTests} ot
* @returns {void}
* @access private
* @static
*/
const CookiesManager = function(ot){
/** @type {CookiesManager} */
const self = this;
/** @type {number} */
let timeout = 3600000;
/**
* @returns {void}
* @access private
*/
const constructor = () => {};
/**
* @param {?cookies_manager_default_callback} [callback = null]
* @return {void}
* @access public
*/
this.start = (callback = null) => {
timeout = ot.settings.get(["cookies_timeout", "timeout"], null, timeout);
Utils.execute(callback);
};
/**
* @param {!string} name
* @returns {boolean}
* @access public
*/
this.has = name => {
name += "=";
return document.cookie.split(';').some(c => c.trim().startsWith(name));
};
/**
* @param {!string} name
* @param {!string} value
* @returns {void}
* @access public
*/
this.set = (name, value) => {
document.cookie = (
name + "=" + (value || "") + ";" +
"expires=" + new Date(Date.now() + timeout).toUTCString() + ";" +
"path=/"
);
};
/**
* @param {!string} name
* @returns {?string}
* @access public
*/
this.get = name => {
name += "=";
for(const cookie of document.cookie.split(';'))
if(cookie.trim().startsWith(name))
return cookie.trim().substring(name.length);
return null;
};
/**
* @param {!string} name
* @returns {void}
* @access public
*/
this.remove = name => {
self.has(name) && (document.cookie = name + "=; Max-Age=-99999999;");
};
constructor();
};
return CookiesManager;
})();

View File

@ -0,0 +1,139 @@
"use strict";
import {Check} from "../Utils/Check.ecma.js";
import {Utils} from "../Utils/Utils.ecma.js";
/**
* @typedef {import("../Application/OpoTests.ecma.js").OpoTests} OpoTests
*/
/**
* @class I18NManager
* @constructor
* @param {!OpoTests} ot
* @returns {void}
* @access public
* @static
*/
export const I18NManager = (function(){
/**
* @callback i18n_manager_default_callback
* @returns {void}
*/
/**
* @constructs I18NManager
* @param {!OpoTests} ot
* @returns {void}
* @access private
* @static
*/
const I18NManager = function(ot){
/** @type {I18NManager} */
const self = this,
/** @type {Object.<string, Object.<string, string|Array.<string>>} */
sentences = {};
/** @type {string} */
let language_selected = "espanol",
/** @type {string} */
default_language = "espanol";
/**
* @returns {void}
* @access private
*/
const constructor = () => {
language_selected = ot.settings.get(["language_selected", "default_language"], null, language_selected);
default_language = ot.settings.get(["default_language", "language_selected"], null, default_language);
};
/**
* @param {?i18n_manager_default_callback} [callback = null]
* @returns {void}
* @access public
*/
this.start = (callback = null) => {
Utils.execute_array([
"default_i18n_files", "i18n_files"
], (key, next_callback) => {
self.add(ot.settings.get(key), next_callback, true);
}, callback);
};
/**
* @param {!(string|Array.<string>)} texts
* @param {?(Object.<string, any|null>|Array.<any|null>)} [variables = null]
* @param {?any} [_default = null]
* @returns {string|null}
* @access public
*/
this.get = (texts, variables = null, _default = null) => {
/** @type {string|Array.<string>|null} */
let text = null;
/** @type {Array.<string>} */
const used = [],
/** @type {Array.<string>} */
languages = [language_selected, default_language].concat(Object.keys(sentences)),
/** @type {Array.<string>} */
keys = Utils.get_keys(texts);
if(keys.length)
for(const language of languages){
if(!used.includes(language) && sentences[language])
for(const key of keys){
if(sentences[language][key] !== undefined){
text = sentences[language][key];
break;
};
};
if(text !== undefined)
break;
used.push(language);
};
text === null && (text = (
_default !== null ? _default :
texts !== null ? (
Check.is_string(texts) ? texts :
Check.is_array(texts) && texts.length ? texts[0] :
null) :
null))
return Utils.string_variables((
Check.is_array(text) ? text.join("") :
text), variables, _default);
};
/**
* @param {!(Object.<string, Object.<string, string|Array.<string>|null>>|Array.<any|null>|string)} inputs
* @param {?i18n_manager_default_callback} [callback = null]
* @param {!boolean} [overwrite = false]
* @returns {void}
* @access public
*/
this.add = (inputs, callback = null, overwrite = false) => {
ot.load_json(inputs, (item, next_callback) => {
for(const language in item){
sentences[language] || (sentences[language] = {});
for(const key in item[language])
(overwrite || Check.is_null_or_undefined(sentences[language][key])) &&
(sentences[language][key] = item[language][key]);
};
next_callback();
}, callback, true);
};
constructor();
};
/** @type {Object.<string, any|null>} */
I18NManager.DEFAULT_SETTINGS = {};
return I18NManager;
})();

View File

@ -0,0 +1,89 @@
"use strict";
import {Utils} from "../Utils/Utils.ecma.js";
/**
* @typedef {import("../Application/OpoTests.ecma.js").OpoTests} OpoTests
*/
/**
* @class IdentifiersManager
* @constructor
* @param {!OpoTests} ot
* @returns {void}
* @access public
* @static
*/
export const IdentifiersManager = (function(){
/**
* @constructs IdentifiersManager
* @param {!OpoTests} ot
* @returns {void}
* @access private
* @static
*/
const IdentifiersManager = function(ot){
/** @type {IdentifiersManager} */
const self = this,
/** @type {Array.<string>} */
identifiers = [];
/** @type {Array.<string>|string} */
let alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
/** @type {number} */
length = 11;
/**
* @returns {void}
* @access private
*/
const constructor = () => {
alphabet = ot.settings.get(["identifiers_alphabet", "default_identifiers_alphabet"], null, alphabet);
length = ot.settings.get(["identifiers_length", "default_identifiers_length"], null, length);
};
/**
* @param {!(string|Array.<string>)} keys
* @param {?(Object.<string, any|null>|Array.<any|null>)} [inputs = null]
* @param {?any} [_default = null]
* @returns {any|null}
* @access public
*/
this.get = () => {
/** @type {string} */
let identifier;
do{
identifier = "";
while((identifier += Utils.get_random(alphabet)).length < length);
}while(
identifiers.includes(identifier) ||
/^[^a-z]/i.test(identifier) ||
document.querySelector("." + identifier + ",#" + identifier + ",[name=" + identifier + "]")
);
identifiers.push(identifier);
return identifier;
};
/**
* @param {!string} identifier
* @returns {void}
*/
this.remove = identifier => {
identifier in identifiers && identifiers.splice(identifiers.indexOf(identifier), 1);
};
constructor();
};
/** @type {Object.<string, any|null>} */
IdentifiersManager.DEFAULT_SETTINGS = {};
return IdentifiersManager;
})();

View File

@ -0,0 +1,135 @@
"use strict";
import {Utils} from "../Utils/Utils.ecma.js";
/**
* @typedef {import("../Application/OpoTests.ecma.js").OpoTests} OpoTests
*/
/**
* @class SettingsManager
* @constructor
* @param {!OpoTests} ot
* @param {?(Object.<string, any|null>|Array.<any|null>)} customs
* @returns {void}
* @access public
* @static
*/
export const SettingsManager = (function(){
/**
* @callback settings_manager_default_callback
* @returns {void}
*/
/**
* @constructs SettingsManager
* @param {!OpoTests} ot
* @param {?(Object.<string, any|null>|Array.<any|null>)} customs
* @returns {void}
* @access private
* @static
*/
const SettingsManager = function(ot, customs = null){
/** @type {SettingsManager} */
const self = this,
/** @type {Object.<string, any|null>} */
settings = {},
/** @type {Object.<string, any|null>} */
secrets = {};
/**
* @returns {void}
* @access private
*/
const constructor = () => {
customs = Utils.get_dictionary(customs);
};
/**
* @param {?settings_manager_default_callback} [callback = null]
* @returns {void}
* @access public
*/
this.start = (callback = null) => {
Utils.execute_array([
"default_settings_files", "settings_files"
], (key, next_callback) => {
self.add(self.get(key), next_callback, true);
}, () => {
Utils.execute_array([
"default_secrets_files", "secrets_files"
], (key, next_callback) => {
self.add_secrets(self.get(key), next_callback, true);
}, callback);
});
};
/**
* @param {!(string|Array.<string>)} keys
* @param {?(Object.<string, any|null>|Array.<any|null>)} [inputs = null]
* @param {?any} [_default = null]
* @returns {any|null}
* @access public
*/
this.get = (keys, inputs = null, _default = null) => (
Utils.get_value(keys, [inputs, customs, secrets, settings, SettingsManager.DEFAULT_SETTINGS], _default)
);
/**
* @param {!(Object.<string, Object.<string, string|Array.<string>|null>>|Array.<any|null>|string)} inputs
* @param {?i18n_manager_default_callback} callback
* @param {!boolean} overwrite
* @returns {void}
* @access public
*/
this.add = (inputs, callback = null, overwrite = false) => {
ot.load_json(inputs, (item, next_callback) => {
for(key in item)
(overwrite || Check.is_null_or_undefined(settings[key])) &&
(settings[key] = item[key]);
next_callback();
}, callback, true);
};
/**
* @param {!(Object.<string, any|null>|Array.<any|null>|string)} inputs
* @param {?settings_manager_default_callback} [callback = null]
* @param {!boolean} [overwrite = false]
* @returns {void}
* @access public
*/
this.add_secrets = (inputs, callback = null, overwrite = false) => {
ot.load_json(inputs, (item, next_callback) => {
for(const key in item)
(overwrite || Check.is_null_or_undefined(secrets[key])) &&
(secrets[key] = item[key]);
next_callback();
}, callback, true);
};
constructor();
};
/** @type {Object.<string, any|null>} */
SettingsManager.DEFAULT_SETTINGS = {
/** @type {Array.<string>|string|Object.<string, any|null>} */
default_settings_files : ["/json/OpoTests.settings.json"],
/** @type {Array.<string>|string|Object.<string, any|null>} */
default_secrets_files : ["/json/OpoTests.secrets.json"],
/** @type {Array.<string>|string|Object.<string, any|null>} */
default_i18n_files : [
"/json/i18n/OpoTests.i18n.espanol.json",
"/json/i18n/OpoTests.i18n.galego.json",
"/json/i18n/OpoTests.i18n.english.json"
],
/** @type {Array.<string>|string|Object.<string, any|null>} */
default_database_files : ["/json/database.json"],
};
return SettingsManager;
})();

View File

@ -0,0 +1,102 @@
"use strict";
/**
* @class Baquedano
* @constructor
* @returns {void}
* @access public
* @static
*/
const Baquedano = (function(){
/**
* @callback cookies_click_callback
* @returns {void}
*/
/**
* @constructs Baquedano
* @returns {void}
* @access private
* @static
*/
const Baquedano = function(){};
/**
* @param {!string} i
* @param {!Object.<string, string>} fixer
* @param {!string} option
* @returns {string}
* @access public
* @static
*/
Baquedano.get_answer_key = (i, fixer, option) => fixer[i] == option ? "rights" : "wrongs";
/**
* @returns {void}
* @access public
* @static
*/
Baquedano.load_txt = () => {
/** @type {string} */
const string = document.querySelector("body").innerText,
/** @type {[string, string, string, string]} */
[_, data_string, test_block, fix_block] = string.split(/^\#{3}\s*(?:test|fix|cor+ec+i[oó]n|data)/im),
/** @type {Object.<string, string>} */
fix_values = [...fix_block.matchAll(/^([0-9]+) *([a-d])/gmi)].concat(
[...fix_block.matchAll(/^([a-d]) *([0-9]+)/gmi)].map(([_, right, question]) => [_, question, right])
).reduce((values, [_, question, right]) => {
values[question] = right;
return values;
}, {}),
/** @type {Object.<string, string|Array.<string|Object.<string, string|Array.<string>>>} */
data = JSON.parse(data_string.trim());
let i = -1, question = "", answer, option, number;
data.queries = [...test_block.trim().split(/\n/)].reduce((queries, line) => {
if(!line.trim()){
if(question){
queries.push({
question : question.trim(),
rights : [],
wrongs : []
});
i ++;
question = "";
}else if(answer){
queries[i][Baquedano.get_answer_key(number, fix_values, option)].push(answer.trim());
answer = "";
};
}else if(question)
question += " " + line.trim();
else if(answer){
if(/^[a-d]\) */i.test(line)){
queries[i][Baquedano.get_answer_key(number, fix_values, option)].push(answer.trim());
option = line[0];
answer = line.replace(/^[a-d]\) */i, "").trim();
}else
answer += " " + line.trim();
}else if(/^[0-9]+ +/.test(line)){
number = line.match(/^[0-9]+/)[0];
question = line.trim().replace(/^[0-9]+ +/, "");
}else if(/^[a-d]\) */i.test(line)){
option = line[0];
answer = line.replace(/^[a-d]\) */i, "").trim();
};
return queries;
}, []);
data.queries[i][Baquedano.get_answer_key(number, fix_values, option)].push(answer.trim());
console.log(JSON.stringify([data]));
};
return Baquedano;
})();
Baquedano.load_txt();

View File

@ -0,0 +1,90 @@
"use strict";
/**
* @class Cibertest
* @constructor
* @returns {void}
* @access public
* @static
*/
const Cibertest = (function(){
/**
* @callback cookies_click_callback
* @returns {void}
*/
/**
* @constructs Cibertest
* @returns {void}
* @access private
* @static
*/
const Cibertest = function(){};
/**
* @returns {void}
* @access public
* @static
*/
Cibertest.cookies_reject = () => {
if(!document.querySelector(".fc-dialog-container"))
return;
/**
* @returns {void}
*/
const reject_all = () => {
document.querySelectorAll(".fc-dialog-container [type=checkbox]:checked").forEach(checkbox => {
checkbox.checked = false;
});
};
/**
* @param {?string} selector
* @param {?cookies_click_callback} [callback = null]
* @returns {boolean}
*/
const click = (selector, callback = null) => {
/** @type {boolean} */
let ok = !selector;
if(!ok){
/** @type {HTMLElement} */
const button = document.querySelector(selector);
if(button){
button.click();
ok = true;
};
};
ok && callback && callback();
return ok;
};
reject_all();
["fc-cta-manage-options", "fc-manage-vendors"].forEach(selector => {
click(".fc-dialog-container ." + selector, reject_all);
});
click(".fc-dialog-container button.fc-confirm-choices");
};
/**
* @returns {void}
* @access public
* @static
*/
Cibertest.load_test = () => {
Cibertest.reject_cookies();
};
return Cibertest;
})();
Cibertest.load_test();

View File

@ -0,0 +1,79 @@
"use strict";
/**
* @class Cookies
* @constructor
* @returns {void}
* @access public
* @static
*/
export const Cookies = (function(){
/**
* @callback cookies_click_callback
* @returns {void}
*/
/**
* @constructs Cookies
* @returns {void}
* @access private
* @static
*/
const Cookies = function(){};
/**
* @returns {void}
* @access public
* @static
*/
Cookies.reject = () => {
if(!document.querySelector(".fc-dialog-container"))
return;
/**
* @returns {void}
*/
const reject_all = () => {
document.querySelectorAll(".fc-dialog-container [type=checkbox]:checked").forEach(checkbox => {
checkbox.checked = false;
});
};
/**
* @param {?string} selector
* @param {?cookies_click_callback} [callback = null]
* @returns {boolean}
*/
const click = (selector, callback = null) => {
/** @type {boolean} */
let ok = !selector;
if(!ok){
/** @type {HTMLElement} */
const button = document.querySelector(selector);
if(button){
button.click();
ok = true;
};
};
ok && callback && callback();
return ok;
};
reject_all();
["fc-cta-manage-options", "fc-manage-vendors"].forEach(selector => {
click(".fc-dialog-container ." + selector, reject_all);
});
click(".fc-dialog-container button.fc-confirm-choices");
};
return Cookies;
})();

View File

@ -0,0 +1,125 @@
"use strict";
/**
* @class LaConstitucionEs
* @constructor
* @returns {void}
* @access public
* @static
*/
const LaConstitucionEs = (function () {
/**
* @constructs LaConstitucionEs
* @returns {void}
* @access private
* @static
*/
const LaConstitucionEs = function () { };
/** @type {Array.<Object.<string, string|Object.<string, string|Array.<string>>>>} */
LaConstitucionEs.DATA = [];
/**
* @returns {void}
* @access public
* @static
*/
LaConstitucionEs.reject_cookies = () => {
if (document.querySelector(".fc-dialog-container")) {
document.querySelectorAll(".fc-dialog-container [type=checkbox]").forEach(checkbox => {
checkbox.checked = false;
});
document.querySelector(".fc-dialog-container button.fc-manage-vendors").click();
document.querySelectorAll(".fc-dialog-container [type=checkbox]:checked").forEach(checkbox => {
checkbox.checked = false;
});
document.querySelector(".fc-dialog-container button.fc-confirm-choices").click();
};
};
/**
* @param {HTMLElement} item
* @returns {string}
* @access public
* @static
*/
LaConstitucionEs.get_answer_text = item => {
while ((item = item.parentNode).tagName.toLowerCase() != "li");
return item.querySelector(".respuesta_txt").innerText.trim();
};
/**
* @returns {void}
* @access public
* @static
*/
LaConstitucionEs.get_test_data = () => {
/** @type {HTMLDivElement} */
const base = document.querySelector(".panel-primary");
if (base) {
/** @type {Object.<string, string|Object.<string, string|Array.<string>>>} */
const data = {
/** @type {string} */
origin : "laConstitucion.es",
/** @type {string} */
sources : [window.location.href],
/** @type {string} */
title: base.querySelector(".panel-heading h1").innerText,
/** @type {Array.<Object.<string, string|Array.<string>>>} */
queries: [...base.querySelectorAll(".panel-body>ul")].map(query => ({
/** @type {string} */
question: query.querySelector("b").innerText.trim(),
/** @type {Array.<string>} */
rights: [...query.querySelectorAll("li .correcta")].map(LaConstitucionEs.get_answer_text),
/** @type {Array.<string>} */
wrongs: [...query.querySelectorAll("li .erronea")].map(LaConstitucionEs.get_answer_text)
}))
};
/** @type {number} */
let i;
if (LaConstitucionEs.DATA.some((item, j) => {
if (item.title == data.title) {
i = j;
return true;
};
return false;
})) {
data.queries.forEach(query => {
/** @type {number} */
let j;
if (LaConstitucionEs.DATA[i].queries.some((item, k) => {
if (item.question == query.question) {
j = k;
return true;
};
return false;
}))
["rights", "wrongs"].forEach(type => {
LaConstitucionEs.DATA[i].queries[j][type].push(...query[type].filter(answer => !LaConstitucionEs.DATA[i].queries[j][type].includes(answer)));
});
else
LaConstitucionEs.DATA[i].queries.push(query);
});
} else
LaConstitucionEs.DATA.push(data);
console.log(JSON.stringify(LaConstitucionEs.DATA));
};
};
return LaConstitucionEs;
})();
LaConstitucionEs.reject_cookies();
LaConstitucionEs.get_test_data();

View File

@ -0,0 +1,78 @@
"use strict";
const LeyesDeOposiciones = (function(){
/**
* @constructs LeyesDeOposiciones
* @returns {void}
* @access private
* @static
*/
const LeyesDeOposiciones = function(){};
/**
* @returns {void}
* @access public
* @static
*/
LeyesDeOposiciones.cookies_reject = () => {
if (document.querySelector(".fc-dialog-container")) {
document.querySelectorAll(".fc-dialog-container [type=checkbox]").forEach(checkbox => {
checkbox.checked = false;
});
document.querySelector(".fc-dialog-container button.fc-manage-vendors").click();
document.querySelectorAll(".fc-dialog-container [type=checkbox]:checked").forEach(checkbox => {
checkbox.checked = false;
});
document.querySelector(".fc-dialog-container button.fc-confirm-choices").click();
};
};
/**
* @returns {void}
* @access public
* @static
*/
LeyesDeOposiciones.autoselect_answers = () => {
document.querySelectorAll(".wq-question").forEach(question => {
question.querySelector(".chosen") ||
question.querySelector(".wq_answerTxtCtr").click();
});
};
/**
* @returns {void}
* @access public
* @static
*/
LeyesDeOposiciones.load_test_data = () => {
console.log(JSON.stringify([{
/** @type {string} */
origin : "LeyesDeOposiciones.es",
/** @type {Array.<string>} */
sources : [window.location.href],
/** @type {string} */
title : document.querySelector(".wp-block-heading").innerText.trim(),
/** @type {Array.<Object.<string, Array.<string>|string>>} */
queries : [...document.querySelectorAll(".wq-question")].map(question => {
return {
/** @type {string} */
question : question.querySelector(".wq_questionTextCtr>h4").innerText.trim(),
/** @type {Object.<string, Array.<string>>} */
...[...question.querySelectorAll(".wq_answerTxtCtr")].reduce((answers, answer) => {
answers[answer.parentNode.classList.contains("wq_correctAnswer") ? "rights" : "wrongs"].push(answer.innerText.trim().replace(/^[a-z]\)\s*/i, ""));
return answers;
}, {rights : [], wrongs : []})
};
})
}]));
};
return LeyesDeOposiciones;
}());
LeyesDeOposiciones.cookies_reject();
LeyesDeOposiciones.autoselect_answers();
LeyesDeOposiciones.load_test_data();

View File

@ -0,0 +1,70 @@
"use strict";
/**
* @class Oposito
* @constructor
* @returns {void}
* @access public
* @static
*/
const Oposito = (function(){
/**
* @constructs Oposito
* @returns {void}
* @access private
* @static
*/
const Oposito = function(){};
/**
* @returns {void}
* @access public
* @static
*/
Oposito.load_test = () => {
console.log(JSON.stringify([{
origin : "oposito.es",
title : document.querySelector("h1").innerText.trim(),
sources : [window.location.href],
queries : [...document.querySelectorAll(".test-container>.test-question")].map(question => ({
question : question.querySelector("p").innerText.trim(),
...[...question.querySelectorAll(".test-option")].reduce((answers, answer) => {
answers[answer.getAttribute("data-correct") == "true" ? "rights" : "wrongs"].push(answer.innerText.trim());
return answers;
}, {rights: [], wrongs: []})
}))
}]));
};
/**
* @returns {void}
* @access public
* @static
*/
Oposito.quit_cookies = () => {
/** @type {HTMLBodyElement} */
const body = document.querySelector("body");
[
"CybotCookiebotDialog", "CybotCookiebotDialogBodyUnderlay"
].forEach(id => {
/** @type {HTMLElement} */
const cookie_item = document.querySelector("#" + id);
cookie_item && cookie_item.remove();
});
body.hasAttribute("style") && body.removeAttribute("style");
};
return Oposito;
})();
Oposito.quit_cookies();
Oposito.load_test();

View File

@ -0,0 +1,132 @@
"use strict";
export const TemariosEnPDF = (function(){
/**
* @callback temarios_en_pdf_preload_callback
* @param {?HTMLElement} item
* @returns {void}
*/
/**
* @constructs TemariosEnPDF
* @returns {void}
* @access private
* @static
*/
const TemariosEnPDF = function(){};
/**
* @param {!string} selector
* @param {!temarios_en_pdf_preload_callback} callback
* @returns {void}
* @access public
* @static
*/
TemariosEnPDF.preload = (selector, callback) => {
/** @type {number} */
let interval = setInterval(() => {
/** @type {?HTMLElement} */
const item = document.querySelector(selector);
if(item){
clearInterval(interval);
callback(item);
};
}, 100);
};
/**
* @param {!string} html
* @returns {string}
* @access public
* @static
*/
TemariosEnPDF.load_tests_from_txt_body = () => {
TemariosEnPDF.preload("body", body => {
/** @type {[string, string]} */
const [questions_box, results_box] = body.innerHTML.split(/[\r\n](?:PREGUNTAS TIPO TEST|PLANTILLA DE CONTESTACIÓN|CLAVES DE CONTESTACIÓN)[\r\n]/ig).filter((_, i) => i % 2),
/** @type {string[]} */
results = results_box.split(/[\r\n]+/).filter(line => /^[0-9]+[\s.-]*[A-Z]$/i.test(line)).map(line => line.replace(/^[0-9]+[\s.-]*/i, "").trim()),
/** @type {Array<{origin: string, sources: string[], title: string, queries: Array<{question: string, rights: string[], wrongs: string[]}>}>} */
data = [];
/** @type {string} */
let subject,
/** @type {string} */
group,
/** @type {number} */
i = -1,
/** @type {number} */
j,
/** @type {number|null} */
k = null,
/** @type {number} */
m;
questions_box.replace(/(?:(?:(?!(?:página\s+[0-9]+))(?:.|[\r\n]+))+)página\s+[0-9]\s*[\r\n]+/i, "").replace(/^www\.[^\r\n]+[\r\n]+©[^\r\n]+[\r\n]+/igm, "").replace(/^(?:[0-9]+\.\-\s*([^\r\n]+)|([a-z])\)\s*([^\r\n]+)|([^\r\n]+))/img, (_, question, identifier, answer, subtitle) => {
if(subtitle){
if(subtitle.toUpperCase() == subtitle){
if(subject){
if(j == -1)
data[i].title += " " + subtitle.trim();
else{
group = subtitle.trim();
data.push({
/** @type {string} */
origin : "temariosenpdf.es",
/** @type {Array.<string>} */
sources : ["https://temariosenpdf.es/archivos/50_Test_LOPD_3.pdf"],
/** @type {string} */
title : subject + " - " + group,
/** @type {Array.<Object.<string, string|Array.<string>>>} */
queries : []
});
i ++;
j = -1;
};
}else
subject = subtitle.trim();
}else{
if(k)
data[i].queries[j][k][m] = (data[i].queries[j][k][m] + " " + subtitle.trim()).replace(/\- /g, "");
else
data[i].queries[j].question = (data[i].queries[j].question + " " + subtitle.trim()).replace(/\- /g, "");
};
}else if(question){
k = null;
data[i].queries.push({
/** @type {string} */
question: question.trim(),
/** @type {Array.<string>} */
rights : [],
/** @type {Array.<string>} */
wrongs : []
});
j ++;
}else if(answer){
m = data[i].queries[j][k = results[j] == identifier ? "rights" : "wrongs"].length;
data[i].queries[j][k].push(answer.trim());
};
});
console.log(JSON.stringify(data));
});
};
TemariosEnPDF.load_direct_tests_from_html = () => {
TemariosEnPDF.preload("body", body => {
const data = [];
body.innerHTML.split(/[\r\n]CLAVES DE RESPUESTAS[\r\n]/i)[1].split(/[\r\n]+/).forEach(line => {});
});
};
return TemariosEnPDF;
}());

View File

@ -0,0 +1,92 @@
"use strict";
/**
* @class TestDeLeyCom
* @constructor
* @returns {void}
* @access public
* @static
*/
const TestDeLeyCom = (function(){
/**
* @constructs TestDeLeyCom
* @returns {void}
* @access private
* @static
*/
const TestDeLeyCom = function(){};
/** @type {Array.<Object.<string, any>>} */
TestDeLeyCom.DATA = [];
/**
* @returns {void}
* @access public
* @static
*/
TestDeLeyCom.load_data = () => {
/** @type {string} */
const title = document.querySelector("#centro .nombreley2").innerText.trim();
// No se establece como hijo porque hay casuística de anidamiento en UL.
if(!TestDeLeyCom.DATA.some(item => item.title == title)){
/** @type {number} */
const i = TestDeLeyCom.DATA.length;
TestDeLeyCom.DATA.push({
/** @type {string} */
origin : "TestTeLey.com",
/** @type {Array.<string>} */
sources : [window.location.href],
/** @type {string} */
title : title,
/** @type {Array.<Object.<string, string|Array.<string>>>} */
queries : []
});
document.querySelectorAll("#listado>li").forEach(query_box => {
/** @type {number} */
const query = query_box.childNodes[0].nodeValue.trim().replace(/^[0-9]+\.\s*/, "");
if(!TestDeLeyCom.DATA[i].queries.some(item => item.query == query)){
/** @type {number} */
const j = TestDeLeyCom.DATA[i].queries.length;
TestDeLeyCom.DATA[i].queries.push({
/** @type {string} */
query: query,
/** @type {Array.<string>} */
rights : [],
/** @type {Array.<string>} */
wrongs : []
});
query_box.querySelectorAll("div").forEach(answer_box => {
/** @type {string} */
const answer = answer_box.childNodes[0].nodeValue.trim(),
/** @type {string} */
type = answer_box.classList.contains("correcto") ? "rights" : "wrongs";
["rights", "wrongs"].some(type => TestDeLeyCom.DATA[i].queries[j][type].includes(answer)) ||
TestDeLeyCom.DATA[i].queries[j][type].push(answer);
});
};
});
};
console.log(JSON.stringify(TestDeLeyCom.DATA));
};
return TestDeLeyCom;
})();
TestDeLeyCom.load_data();

View File

@ -0,0 +1,100 @@
"use strict";
/**
* @class Check
* @constructor
* @returns {void}
* @access public
* @static
*/
export const Check = (function(){
/**
* @constructs Check
* @returns {void}
* @access private
* @static
*/
const Check = function(){};
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_string = item => typeof item == "string";
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_key = item => item && Check.is_string(item) && /^[a-z_][a-z0-9_]*$/i.test(item);
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_array = item => item instanceof Array;
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_dictionary = item => item && item.constructor == Object;
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_function = item => typeof item == "function";
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_html_item = item => item && (item.tagName || item.nodeName);
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_number = item => typeof item == "number";
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_integer = item => Check.is_number(item) && item == item >> 0;
/**
* @returns {boolean}
* @access public
* @static
*/
Check.is_dark_mode = () => !!window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches;
/**
* @param {?any} item
* @returns {boolean}
* @access public
* @static
*/
Check.is_null_or_undefined = item => item === null || item === undefined;
return Check;
})();

View File

@ -0,0 +1,329 @@
"use strict";
import {Check} from "./Check.ecma.js";
/**
* @class Utils
* @constructor
* @returns {void}
* @access public
* @static
*/
export const Utils = (function(){
/**
* @callback utils_execute_callback
* @param {...(any|null)} inputs
* @returns {any|null}
*/
/**
* @callback utils_default_callback
* @returns {void}
*/
/**
* @callback utils_execute_array_each_callback
* @param {?any} item
* @param {!utils_default_callback} callback
* @returns {void}
*/
/**
* @constructs Utils
* @returns {void}
* @access private
* @static
*/
const Utils = function(){};
/** @type {string} */
Utils.BASE64_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
/** @type {string} */
Utils.RANDOM_ALPHABET = "bHMnuamw/RUBk+xNvCXghsPdlSFG12rLoT0O3VZ=5QeWyI8pADqjcEfJ9Kt64i7Yz";
/**
* @param {...(any|null)} items
* @returns {Array<string>}
* @access public
* @static
*/
Utils.get_keys = (...items) => items.reduce((keys, item) => {
if(Check.is_key(item))
keys.push(item);
else if(Check.is_array(item))
keys.push(...Utils.get_keys(...item));
return keys;
}, []);
/**
* @param {...(any|null)} items
* @returns {Array.<Object.<string, any|null>>}
* @access public
* @static
*/
Utils.get_dictionaries = (...items) => items.reduce((dictionaries, item) => {
if(Check.is_dictionary(item))
dictionaries.push(item);
else if(Check.is_array(item))
dictionaries.push(...Utils.get_dictionaries(...item));
return dictionaries;
}, []);
/**
* @param {?any} items
* @param {!boolean} [overwrite = false]
* @returns {Object.<string, any|null>}
* @access public
* @static
*/
Utils.get_dictionary = (items, overwrite = false) => (
Check.is_dictionary ? items :
Check.is_array(items) ? items.reduce((dictionary, item) => {
if(Check.is_dictionary(item))
dictionary = overwrite ? {...dictionary, ...item} : {...item, ...dictionary};
else if(Check.is_array(item))
dictionary = {...dictionary, ...Utils.get_dictionary(item, overwrite)};
return dictionary;
}) :
{});
/**
* @param {!(string|Array.<string>)} keys
* @param {!(Object.<string, any|null>|Array.<any|null>)} inputs
* @param {?any} [_default = null]
* @returns {any|null}
* @access public
* @static
*/
Utils.get_value = (keys, inputs, _default = null) => {
/** @type {number} */
const l = (keys = Utils.get_keys(keys)).length;
if(l){
/** @type {number} */
const m = (inputs = Utils.get_dictionaries(inputs)).length;
for(let i = 0; i < l; i++)
for(let j = 0; j < m; j++)
if(keys[i] in inputs[j])
return inputs[j][keys[i]];
};
return _default;
};
/**
* @param {!string} string
* @param {!(Object.<string, any|null>|Array.<any|null>)} variables
* @param {?any} _default
* @returns {string}
* @access public
* @static
*/
Utils.string_variables = (string, variables, _default = null) => {
variables = Utils.get_dictionary(variables);
return ("" + string).replace(/\{([a-z_][a-z0-9_]*)\}/gi, (all, key) => (
key in variables ? variables[key] :
_default === null ? all :
_default));
};
/**
* @param {!string} string
* @returns {string}
* @access public
* @static
*/
Utils.to_kebab_case = string => ("" + string).replace(/([A-Z]+)|[^a-z0-9]+/g, (_, upper) => (
upper ? "-" + upper.toLowerCase() :
"-"));
/**
* @param {!HTMLElement} item
* @param {...Object.<string, any|null>} attributes
* @returns {void}
* @access public
* @static
*/
Utils.attributes = (item, attributes) => {
for(const [key, value] of Object.entries(attributes)){
if(/^on[_\-]?/i.test(key) && Check.is_function(value))
item.addEventListener(key.toLowerCase().replace(/^on[_\-]?/, ""), event => {
Utils.execute(value, item, event);
});
else
item.setAttribute(Utils.to_kebab_case(key), value);
};
};
/**
* @param {!HTMLElement} item
* @param {...(string|HTMLElement|[string, Object.<string, any|null>|null, string|Array.<string>|null]|null)} structure
* @returns {Array.<HTMLElement>}
* @access public
* @static
*/
Utils.html = (item, ...structure) => {
/** @type {Array.<HTMLElement>} */
const items = [];
item || (item = document.createDocumentFragment());
for(const node of structure)
if(Check.is_string(node))
item.innerHTML += node;
else if(Check.is_html_item(node))
items.push(item.appendChild(node));
else if(Check.is_array(node)){
/** @type {[string, Object.<string, any|null>|null, Array.<any|null>|null]} */
const [tag, attributes, children] = node.concat(null, null).slice(0, 3),
/** @type {HTMLElement} */
element = document.createElement(tag);
attributes && Utils.attributes(element, attributes);
if(children && children.length){
if(Check.is_string(children))
element.innerHTML += children;
else
Utils.html(element, ...children);
};
items.push(item.appendChild(element));
};
return items;
};
/**
* @param {?any} item
* @returns {any|null}
* @access public
* @static
*/
Utils.unique = item => (
Check.is_array(item) ? item.filter((item, i, array) => array.indexOf(item) == i) :
Check.is_string(item) ? item.split("").filter((char, i, array) => array.indexOf(char) == i).join("") :
item);
/**
* @param {?(number|Array.<any|null>|string)} [from = null]
* @param {?number} [to = null]
* @returns {any|null}
* @access public
* @static
*/
Utils.get_random = (from = null, to = null) => (
Check.is_array(from) || Check.is_string(from) ? from.length ? from[Math.random() * from.length >> 0] : null :
Check.is_integer(from) ? (
to === null ? Math.random() * from >> 0 :
Check.is_integer(to) ? from + (Math.random() * (to - from + 1) >> 0) :
Check.is_number(to) ? from + Math.random() * (to - from) :
null) :
Check.is_number(from) ? (
to === null ? Math.random() * from :
Check.is_number(to) ? from + Math.random() * (to - from) :
null) :
from === null ? Math.random() :
null);
/**
* @param {?any} data
* @returns {string}
* @access public
* @static
*/
Utils.encode_data = data => btoa(encodeURIComponent(JSON.stringify(data)).replace(/%([0-9A-F]{2})/g, (_, p1) => String.fromCharCode("0x" + p1)));
/**
* @param {!string} code
* @returns {any|null}
* @access public
* @static
*/
Utils.decode_data = code => {
/** @type {string} */
const data = decodeURIComponent(atob(code).split("").map(c => "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2)).join(""));
try{
return JSON.parse(data) || data;
}catch(exception){};
return data;
};
/**
* @param {!utils_execute_callback} callback
* @param {...(any|null)} inputs
* @returns {any|null}
* @access public
* @static
*/
Utils.execute = (callback, ...inputs) => (
Check.is_function(callback) ? callback(...inputs) :
null);
/**
* @param {!Array.<any|null>} array
* @param {!utils_execute_array_each_callback} each_callback
* @param {?utils_default_callback} [end_callback = null]
* @param {!number} [i = 0]
* @returns {void}
* @access public
* @static
*/
Utils.execute_array = (array, each_callback, end_callback = null, i = 0) => {
if(i < array.length)
Utils.execute(each_callback, array[i], () => {
Utils.execute_array(array, each_callback, end_callback, i + 1);
});
else
Utils.execute(end_callback);
};
/**
* @param {?any} item
* @returns {Array.<any|null>}
* @access public
* @static
*/
Utils.get_array = item => Check.is_array(item) ? item : [item];
/**
* @param {!string} string
* @returns {string}
* @access public
* @static
*/
Utils.randomize_string = string => string.split("").sort(() => Utils.get_random() - 0.5).join("");
/**
* @param {?any} data
* @returns {string}
* @access public
* @static
*/
Utils.encrypt_data = data => Utils.encode_data(data).split("").map(character => Utils.RANDOM_ALPHABET[Utils.BASE64_ALPHABET.indexOf(character)]).join("");
/**
* @param {string} data
* @returns {any|null}
* @access public
* @static
*/
Utils.decrypt_data = data => Utils.decode_data(data.split("").map(character => Utils.BASE64_ALPHABET[Utils.RANDOM_ALPHABET.indexOf(character)]).join(""));
return Utils;
})();

View File

@ -0,0 +1,137 @@
"use strict";
import {Utils} from "../Utils/Utils.ecma.js";
import {Check} from "../Utils/Check.ecma.js";
/**
* @class BaseView
* @constructor
* @param {!OpoTests} ot
* @returns {void}
* @access public
* @static
*/
export const BaseView = (function(){
/**
* @constructs BaseView
* @param {!OpoTests} ot
* @returns {void}
* @access private
* @static
*/
const BaseView = function(ot){
/** @type {BaseView} */
const self = this;
/**
* @returns {void}
* @access private
*/
const constructor = () => {};
/**
* @param {?(Object.<string, any|null>|Array.<any|null>)} [inputs = null]
* @returns {Array.<any>}
* @access public
*/
this.build = (inputs = null) => {
/** @type {string} */
const id = ot.settings.get(["id", "identifier"], inputs) || ot.identifiers.get(),
/** @type {string} */
name = ot.settings.get(["application_name", "name"], null, "OpoTests"),
/** @type {string} */
logo = ot.settings.get(["application_logo", "logo"], null, "https://opotests.k3y.pw/images/logo.webp"),
/** @type {string} */
link = ot.settings.get(["application_link", "application_url", "link", "url"], null, "https://opotests.k3y.pw"),
/** @type {string} */
git = ot.settings.get(["application_git", "git"], null, "https://git.k3y.pw/KyMAN/OpoTests/"),
/** @type {Object.<string, number>} */
screen = {x : 0, y : 0};
ot.preload("#" + id, (base, asynchronous, ok) => {
ok && setInterval(() => {
if(base.offsetWidth !== screen.x || base.offsetHeight !== screen.y){
/** @type {number} */
const cells = Number(base.getAttribute("data-cells")),
/** @type {number} */
size = Math.min(
screen.x = base.offsetWidth,
screen.y = base.offsetHeight
) / cells,
/** @type {number} */
minimum_size = Number(base.getAttribute("data-minimum-size"));
base.style.fontSize = (size < minimum_size ? minimum_size : size) + "px";
};
}, 1000 / ot.settings.get(["frames_per_second", "fps"], inputs, 24));
});
return ["div", {
class : Utils.unique(["opo-tests", "base-view", id].concat(ot.settings.get(["class", "classes"], inputs, []))).join(" "),
id : id,
data_hash : id,
data_application : name,
data_logo : logo,
data_link : link,
data_git : git,
data_cells : ot.settings.get("cells", inputs, 40),
data_minimum_size : ot.settings.get("minimum_size", inputs, 0),
data_gui_mode : Check.is_dark_mode() ? "dark" : "light",
}, [
["header", null, [
["h1", {title : name}, [
["a", {href: link, target: "_blank"}, [
ot.comp.image(logo, name),
["span", null, name]
]]
]],
["nav", {class : "header-menu"}, [
["ul", null, Object.entries({
home : link,
git : git
}).map(([key, link]) => ["li", {
data_i18n : key,
data_i18n_without : true,
title : ot.i18n.get(key)
}, [
["a", {
href : link,
target : "_blank",
}, [
ot.comp.icon(key),
ot.comp.i18n(key)
]]
]])]
]]
]],
["main"],
["footer", null, [
["p", {class : "licenses"}, [
["span", {class : "copyright"}, "© 2025-2026 KyMAN"],
["a", {
class : "cc-by-nc-sa-4",
href : "https://creativecommons.org/licenses/by-nc-sa/4.0/",
target : "_blank",
data_i18n : "cc_by_nc_sa_4",
data_i18n_without : true,
title : ot.i18n.get("cc_by_nc_sa_4", null, "Creative Commons BY-NC-SA (Attribution-NoCommerce-ShareDAlike) 4.0")
}, [
ot.comp.i18n("cc_by_nc_sa_4", "span", "Creative Commons BY-NC-SA (Attribution-NoCommerce-ShareDAlike) 4.0"),
ot.comp.image("https://licensebuttons.net/l/by-nc-sa/3.0/88x31.png", "cc_by_nc_sa_4", "Creative Commons BY-NC-SA (Attribution-NoCommerce-ShareDAlike) 4.0")
]],
]]
]]
]];
};
constructor();
};
return BaseView;
})();

View File

@ -0,0 +1,215 @@
"use strict";
import {Utils} from "../Utils/Utils.ecma.js";
/**
* @class MainFormView
* @constructor
* @param {!OpoTests} ot
* @returns {void}
* @access public
* @static
*/
export const MainFormView = (function(){
/**
* @constructs MainFormView
* @param {!OpoTests} ot
* @returns {void}
* @access private
* @static
*/
const MainFormView = function(ot){
/** @type {MainFormView} */
const self = this;
/**
* @returns {void}
* @access private
*/
const constructor = () => {};
/**
* @param {?(Object.<string, any|null>|Array.<any|null>)} [inputs = null]
* @returns {Array.<any>}
* @access public
*/
this.create = (inputs = null) => {
/** @type {Object.<string, [number, number, Array.<number>]>} */
const groups = {},
/** @type {Array.<[string, {data_visible: boolean, data_selected: boolean, data_i: number}, Array.<any>]>} */
subjects = [];
/** @type {number} */
let k = 0;
ot.database.forEach((block, i) => {
if(block.group){
if(groups[block.group]){
groups[block.group][1] += block.queries.length;
groups[block.group][2].push(i);
return;
};
groups[block.group] = [k, block.queries.length, [i]];
};
k ++;
subjects.push(["li", {
data_visible : true,
data_selected : false,
data_is : i
}, [
ot.comp.checkbox("blocks[]", false, (item, event) => {
item.closest("li").setAttribute("data-selected", item.checked);
}, (
`<span class="questions-number" title="` + ot.i18n.get("questions_number") + `">` + block.queries.length + `</span>` +
`<span class="group" title="` + block.origin + `">` + block.origin + `</span>` +
`<span class="title" title="` + block.title + `">` + block.title + `</span>`
))
]]);
});
Object.values(groups).forEach(([k, length, i]) => {
subjects[k][1].data_is = i.join(",");
subjects[k][2][0][2][2][2] = subjects[k][2][0][2][2][2].replace(/(class="questions-number"[^>]*>)[0-9]+</, `$1` + length + `<`);
});
console.log(subjects);
return ot.comp.form("test_creator", [
["custom", "blocks", ["div", {data_show_selected : false}, [
ot.comp.group("search",
["label", {
for : "search",
data_i18n : "search",
data_i18n_without : true,
title : ot.i18n.get("search")
}, [
ot.comp.icon("search"),
ot.comp.i18n("search")
]],
ot.comp.text("search", null, 250, null, (item, event) => {
/** @type {Array.<[boolean|null, boolean, string]>} */
const value = [];
item.value.trim().toLowerCase().replace(/(^|[&\|])(\!)?([^&\|]+)/g, (_, operator, not, data) => {
(data = data.trim()) &&
value.push([operator == "&" ? true : operator == "|" ? false : null, not, data]);
});
document.querySelectorAll("[data-i][data-i18n=blocks] li label>[data-i18n]").forEach(span => {
/** @type {HTMLLiElement} */
const list_item = span.closest("li");
if(!value.length)
list_item.setAttribute("data-visible", true);
else{
/** @type {string} */
const text = list_item.textContent.trim().toLowerCase();
/** @type {ok} */
let ok = true;
value.every(([operator, not, data]) => {
/** @type {boolean} */
let subok = not ? !text.includes(data) : text.includes(data);
if(operator)
return ok = ok && subok;
if(operator === false)
return ok || (ok = subok);
ok = subok;
return true;
});
list_item.setAttribute("data-visible", ok);
};
});
}, "search"),
ot.comp.button("select_all_visible", (item, event) => {
document.querySelectorAll("[data-i][data-i18n=blocks] li[data-visible=true]").forEach(list_item => {
list_item.querySelector("[type=checkbox]").checked = true;
});
}),
ot.comp.button("unselect_all_visible", (item, event) => {
document.querySelectorAll("[data-i][data-i18n=blocks] li[data-visible=true]").forEach(list_item => {
list_item.querySelector("[type=checkbox]").checked = false;
});
}),
ot.comp.checkbox("show_selected", false, (item, event) => {
item.closest("div").parentNode.setAttribute("data-show-selected", item.checked);
})
), ["nav", null, [
["ul", null, subjects]
]]
]]],
["number", "minimum_questions", ot.settings.get("minimum_questions", inputs, 20), 1, 250],
["number", "maximum_questions", ot.settings.get("maximum_questions", inputs, 100), 1, 250],
["number", "minimum_answers", ot.settings.get("minimum_answers", inputs, 4), 1, 20],
["number", "maximum_answers", ot.settings.get("maximum_answers", inputs, 4), 1, 20],
["checkbox", "allow_unique_right", ot.settings.get("allow_unique_right", inputs, true)],
["checkbox", "allow_multiple_answers", ot.settings.get("allow_multiple_answers", inputs, false)],
["checkbox", "allow_all_answers_false", ot.settings.get("allow_all_answers_false", inputs, true)],
["checkbox", "allow_all_answers_true", ot.settings.get("allow_all_answers_true", inputs, false)],
["checkbox", "allow_repeated_questions", ot.settings.get("allow_repeated_questions", inputs, true)],
["checkbox", "show_rights", ot.settings.get("show_rights", inputs, false)],
["checkbox", "show_results", ot.settings.get("show_results", inputs, true)],
], (item, event) => {
event.preventDefault();
/** @type {Object.<string, string|number|boolean|Array.<string|number|boolean>>} */
const data = ot.comp.get_form_data(item);
if(data.blocks.some(has => has)){
/** @type {NodeListOf<HTMLLIElement>} */
const blocks_items = document.querySelectorAll("[data-i][data-i18n=blocks] li"),
/** @type {Array.<number>} */
blocks = [];
data.blocks.forEach((selected, i) => {
selected && console.log([i, blocks_items[i]]);
selected &&
blocks.push(...blocks_items[i].getAttribute("data-is").split(",").map(Number));
})
data.blocks = blocks;
console.log(data);
ot.tests.build(data);
}else
ot.alert("need_one_block_at_least");
return false;
});
};
/**
* @param {?(Object.<string, any|null>|Array.<any|null>)} [inputs = null]
* @returns {void}
* @access public
*/
this.build = (inputs = null) => {
/** @type {HTMLMainElement} */
const main = document.querySelector("main");
main.innerHTML = ``;
Utils.html(main, self.create(inputs));
};
constructor();
};
return MainFormView;
})();

View File

@ -0,0 +1,481 @@
"use strict";
import {Utils} from "../Utils/Utils.ecma.js";
import {Check} from "../Utils/Check.ecma.js";
/**
* @class TestsView
* @constructor
* @param {!OpoTests} ot
* @returns {void}
* @access public
* @static
*/
export const TestsView = (function(){
/**
* @constructs TestsView
* @param {!OpoTests} ot
* @returns {void}
* @access private
* @static
*/
const TestsView = function(ot){
/** @type {TestsView} */
const self = this;
/**
* @returns {void}
* @access private
*/
const constructor = () => {};
/**
* @param {!Object.<string, number|boolean|Array.<boolean>>} data
* @param {?(Object.<string, any|null>|Array.<any|null>)} [inputs = null]
* @returns {Array.<any>}
* @access public
*/
this.create = (data, inputs = null) => {
console.log(data.blocks);
/** @type {Array.<any>} */
const info = [],
/** @type {Array.<[string]>} */
graphic = [],
/** @type {Array.<[number, number]>} */
all_questions = data.blocks.reduce((total, i) => (
total.concat(ot.database[i].queries.map((_, j) => [i, j]))
), []),
/** @type {Array.<[number, number]>} */
questions = [],
/** @type {number} */
number_of_questions = Utils.get_random(data.minimum_questions, data.maximum_questions);
do{
questions.push(...all_questions.sort(() => Math.random() - .5));
}while(data.allow_repeated_questions && questions.length < number_of_questions);
questions.splice(number_of_questions, questions.length);
return ["form", {
class : "test-form",
method : "get",
action : "#",
onsubmit : (item, event) => {
event.preventDefault();
return false;
},
data_show_rights : data.show_rights,
data_show_results : data.show_results
}, [
["fieldset", null, [
ot.comp.i18n("test", "legend"),
ot.comp.i18n("test_text", "p"),
["ul", {class : "test-info"}, info],
["section", null, questions.map(([i, j], q) => {
/** @type {Array.<string>} */
const answers = [],
/** @type {Array.<[string, boolean]>} */
raw_answers = [],
/** @type {Object.<[string, number|null], Array.<[string, boolean]>>} */
originals = ["rights", "wrongs"].reduce((all, key) => {
if(ot.database[i].queries[j][key]){
/** @type {boolean} */
const ok = key == "rights";
Check.is_array(ot.database[i].queries[j][key]) ||
(ot.database[i].queries[j][key] = [ot.database[i].queries[j][key]]);
ot.database[i].queries[j][key].forEach(answer => {
TestsView.add_answer_to(all, answer, ok);
});
ot.database[i].queries[j].brothers_are_wrongs &&
ot.database[i].queries.forEach((query, k) => {
k == j || query.rights.forEach(answer => {
TestsView.add_answer_to(all, answer, false);
});
});
};
return all;
}, []),
/** @type {number} */
number_of_answers = Utils.get_random(data.minimum_answers, data.maximum_answers),
/** @type {boolean} */
multiple_answers = data.allow_multiple_answers && (!data.allow_unique_right || Math.random() < .5)
/** @type {number} */
let x = 0;
for(let y = 0, tries = 0; y < number_of_answers && originals.length; y ++){
/** @type {number} */
let k = Utils.get_random(originals.length),
/** @type {[[string, number|null], boolean, boolean]} */
[[answer, probability], ok, dynamic] = [...originals[k]];
if(probability !== null && Math.random() > probability){
y --;
continue;
};
if(dynamic)
answer = TestsView.format(answer);
else
originals.splice(k, 1);
if(
answer &&
!raw_answers.some(([base, _]) => answer == base) &&
!originals.some(([base, right, _]) => (
right &&
!ok &&
answer == base &&
!originals.some(([base, right, _]) => !right && ok && answer == base)
))
){
if(ok){
if(!multiple_answers)
for(let z = originals.length - 1; z >= 0; z --)
originals[z][1] && originals.splice(z, 1);
};
raw_answers.push([answer, ok]);
}else
++ tries < 100 && y --;
};
if(!raw_answers.some(([_, ok]) => ok) && (!data.allow_all_answers_false || !multiple_answers))
TestsView.replace_answer(originals, raw_answers, true);
else if(!raw_answers.some(([_, ok]) => !ok) && !data.allow_all_answers_true)
TestsView.replace_answer(originals, raw_answers, false);
raw_answers.sort(() => Math.random() - .5).forEach(([answer, ok], i) => {
answers.push(answer);
ok && (x |= 1 << i);
});
return ["fieldset", {
data_q : q,
data_block : i,
data_question : j,
data_status : "unanswered",
data_x : x
}, [
["legend", null, "#" + (q + 1)],
["ul", {class : "block-info"}, [
["li", null, [
ot.comp.i18n("block", "strong"),
["span", null, ot.database[i].title]
]],
["li", null, [
ot.comp.i18n("question", "strong"),
["span", null, "#" + (j + 1)]
]],
["li", null, [
ot.comp.i18n("status", "strong"),
ot.comp.i18n("unanswered")
]]
]],
["p", null, TestsView.format(Check.is_array(ot.database[i].queries[j].question) ? Utils.get_random(ot.database[i].queries[j].question) : ot.database[i].queries[j].question)],
["ul", {class : "answers"}, answers.map((answer, i) => ["li", {data_i : i}, [
ot.comp[multiple_answers ? "checkbox" : "radio"]("q" + q + "[]", false, (item, event) => {
/** @type {HTMLFieldSetElement} */
const block = item.parentNode.parentNode.parentNode.parentNode,
/** @type {HTMLLiElement} */
status_field = block.querySelector("strong[data-i18n=status]+span"),
/** @type {HTMLFormElement} */
test_box = block.parentNode.parentNode.parentNode;
/** @type {string} */
let status,
/** @type {number} */
results;
if(item.getAttribute("type") == "radio")
block.querySelectorAll("[type=radio]").forEach(check_answer);
else
check_answer(item);
results = [...block.querySelectorAll("[data-right]")].reduce((status, item) => {
/** @type {string} */
const status_key = item.getAttribute("data-right");
return (
status_key == "false" ? status | 1 :
status_key == "true" ? status | 2 :
status_key == "null" ? status | 4 :
status);
}, 0);
status = (
results & 4 || test_box.getAttribute("data-show-results") == "false" ? "answered" :
results == 2 ? "right" :
results == 1 || item.getAttribute("type") == "radio" ? "wrong" :
"partially");
if(status_field.getAttribute("data-i18n") != status){
status_field.setAttribute("data-i18n", status);
status_field.innerText = ot.i18n.get(status);
block.setAttribute("data-status", status);
};
test_box.querySelector(".graphic [data-q='" + block.getAttribute("data-q") + "']").setAttribute("data-status", status);
}, answer, null, "answer_" + (i + 1)),
["span", {data_is_ok : !!(x & (1 << i))}],
["span", {data_right : null}]
]])]
]];
})],
["ul", {class : "graphic"}, questions.map((_, q) => ["li", {
data_q : q,
data_status : "unanswered"
}])],
ot.comp.buttons()
]]
]];
};
/**
* @param {!Object.<string, number|boolean|Array.<boolean>>} data
* @param {?(Object.<string, any|null>|Array.<any|null>)} [inputs = null]
* @returns {void}
* @access public
*/
this.build = (data, inputs = null) => {
/** @type {HTMLMainElement} */
const main = document.querySelector("main");
main.innerHTML = ``;
Utils.html(main, self.create(data, inputs));
};
/**
* @param {!HTMLInputElement} item
* @returns {void}
* @access private
*/
const check_answer = item => {
/** @type {HTMLLiElement} */
const level = item.parentNode.parentNode,
/** @type {boolean} */
is_right = level.querySelector("[data-is-ok]").getAttribute("data-is-ok") == "true";
level.querySelector("[data-right]").setAttribute("data-right", (item.checked && is_right) || (!item.checked && !is_right));
};
constructor();
};
/**
* @param {!string} string
* @returns {string}
* @access public
* @static
*/
TestsView.reformat_pattern = string => {
/** @type {Array.<string>} */
const fragments = [];
/** @type {number} */
let j = 0;
for(let i = 9; i > 1; i --)
string = string.replace(new RegExp("\\[" + i + "(?:(?!(?:" + i + "\\]))(?:.|[\\r\\n]+))+" + i + "\\]", "g"), match => {
fragments.push(match);
return "[" + j ++ + "]";
});
string = string.replace(/:::/g, "|");
while(string != (string = string.replace(/\${3}([0-9]+)\${3}/g, (_, j) => fragments[j])));
return string;
}
/**
* @param {!string} string
* @returns {string}
* @access public
* @static
*/
TestsView.format_substring = string => {
console.log(string);
return TestsView.format([9, 8, 7, 6, 5, 4, 3, 2, 1].reduce((string, i) => (
i == 1 ? TestsView.reformat_pattern(string.replace(new RegExp("(\\[)" + i + "|" + i + "(\\])", "g"), "$1$1$2$2")) :
string.replace(new RegExp("(\\[)" + i + "|" + i + "(\\])", "g"), "$1" + (i - 1) + "$2")), string));
};
/**
* @param {!string} type
* @param {!string} items
* @param {Object.<string, any|null>} shared
* @returns {string}
* @access public
* @static
*/
TestsView.build_rand = (type, items, shared) => TestsView.format_substring(Utils.get_random(items.split("|")));
/**
* @param {!string} type
* @param {!string} items
* @param {Object.<string, any|null>} shared
* @returns {string}
* @access public
* @static
*/
TestsView.build_range = (type, items, shared) => {
/** @type {Array.<number>} */
const range = Utils.get_random(items.split("|")).split("-").map(Number);
return range.length == 1 ? range[0] : Utils.get_random(...range);
};
/**
* @param {!string} type
* @param {!string} items
* @param {Object.<string, any|null>} shared
* @returns {string}
* @access public
* @static
*/
TestsView.build_serie = (type, items, shared) => {
/** @type {boolean} */
const start_serie = Check.is_null_or_undefined(shared.serie),
/** @type {[number, number]} */
[from, to] = Utils.get_random(items.split("|").map(item => item.split("-").map(Number)).filter(([from, to]) => (
start_serie || (isNaN(to) ? from : to) >= shared.serie
)));
return shared.serie = isNaN(to) ? from : Utils.get_random(start_serie ? from : Math.max(shared.serie, from), to);
};
/**
* @param {!string} type
* @param {!string} items
* @param {Object.<string, any|null>} shared
* @returns {string}
* @access public
* @static
*/
TestsView.build_mix = (type, items, shared) => {
/** @type {string} */
const nexus = items.match(/^[^,]+/)[0].trim(),
/** @type {Array.<string>} */
items_box = items.replace(/^[^,]+,/, "").split("|").sort(() => Math.random() - .5).map(TestsView.format_substring),
/** @type {number} */
last = items_box.length - 1;
type == "Mix" &&
(items_box[0] = items_box[0][0].toUpperCase() + items_box[0].slice(1).toLowerCase());
return items_box.slice(0, last).join(", ") + " " + nexus + " " + items_box[last];
};
/**
* @param {!string} type
* @param {!string} items
* @param {Object.<string, any|null>} shared
* @returns {string}
* @access public
* @static
*/
TestsView.build_select = (type, items, shared) => {
/** @type {[string, string, string, string]} */
const [_, range, nexus, items_string] = items.match(/^([^,]+),([^,]+),(.*)$/),
/** @type {Array.<string>} */
item_box = items_string.split("|").sort(() => Math.random() - .5).sort(() => Math.random() - .5).slice(0, ...range.split("-").map(Number)).map(TestsView.format_substring);
if(item_box.length < 2)
return item_box[0] || "";
/** @type {number} */
const last = item_box.length - 1;
type == "Select" &&
(item_box[0] = item_box[0][0].toUpperCase() + item_box[0].slice(1).toLowerCase());
return item_box.slice(0, last).join(", ") + " " + nexus + " " + item_box[last];
};
/**
* @param {!string} string
* @returns {string}
* @access public
* @static
*/
TestsView.format = string => {
/** @type {Object.<string, any|null>} */
const shared = {};
return string.replace(/\[{2}([^,\]]+),((?:(?!(?:\]\])).)+\]?)\]{2}/g, (original, type, items) => {
if(TestsView["build_" + type.toLowerCase()])
return TestsView["build_" + type.toLowerCase()](type, items, shared);
return original;
});
};
/**
* @param {!Array.<[string, boolean, boolean]>} originals
* @param {!Array.<[string, boolean]>} raw_answers
* @param {boolean} right
* @returns {void}
* @access public
* @static
*/
TestsView.replace_answer = (originals, raw_answers, right) => {
/** @type {Array.<[string, boolean, boolean]>} */
const set = originals.filter(([_, ok]) => right ? ok : !ok);
if(set.length)
while(true){
/** @type {number} */
const k = Utils.get_random(raw_answers.length),
/** @type {[string, boolean, boolean]} */
[[answer, probability], ok, dynamic] = Utils.get_random(set);
if(!probability || Math.random() < probability){
raw_answers.splice(k, 1, [dynamic ? TestsView.format(answer) : answer, ok]);
break;
};
};
};
/**
* @param {!Array.<[[string, number|null], boolean, boolean]>} answers
* @param {!(string|[string, number|null])} answer
* @param {!boolean} right
* @returns {void}
* @access public
* @static
*/
TestsView.add_answer_to = (answers, answer, right) => {
/** @type {[string, number|null]} */
const [text, probability] = Check.is_array(answer) ? answer : [answer, null];
answers.some(([[base, __], ..._]) => base == text) ||
answers.push([[text, probability], right, text.includes("[[")]);
};
return TestsView;
})();

View File

@ -0,0 +1,78 @@
"use strict";
import {Utils} from "../Utils/Utils.ecma.js";
/**
* @typedef {import("../OpoTests.ecma.js").OpoTests} OpoTests
*/
/**
* @class UserView
* @constructor
* @param {!OpoTests} ot
* @returns {void}
* @access public
* @static
*/
export const UserView = (function(){
/**
* @constructs UserView
* @param {!OpoTests} ot
* @returns {void}
* @access private
* @static
*/
const UserView = function(ot){
/** @type {Object.<string, string>} */
const data = {};
/**
* @returns {void}
* @access private
*/
const constructor = () => {
Object.entries(Utils.decrypt_data(UserView.DATA)).forEach(([key, value]) => {
data[key] = value;
});
};
/**
* @returns {Array.<any|null>}
* @access public
*/
this.build_login = callback => {
/** @type {HTMLMainElement} */
const main = document.querySelector("main");
Utils.html(main, ot.comp.form("login", [
["text", "username"],
["password", "password"]
], (item, event) => {
event.preventDefault();
/** @type {Object.<string, string|number|boolean|Array.<string|number|boolean>>} */
const subdata = ot.comp.get_form_data(item);
if(data[subdata.username.toLowerCase()] == subdata.password){
ot.cookies.set("ot", "1");
Utils.execute(callback);
}else
document.querySelector(".form-errors").appendChild(document.createElement("li")).innerText = ot.i18n.get("login_error");
return false;
}));
};
constructor();
};
/** @type {string} */
UserView.DATA = "rqRWrPETG0/t/VTQvcDpXjoE/0A0SZa8rX/t/Z+qFg/AkOh0Lvzz";
return UserView;
})();

33
Public/index.html Normal file
View File

@ -0,0 +1,33 @@
<!DOCTYPE html>
<html lang="es">
<head>
<title data_i18n="opo_tests">Opo Tests</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta charset="utf-8" />
<style type="text/css" data-type="text/css;charset=utf-8" charset="utf-8">
html,body{
margin : 0;
height : 100%;
}
</style>
<link type="text/css;charset=utf-8" data-language="CSS3" rel="stylesheet" href="/data/font-awesome-v6.7.2.local.css" data-crossorigin="anoymous" charset="utf-8" />
<link type="text/css;charset=utf-8" data-language="SASS/CSS3" rel="stylesheet" href="/scss/OpoTests.css" data-scss="/scss/OpoTests.scss" data-css-map="/scss/OpoTests.css.map" data-crossorigin="anoymous" charset="utf-8" />
<script type="module" data-type="text/javascript;charset=utf-8" data-language="ECMAScript 2015" charset="utf-8">
"use strict";
import {OpoTests} from "./ecma/Application/OpoTests.ecma.js";
const opo_tests = new OpoTests();
</script>
</head>
<body></body>
</html>

View File

@ -0,0 +1,10 @@
{
"default_settings_files" : ["/json/OpoTests.settings.json"],
"default_secrets_files" : ["/json/OpoTests.secrets.json"],
"default_i18n_files" : [
"/json/i18n/OpoTests.i18n.espanol.json",
"/json/i18n/OpoTests.i18n.galego.json",
"/json/i18n/OpoTests.i18n.english.json"
],
"default_database_files" : ["/json/database.json"]
}

153
Public/json/database.json Normal file
View File

@ -0,0 +1,153 @@
[
"/json/kyman/especifico/kyman.00.redes.00.tipos-area.json",
"/json/kyman/especifico/kyman.00.redes.01.tipologias.json",
"/json/kyman/especifico/kyman.00.redes.02.protocolos.json",
"/json/kyman/especifico/kyman.00.redes.03.ieee-802.json",
"/json/kyman/especifico/kyman.00.redes.04.ipv4.json",
"/json/kyman/especifico/kyman.00.redes.05.ipv6.json",
"/json/kyman/especifico/kyman.01.generaciones.json",
"/json/kyman/especifico/kyman.02.hardware.00.ics.json",
"/json/kyman/especifico/kyman.03.desarrollo.02.codificaciones-texto.json",
"/json/kyman/especifico/kyman.aa.red-sara.json",
"/json/kyman/comun/kyman.00.tipos-leyes.json",
"/json/paco/paco.ce.00.constitucion.json",
"/json/paco/paco.ce.01.constitucion.preliminar.json",
"/json/paco/paco.ce.02.constitucion.preliminar-articulado.json",
"/json/paco/paco.ce.03.constitucion.i.json",
"/json/paco/paco.ce.04.constitucion.i-articulado.json",
"/json/paco/paco.ce.05.constitucion.i-leyes.json",
"/data/json/baquedano/c-ejer-1-promo-sass-2025.json",
"/data/json/baquedano/c-ejer-1-libre-sas-2025.json",
"/data/json/laconstitucion.es/LaConstitucionEs.tests.00.ce-preliminar.json",
"/data/json/laconstitucion.es/LaConstitucionEs.tests.01.ce-01.json",
"/data/json/laconstitucion.es/LaConstitucionEs.tests.02.ce-02.json",
"/data/json/laconstitucion.es/LaConstitucionEs.tests.03.ce-03.json",
"/data/json/laconstitucion.es/LaConstitucionEs.tests.04.ce-04.json",
"/data/json/laconstitucion.es/LaConstitucionEs.tests.05.ce-05.json",
"/data/json/laconstitucion.es/LaConstitucionEs.tests.06.ce-06.json",
"/data/json/laconstitucion.es/LaConstitucionEs.tests.07.ce-07.json",
"/data/json/laconstitucion.es/LaConstitucionEs.tests.08.ce-08.json",
"/data/json/laconstitucion.es/LaConstitucionEs.tests.09.ce-09.json",
"/data/json/laconstitucion.es/LaConstitucionEs.tests.10.ce-10.json",
"/data/json/testdeley.com/testdeley.com.00.ce-preliminar.json",
"/data/json/testdeley.com/testdeley.com.01.ce-01.json",
"/data/json/testdeley.com/testdeley.com.02.ce-02.json",
"/data/json/testdeley.com/testdeley.com.03.ce-03.json",
"/data/json/testdeley.com/testdeley.com.04.ce-04.json",
"/data/json/testdeley.com/testdeley.com.05.ce-05.json",
"/data/json/testdeley.com/testdeley.com.06.ce-06.json",
"/data/json/testdeley.com/testdeley.com.07.ce-07.json",
"/data/json/testdeley.com/testdeley.com.08.ce-08.json",
"/data/json/testdeley.com/testdeley.com.09.ce-09-10.json",
"/data/json/testdeley.com/testdeley.com.10.39-2015-preliminar.json",
"/data/json/testdeley.com/testdeley.com.11.39-2015-i.json",
"/data/json/testdeley.com/testdeley.com.12.39-2015-ii.json",
"/data/json/testdeley.com/testdeley.com.13.39-2015-iii.json",
"/data/json/testdeley.com/testdeley.com.14.39-2015-iv.json",
"/data/json/testdeley.com/testdeley.com.15.39-2015-v.json",
"/data/json/testdeley.com/testdeley.com.16.39-2015-vi.json",
"/data/json/testdeley.com/testdeley.com.17.lopd-3-2018-i.json",
"/data/json/testdeley.com/testdeley.com.18.lopd-3-2018-ii.json",
"/data/json/testdeley.com/testdeley.com.19.lopd-3-2018-iii.json",
"/data/json/testdeley.com/testdeley.com.20.lopd-3-2018-iv.json",
"/data/json/testdeley.com/testdeley.com.21.lopd-3-2018-v.json",
"/data/json/testdeley.com/testdeley.com.22.lopd-3-2018-vi.json",
"/data/json/testdeley.com/testdeley.com.23.lopd-3-2018-vii.json",
"/data/json/testdeley.com/testdeley.com.24.lopd-3-2018-viii.json",
"/data/json/testdeley.com/testdeley.com.25.lopd-3-2018-ix.json",
"/data/json/testdeley.com/testdeley.com.26.lopd-3-2018-x.json",
"/data/json/testdeley.com/testdeley.com.27.trebep-5-2015-i-ii.json",
"/data/json/testdeley.com/testdeley.com.28.trebep-5-2015-iii.json",
"/data/json/testdeley.com/testdeley.com.29.trebep-5-2015-iv.json",
"/data/json/testdeley.com/testdeley.com.30.trebep-5-2015-v.json",
"/data/json/testdeley.com/testdeley.com.31.trebep-5-2015-vi.json",
"/data/json/testdeley.com/testdeley.com.32.trebep-5-2015-vii-viii.json",
"/data/json/testdeley.com/testdeley.com.33.3-2007-preliminar-i.json",
"/data/json/testdeley.com/testdeley.com.34.3-2007-ii.json",
"/data/json/testdeley.com/testdeley.com.35.3-2007-iii-iv.json",
"/data/json/testdeley.com/testdeley.com.36.3-2007-v.json",
"/data/json/testdeley.com/testdeley.com.37.3-2007-vi-vii-viii.json",
"/data/json/temariosenpdf.es/temariosenpdf.es.00.ce-00.json",
"/data/json/leyesdeoposiciones.es/leyesdeoposiciones.es.00.ce-00.json",
"/data/json/leyesdeoposiciones.es/leyesdeoposiciones.es.01.ea-00.json",
"/data/json/leyesdeoposiciones.es/leyesdeoposiciones.es.02.7-1985.json",
"/data/json/leyesdeoposiciones.es/leyesdeoposiciones.es.03.trebep-5-2015.json",
"/data/json/leyesdeoposiciones.es/leyesdeoposiciones.es.04.39-2015-preliminar.json",
"/data/json/leyesdeoposiciones.es/leyesdeoposiciones.es.05.39-2015-i.json",
"/data/json/leyesdeoposiciones.es/leyesdeoposiciones.es.06.39-2015-ii.json",
"/data/json/leyesdeoposiciones.es/leyesdeoposiciones.es.07.39-2015-iii.json",
"/data/json/leyesdeoposiciones.es/leyesdeoposiciones.es.08.39-2015-iv.json",
"/data/json/oposicion.es/oposicion.es.00.ce-caracteristicas.json",
"/data/json/oposicion.es/oposicion.es.01.ce-estructura.json",
"/data/json/oposicion.es/oposicion.es.02.ce-preliminar.json",
"/data/json/oposicion.es/oposicion.es.03.ce-t-i-c-i-ii.json",
"/data/json/oposicion.es/oposicion.es.04.ce-t-i-c-iii.json",
"/data/json/oposicion.es/oposicion.es.05.ce-t-i-c-iv-v.json",
"/data/json/oposicion.es/oposicion.es.06.ce-t-ii.json",
"/data/json/oposicion.es/oposicion.es.07.ce-t-iii-c-i.json",
"/data/json/oposicion.es/oposicion.es.08.ce-t-iii-c-ii-iii.json",
"/data/json/oposicion.es/oposicion.es.09.ce-t-iv.json",
"/data/json/oposicion.es/oposicion.es.10.ce-t-v.json",
"/data/json/oposicion.es/oposicion.es.11.ce-t-vi.json",
"/data/json/oposicion.es/oposicion.es.12.ce-t-vii.json",
"/data/json/oposicion.es/oposicion.es.13.ce-t-viii-c-i-ii.json",
"/data/json/oposicion.es/oposicion.es.14.ce-t-viii-c-iii-a.json",
"/data/json/oposicion.es/oposicion.es.15.ce-t-viii-c-iii-b.json",
"/data/json/oposicion.es/oposicion.es.16.ce-t-ix.json",
"/data/json/oposicion.es/oposicion.es.17.ce-t-x.json",
"/data/json/oposicion.es/oposicion.es.18.ce-disposiciones.json",
"/data/json/oposicion.es/oposicion.es.19-ea-preliminar.json",
"/data/json/oposicion.es/oposicion.es.20-ea-i.json",
"/data/json/oposicion.es/oposicion.es.21-ea-ii.json",
"/data/json/oposicion.es/oposicion.es.22-ea-iii-iv.json",
"/data/json/oposicion.es/oposicion.es.23-ea-v.json",
"/data/json/oposicion.es/oposicion.es.24-3-2007-estructura.json",
"/data/json/oposicion.es/oposicion.es.25-3-2007-preliminar.json",
"/data/json/oposicion.es/oposicion.es.26-3-2007-i.json",
"/data/json/oposicion.es/oposicion.es.27-3-2007-ii.json",
"/data/json/oposicion.es/oposicion.es.28-3-2007-iii.json",
"/data/json/oposicion.es/oposicion.es.29-3-2007-iv.json",
"/data/json/oposicion.es/oposicion.es.30-3-2007-v.json",
"/data/json/oposicion.es/oposicion.es.31-3-2007-vi-vii-viii.json",
"/data/json/oposicion.es/oposicion.es.32-trebep-i.json",
"/data/json/oposicion.es/oposicion.es.33-trebep-ii.json",
"/data/json/oposicion.es/oposicion.es.34-trebep-iii-c-i-ii.json",
"/data/json/oposicion.es/oposicion.es.35-trebep-iii-c-iii.json",
"/data/json/oposicion.es/oposicion.es.36-trebep-iii-c-iv-a.json",
"/data/json/oposicion.es/oposicion.es.37-trebep-iii-c-iv-b.json",
"/data/json/oposicion.es/oposicion.es.38-trebep-iii-c-iv-c.json",
"/data/json/oposicion.es/oposicion.es.39-trebep-iii-c-v.json",
"/data/json/oposicion.es/oposicion.es.40-trebep-iii-c-vi.json",
"/data/json/oposicion.es/oposicion.es.41-trebep-iv-a.json",
"/data/json/oposicion.es/oposicion.es.42-trebep-iv-b.json",
"/data/json/oposicion.es/oposicion.es.43-trebep-v.json",
"/data/json/oposicion.es/oposicion.es.44-trebep-vi.json",
"/data/json/oposicion.es/oposicion.es.45-trebep-vii.json",
"/data/json/oposicion.es/oposicion.es.46-trebep-viii.json",
"/json/random/random.ce.00.constitucion.json",
"/json/gemini/gemini.00.ce-preliminar.00.json",
"/json/gemini/gemini.01.ce-preliminar.01.json",
"/json/gpt5-mini/preliminar_qs_01.json",
"/json/gpt5-mini/preliminar_qs_02.json",
"/json/gpt5-mini/preliminar_qs_03.json",
"/json/gpt5-mini/preliminar_qs_04.json",
"/json/gpt5-mini/preliminar_qs_05.json",
"/json/gpt5-mini/preliminar_qs_06.json",
"/json/gpt5-mini/preliminar_qs_07.json",
"/json/gpt5-mini/preliminar_qs_08.json",
"/json/gpt5-mini/preliminar_qs_09.json",
"/json/gpt5-mini/preliminar_qs_10.json"
]

View File

@ -0,0 +1,23 @@
{
"origin" : "1noro",
"sources" : [
"https://www.gtt.es/",
""
],
"subjects" : [
"Linux", "Apache", "MySQL", "PHP", "Administración de Máquinas virtuais",
"Routers", "Firewall", "Switches", "backUps", "VPNs", "Administración de Office 365",
"Active Directory", "LDAP", "Herramientas de Pen Testing e Forenses",
"Conocimientos en la Nube en AWS, Azure e Google Cloud", "Docker",
"CI/CD", "MongDB", "Hibernate", "Redis fork Valkey",
"Planificar, ejecutar e organizar despliegues de aplicaciones en diferentes entornos",
"Ferramentas de monitorización como Zabbix, Nagios, Grafana, Prometheus, ELK",
"Ferramentas de centralización de Logs", "Análisis de rendimiento", "Resolución de incidencias",
"Cambios de modelos de bases de datos", "Servidores replicados de Bases de Datos",
"Permisos y roles en Bases de Datos"
],
"more" : [
"Cividas", "Nagios", "Red SARA", "SIR", "GPLi", "GTT",
"Apache Tomcat", "SQL Server BackUps", "BackUps de Windows y cintas"
]
}

View File

@ -0,0 +1,109 @@
[
{
"origin": "Gemini (Google)",
"sources": [
"https://www.boe.es/eli/es/c/1978/12/27/sin"
],
"title": "Título Preliminar de la Constitución Española (Artículos 1-9)",
"queries": [
{
"question": "Según el Artículo 1 de la Constitución, ¿en quién reside la soberanía nacional?",
"rights": [
"En el pueblo español, del que emanan los poderes del Estado."
],
"wrongs": [
"En el Rey, como Jefe del Estado.",
"En las Cortes Generales, como representantes de la soberanía.",
"En el conjunto de las [[rand,Comunidades Autónomas|nacionalidades y regiones]].",
"En el Gobierno de la Nación."
]
},
{
"question": "¿Cuáles son los valores superiores del ordenamiento jurídico español?",
"rights": [
"La libertad, la justicia, la igualdad y el pluralismo político."
],
"wrongs": [
"La libertad, la justicia, la [[rand,unidad|tradición|seguridad]] y el pluralismo político.",
"La monarquía, la unidad y la solidaridad entre españoles.",
"La soberanía nacional, la integridad territorial y el orden constitucional.",
"La Constitución establece [[range,2|3|5]] valores superiores."
]
},
{
"question": "La Constitución se fundamenta en la indisoluble unidad de la Nación española, patria común e indivisible de todos los españoles, y reconoce y garantiza el derecho a:",
"rights": [
"La autonomía de las nacionalidades y regiones que la integran y la solidaridad entre todas ellas."
],
"wrongs": [
"La [[rand,independencia|autodeterminación|secesión]] de las nacionalidades y regiones.",
"La soberanía particular de cada una de las nacionalidades y regiones.",
"La gestión centralizada de todas las competencias por parte del Estado.",
"La supresión de las diferencias entre las distintas regiones de España."
]
},
{
"question": "Referente a las lenguas de España según el Artículo 3...",
"rights": [
"El castellano es la lengua española oficial del Estado y las demás lenguas españolas serán también oficiales en las respectivas Comunidades Autónomas de acuerdo con sus Estatutos."
],
"wrongs": [
"El castellano es la única lengua oficial en todo el territorio español, sin excepciones.",
"El [[rand,catalán|gallego|euskera]] es también lengua oficial en todo el Estado, junto al castellano.",
"Todas las lenguas de España son cooficiales en todo el territorio nacional.",
"La riqueza de las distintas modalidades lingüísticas de España es un patrimonio cultural que [[rand,debe ser ignorado|no tiene protección especial]]."
]
},
{
"question": "¿Cuál es la capital del Estado español?",
"rights": [
"La villa de Madrid."
],
"wrongs": [
"La ciudad de [[rand,Toledo|Valladolid|Barcelona|Sevilla]].",
"La Constitución no establece una capital fija.",
"Cualquier ciudad con más de [[range,1-2]] millón de habitantes.",
"La capital es rotatoria entre las ciudades más importantes."
]
},
{
"question": "El Título Preliminar de la Constitución Española comprende los artículos del [[serie,1-4]] al [[serie,5-9]]. ¿Qué artículo establece que los partidos políticos expresan el pluralismo político y son instrumento fundamental para la participación política?",
"rights": [
"El artículo 6."
],
"wrongs": [
"El artículo [[range,1-5|7-9]].",
"El artículo 1, que define la soberanía nacional.",
"El artículo 9, que habla de la sujeción a la Constitución.",
"No se especifica en el Título Preliminar."
]
},
{
"question": "La misión de las Fuerzas Armadas, constituidas por el Ejército de Tierra, la Armada y el Ejército del Aire, es:",
"rights": [
"Garantizar la soberanía e independencia de España, defender su integridad territorial y el ordenamiento constitucional."
],
"wrongs": [
"Mantener el orden público y la seguridad ciudadana en todo el territorio.",
"Ejercer el poder [[rand,ejecutivo|judicial]] en situaciones de emergencia.",
"Participar exclusivamente en misiones internacionales bajo mandato de la [[rand,ONU|OTAN]].",
"Controlar las [[rand,fronteras|aduanas]] y la inmigración ilegal."
]
},
{
"question": "El artículo 9.3 de la Constitución garantiza varios principios. ¿Cuál de los siguientes NO es uno de ellos?",
"rights": [
"El principio de [[rand,confidencialidad|opacidad]] normativa.",
"El principio de supremacía del poder ejecutivo sobre el judicial.",
"El principio de retroactividad de las normas favorables."
],
"wrongs": [
"El principio de legalidad y la jerarquía normativa.",
"La publicidad de las normas.",
["La irretroactividad de las disposiciones sancionadoras no favorables o restrictivas de derechos individuales.", 0.8],
"La seguridad jurídica, la responsabilidad y la interdicción de la arbitrariedad de los poderes públicos."
]
}
]
}
]

View File

@ -0,0 +1,131 @@
[
{
"origin": "Gemini (Google)",
"sources": [
"https://www.boe.es/eli/es/c/1978/12/27/sin"
],
"title": "Título Preliminar de la Constitución Española (Artículos 1-9) - Parte 2",
"queries": [
{
"question": "De acuerdo con el artículo 2 de la Constitución, la solidaridad entre las nacionalidades y regiones que integran España es un principio que...",
"rights": [
"La Constitución reconoce y garantiza."
],
"wrongs": [
"Es un objetivo a alcanzar en el futuro.",
"Depende de la voluntad de cada [[rand,Comunidad Autónoma|región]].",
"Se aplica únicamente en situaciones de [[rand,crisis económica|catástrofe natural]].",
"No se menciona explícitamente en el Título Preliminar."
]
},
{
"question": "¿Qué forma política tiene el Estado español según el artículo 1.3?",
"rights": [
"Monarquía parlamentaria."
],
"wrongs": [
"República federal.",
"[[rand,Monarquía absoluta|República presidencialista]].",
"Estado socialista.",
"Confederación de estados."
]
},
{
"question": "El artículo 5 establece que la capital del Estado es la villa de Madrid. ¿Podría cambiarse la capital mediante una ley orgánica?",
"rights": [
"No, requeriría una reforma constitucional."
],
"wrongs": [
"Sí, bastaría con una ley orgánica aprobada por [[rand,mayoría simple|mayoría absoluta]].",
"Sí, mediante un [[rand,referéndum|decreto ley]] del Gobierno.",
"No, la capitalidad de Madrid es inalterable por cualquier vía.",
"Dependería de la aprobación del [[rand,Senado|Rey|Tribunal Constitucional]]."
]
},
{
"question": "Según el artículo 7, ¿cuál es el papel de los sindicatos de trabajadores y las asociaciones empresariales?",
"rights": [
"Contribuyen a la defensa y promoción de los intereses económicos y sociales que les son propios."
],
"wrongs": [
"Son los únicos autorizados para negociar convenios colectivos.",
"Tienen la obligación de afiliar a todos los [[rand,trabajadores|empresarios]].",
"Su creación y funcionamiento deben ser regulados por el Gobierno.",
"Actúan como [[rand,órganos consultivos|representantes]] del Estado en el ámbito laboral."
]
},
{
"question": "El artículo 8.1 de la Constitución asigna a las Fuerzas Armadas la misión de garantizar la soberanía e independencia de España, entre otras. ¿Quién ostenta el mando supremo de las Fuerzas Armadas?",
"rights": [
"El Rey."
],
"wrongs": [
"El [[rand,Presidente del Gobierno|Ministro de Defensa|Jefe del Estado Mayor de la Defensa]].",
"Las Cortes Generales.",
"El Consejo de Ministros.",
"Un mando rotatorio entre los [[range,3]] ejércitos."
]
},
{
"question": "El artículo 9.1 establece que los ciudadanos y los poderes públicos están sujetos a la Constitución y al resto del ordenamiento jurídico. Esto consagra el principio de:",
"rights": [
"Legalidad."
],
"wrongs": [
"[[rand,Jerarquía normativa|Seguridad jurídica|Publicidad de las normas]].",
"Irretroactividad.",
"Interdicción de la arbitrariedad.",
"Responsabilidad de los poderes públicos."
]
},
{
"question": "La bandera de España está formada por tres franjas horizontales, roja, amarilla y roja, siendo la amarilla de...",
"rights": [
"Doble anchura que cada una de las rojas."
],
"wrongs": [
"Igual anchura que cada una de las rojas.",
"[[rand,Mitad de anchura|Triple anchura]] que cada una de las rojas.",
"La Constitución no especifica la anchura de las franjas.",
["Un color [[rand,dorado|gualda]] específico.", 0.5]
]
},
{
"question": "¿Qué artículo del Título Preliminar afirma que la ignorancia de las leyes no excusa de su cumplimiento?",
"rights": [
"Ninguno, ese principio no se recoge explícitamente en la Constitución, sino en el Código Civil."
],
"wrongs": [
"El artículo 9.1, al hablar de la sujeción a la ley.",
"El artículo 6 del Código Civil, no de la Constitución.",
"El artículo [[range,1-9]], aunque no recuerdo cuál.",
"Está implícito en el principio de publicidad de las normas (art. 9.3)."
]
},
{
"question": "Los partidos políticos, según el artículo 6, concurren a la formación y manifestación de la voluntad popular. ¿Cómo debe ser su estructura interna y funcionamiento?",
"rights": [
"Democráticos."
],
"wrongs": [
"[[rand,Jerárquicos|Libres|Centralizados]].",
"La Constitución no establece requisitos al respecto.",
"Deben seguir el modelo que establezca el [[rand,Gobierno|Ministerio del Interior]].",
"Tienen que ser aprobados por las Cortes Generales."
]
},
{
"question": "El Título Preliminar abarca desde el artículo [[serie,1-3]] hasta el [[serie,4-9]]. ¿Qué valor superior del ordenamiento jurídico NO se menciona en el artículo 1.1?",
"rights": [
"La [[rand,dignidad humana|solidaridad|unidad]]."
],
"wrongs": [
"La libertad.",
"La justicia.",
"La igualdad.",
"El pluralismo político."
]
}
]
}
]

View File

@ -0,0 +1,46 @@
[{
"original" : "GTP5 mini (Copilot Tab)",
"title" : "Constitución Española - Preámbulo",
"sources" : [],
"questions" : [{
"question" : "¿Qué es el preámbulo de la Constitución Española?",
"rights" : ["Una declaración solemne que expresa los valores y principios fundamentales en los que se basa la Constitución."],
"wrongs" : ["Un conjunto de artículos que desarrollan los derechos fundamentales.", "Una sección que establece la estructura del gobierno.", "Un resumen de las leyes principales del país."]
}, {
"question" : "¿Cuál es la función principal del preámbulo en la Constitución Española?",
"rights" : ["Establecer los valores y principios que guían la interpretación y aplicación de la Constitución."],
"wrongs" : ["Detallar los derechos y deberes de los ciudadanos.", "Describir la estructura del gobierno y sus funciones.", "Proporcionar un resumen de las leyes principales del país."]
}, {
"question" : "¿Qué valores fundamentales se destacan en el preámbulo de la Constitución Española?",
"rights" : ["Libertad, justicia, igualdad y pluralismo político."],
"wrongs" : ["Seguridad, orden, tradición y autoridad.", "Riqueza, poder, control y dominación.", "Unidad, homogeneidad, conformidad y obediencia."]
}, {
"question" : "¿Qué principios se mencionan en el preámbulo de la Constitución Española?",
"rights" : ["Democracia, Estado de Derecho, soberanía nacional y derechos humanos."],
"wrongs" : ["Monarquía, autoritarismo, control estatal y censura.", "Anarquía, caos, desorden y falta de leyes.", "Dictadura, represión, opresión y falta de derechos."]
}, {
"question" : "¿Cuál es el propósito del preámbulo en la Constitución Española?",
"rights" : ["Inspirar y guiar la interpretación y aplicación de la Constitución."],
"wrongs" : ["Establecer las leyes y regulaciones específicas del país.", "Describir la estructura del gobierno y sus funciones.", "Proporcionar un resumen de las leyes principales del país."]
}, {
"question" : "¿Qué papel juega el preámbulo en la interpretación de la Constitución Española?",
"rights" : ["Proporciona un contexto y una guía para interpretar los artículos de la Constitución."],
"wrongs" : ["Establece las leyes y regulaciones específicas del país.", "Desarrolla los derechos y deberes de los ciudadanos.", "Describe la estructura del gobierno y sus funciones."]
}, {
"question" : "¿Cómo se relaciona el preámbulo con los derechos fundamentales en la Constitución Española?",
"rights" : ["El preámbulo establece los valores y principios que respaldan los derechos fundamentales."],
"wrongs" : ["El preámbulo detalla los derechos y deberes específicos de los ciudadanos.", "El preámbulo describe la estructura del gobierno y sus funciones.", "El preámbulo proporciona un resumen de las leyes principales del país."]
}, {
"question" : "¿Qué importancia tiene el preámbulo en la Constitución Española?",
"rights" : ["Es fundamental para entender los valores y principios que sustentan la Constitución."],
"wrongs" : ["Es un componente menor sin relevancia en la interpretación de la Constitución.", "Es un resumen de las leyes principales del país sin impacto en la interpretación constitucional.", "Es una sección que detalla los derechos y deberes específicos de los ciudadanos."]
}, {
"question" : "¿Qué elementos no se encuentran en el preámbulo de la Constitución Española?",
"rights" : ["Leyes y regulaciones específicas del país."],
"wrongs" : ["Valores y principios fundamentales.", "Declaraciones solemnes sobre la democracia y los derechos humanos.", "Guías para la interpretación y aplicación de la Constitución."]
}, {
"question" : "¿Qué tipo de norma es la Constitución Española?",
"rights" : ["La norma suprema del ordenamiento jurídico español."],
"wrongs" : ["Una ley ordinaria.", "Un reglamento administrativo.", "Una orden ministerial."]
}]
}]

View File

@ -0,0 +1,66 @@
[{
"original" : "GTP5 mini (Copilot Tab)",
"title" : "Constitución Española - Estructura",
"sources" : [],
"queries" : [{
"question" : "¿Qué es la Constitución Española?",
"rights" : ["La norma suprema del ordenamiento jurídico español"],
"wrongs" : ["Una ley ordinaria", "Una ley orgánica", "Un real decreto"]
}, {
"question" : "¿Cuántos títulos tiene la Constitución Española?",
"rights" : ["11"],
"wrongs" : ["10", "12", "9"]
}, {
"question" : "¿Cuántos artículos tiene la Constitución Española?",
"rights" : ["169"],
"wrongs" : ["168", "170", "165"]
}, {
"question" : "¿En qué año se aprobó la Constitución Española?",
"rights" : ["1978"],
"wrongs" : ["1977", "1980", "1982"]
}, {
"question" : "¿Qué título de la Constitución Española regula los derechos y deberes fundamentales?",
"rights" : ["Título I"],
"wrongs" : ["Título II", "Título III", "Título IV"]
}, {
"question" : "¿Qué título de la Constitución Española regula la Corona?",
"rights" : ["Título II"],
"wrongs" : ["Título I", "Título III", "Título IV"]
}, {
"question" : "¿Qué título de la Constitución Española regula las Cortes Generales?",
"rights" : ["Título III"],
"wrongs" : ["Título I", "Título II", "Título IV"]
}, {
"question" : "¿Qué título de la Constitución Española regula el Gobierno y la Administración?",
"rights" : ["Título IV"],
"wrongs" : ["Título I", "Título II", "Título III"]
}, {
"question" : "¿Qué título de la Constitución Española regula las relaciones entre el Gobierno y las Cortes Generales?",
"rights" : ["Título V"],
"wrongs" : ["Título I", "Título II", "Título III"]
}, {
"question" : "¿Qué título de la Constitución Española regula el Poder Judicial?",
"rights" : ["Título VI"],
"wrongs" : ["Título I", "Título II", "Título III"]
}, {
"question" : "¿Qué título de la Constitución Española regula la Economía y Hacienda?",
"rights" : ["Título VII"],
"wrongs" : ["Título I", "Título II", "Título III"]
}, {
"question" : "¿Qué título de la Constitución Española regula la Organización Territorial del Estado?",
"rights" : ["Título VIII"],
"wrongs" : ["Título I", "Título II", "Título III"]
}, {
"question" : "¿Qué título de la Constitución Española regula la Defensa?",
"rights" : ["Título IX"],
"wrongs" : ["Título I", "Título II", "Título III"]
}, {
"question" : "¿Qué título de la Constitución Española regula la Reforma Constitucional?",
"rights" : ["Título X"],
"wrongs" : ["Título I", "Título II", "Título III"]
}, {
"question" : "¿Qué título de la Constitución Española regula la Disposición General y Transitoria?",
"rights" : ["Título XI"],
"wrongs" : ["Título I", "Título II", "Título III"]
}]
}]

View File

@ -0,0 +1,58 @@
[
{
"origin": "GPT-5 mini (Copilot)",
"title": "Título Preliminar - Bloque 1",
"queries": [
{
"question": "¿Qué principio expresa que la soberanía reside en el pueblo español?",
"rights": ["La soberanía nacional"],
"wrongs": ["El poder del rey", "La soberanía de las autonomías", "La soberanía de los municipios"]
},
{
"question": "¿Cuál es la forma política del Estado según el Título Preliminar?",
"rights": ["Monarquía parlamentaria"],
"wrongs": ["República presidencial", "Estado federal", "Confederación"]
},
{
"question": "¿Qué norma tiene supremacía sobre todas las demás en España?",
"rights": ["La Constitución"],
"wrongs": ["Las leyes orgánicas", "Los tratados internacionales", "Los reglamentos municipales"]
},
{
"question": "Respecto a la indisoluble unidad de la Nación, ¿qué reconoce el Título Preliminar?",
"rights": ["La indisoluble unidad de la Nación española y el derecho a la autonomía de las nacionalidades y regiones"],
"wrongs": ["El derecho de secesión de las regiones", "La primacía de las autonomías sobre el Estado", "La desaparición de la Nación española"]
},
{
"question": "¿Qué valor constitucional protege la igualdad de todos los españoles?",
"rights": ["La igualdad ante la ley"],
"wrongs": ["La igualdad solo ante los tribunales", "La desigualdad por origen", "La desigualdad administrativa"]
},
{
"question": "¿Qué principio recoge el Título Preliminar sobre los derechos fundamentales?",
"rights": ["La protección y garantía de los derechos y libertades"],
"wrongs": ["La suspensión permanente de derechos", "El sometimiento de derechos a normas administrativas", "El predominio de los poderes locales sobre derechos fundamentales"]
},
{
"question": "¿Qué elemento no forma parte del Título Preliminar?",
"rights": ["Reglas detalladas de procedimiento parlamentario"],
"wrongs": ["Principio de legalidad", "Soberanía nacional", "Forma política del Estado"]
},
{
"question": "¿Qué principio organiza la estructura del poder político según el Título Preliminar?",
"rights": ["La división de poderes y su coordinación mediante la Constitución"],
"wrongs": ["Concentración de poderes en el ejecutivo", "Supremacía judicial sobre la Constitución", "El poder absoluto del legislativo"]
},
{
"question": "¿Cómo define el Título Preliminar la posición de España en cuanto a la ley internacional?",
"rights": ["La Constitución integra a España en la comunidad internacional y reconoce el valor de los tratados"],
"wrongs": ["Los tratados están por encima de la Constitución", "España no participa en tratados internacionales", "Los tratados sustituyen a las leyes orgánicas"]
},
{
"question": "¿Qué papel tienen los poderes públicos según el Título Preliminar?",
"rights": ["Actuar conforme a la Constitución y al principio de legalidad"],
"wrongs": ["Actuar al margen de la Constitución", "Someter la Constitución a decisiones administrativas", "Ignorar el principio de legalidad"]
}
]
}
]

View File

@ -0,0 +1,58 @@
[
{
"origin": "GPT-5 mini (Copilot)",
"title": "Título Preliminar - Bloque 2",
"queries": [
{
"question": "¿Qué artículo declara la supremacía constitucional en España?",
"rights": ["El artículo que establece la Constitución como norma suprema"],
"wrongs": ["El artículo sobre el Consejo de Ministros", "El artículo sobre el Tribunal Constitucional", "El artículo que regula presupuestos"]
},
{
"question": "¿La Constitución reconoce la autonomía de las nacionalidades y regiones?",
"rights": ["Sí, reconoce el derecho a la autonomía"],
"wrongs": ["No, prohíbe la autonomía", "Solo reconoce autonomía municipal", "Reconoce autonomía solo a ciertas provincias"]
},
{
"question": "¿Qué principio constitucional protege la libertad ideológica?",
"rights": ["La protección de los derechos y libertades fundamentales"],
"wrongs": ["La prohibición de idéas políticas", "La censura obligatoria", "La sujeción de pensamiento al ejecutivo"]
},
{
"question": "¿Cuál es la base de la legalidad en España según el Título Preliminar?",
"rights": ["La Constitución y las normas que de ella emanen"],
"wrongs": ["La ley del más fuerte", "Decretos sin control parlamentario", "Reglamentos por encima de la Constitución"]
},
{
"question": "¿Qué principio garantiza el respeto a la ley por parte de los poderes públicos?",
"rights": ["El principio de legalidad"],
"wrongs": ["La arbitrariedad administrativa", "La sujeción solo al ejecutivo", "La desobediencia a la Constitución"]
},
{
"question": "¿Qué se entiende por Estado social y democrático de derecho?",
"rights": ["Un Estado que garantiza derechos sociales, políticos y el respeto al imperio de la ley"],
"wrongs": ["Un Estado autoritario", "Un Estado sin separación de poderes", "Un Estado que no garantiza derechos sociales"]
},
{
"question": "¿Qué elemento no expresa el Título Preliminar?",
"rights": ["Procedimientos detallados de recurso ante tribunales administrativos"],
"wrongs": ["Soberanía popular", "Supremacía constitucional", "Estado social y democrático de derecho"]
},
{
"question": "¿Qué valor tiene la Constitución para los poderes públicos?",
"rights": ["Marco fundamental y límite para su actuación"],
"wrongs": ["Opcional y dependiente de la voluntad del gobierno", "Sustituible por acuerdos locales", "Irrelevante para la administración pública"]
},
{
"question": "¿Qué principio se relaciona con la protección de los derechos humanos?",
"rights": ["La dignidad de la persona y la igualdad"],
"wrongs": ["La supremacía del mercado", "La supresión de derechos civiles", "La desigualdad institucionalizada"]
},
{
"question": "¿Cómo se garantizan las libertades públicas en la Constitución según el Título Preliminar?",
"rights": ["Mediante su reconocimiento y los mecanismos legales de protección"],
"wrongs": ["Con suspensiones permanentes", "Con arbitrariedad administrativa", "Con supresión sin control judicial"]
}
]
}
]

View File

@ -0,0 +1,58 @@
[
{
"origin": "GPT-5 mini (Copilot)",
"title": "Título Preliminar - Bloque 3",
"queries": [
{
"question": "¿Qué principio constitucional garantiza la tutela judicial efectiva?",
"rights": ["La tutela judicial efectiva frente a actos que vulneren derechos"],
"wrongs": ["La ausencia de recursos", "La tutela solo administrativa", "La inactividad judicial obligatoria"]
},
{
"question": "¿Qué valor tiene la Constitución en relación a los tratados internacionales?",
"rights": ["Los tratados internacionalmente son parte del ordenamiento y deben respetarse"],
"wrongs": ["Los tratados están por encima de la Constitución", "España no cumple tratados", "Los tratados no tienen efecto legal"]
},
{
"question": "¿Qué se afirma sobre la forma de Estado y su unidad?",
"rights": ["La unidad de la Nación y la Constitución de un Estado social y democrático de Derecho"],
"wrongs": ["Fragmentación del Estado en entidades soberanas", "La abolición de la Nación", "La primacía de municipios sobre el Estado"]
},
{
"question": "¿Qué principio está relacionado con la igualdad de los españoles ante la ley?",
"rights": ["Igualdad y no discriminación por nacimiento, raza, sexo, religión u opinión"],
"wrongs": ["Preferencia por origen", "Discriminación legalizada", "Derechos diferenciados por región"]
},
{
"question": "¿Cómo se describen las fuentes del ordenamiento jurídico?",
"rights": ["Constitución, leyes, reglamentos y tratados conforme a la jerarquía normativa"],
"wrongs": ["Reglamentos por encima de la Constitución", "Fuentes arbitrarias", "Normas sin jerarquía"]
},
{
"question": "¿Qué limita la actuación de los poderes públicos?",
"rights": ["La Constitución y las leyes"],
"wrongs": ["La voluntad individual del gobernante", "La supresión de controles", "El capricho administrativo"]
},
{
"question": "¿Qué característica no corresponde al Título Preliminar?",
"rights": ["Normas procesales detalladas de cada jurisdicción"],
"wrongs": ["Principios constitucionales", "Supremacía de la Constitución", "Soberanía nacional"]
},
{
"question": "¿Qué sentido tiene la referencia a la dignidad humana en el Texto Constitucional?",
"rights": ["Fundamento de los derechos y libertades"],
"wrongs": ["Base para la discriminación", "Razón para limitar derechos sin control", "Ninguna trascendencia legal"]
},
{
"question": "¿Qué papel tiene la separación de poderes según el Título Preliminar?",
"rights": ["Evitar la concentración del poder y garantizar controles"],
"wrongs": ["Concentrar el poder en uno solo", "Eliminar controles judiciales", "Someter el legislativo al ejecutivo"]
},
{
"question": "¿Qué relación establece el Título Preliminar con las comunidades autónomas?",
"rights": ["Reconocimiento del derecho a la autonomía y la organización en el marco de la Constitución"],
"wrongs": ["Independencia automática", "Anulación de la Constitución por autonomías", "Supremacía absoluta de las comunidades"]
}
]
}
]

View File

@ -0,0 +1,58 @@
[
{
"origin": "GPT-5 mini (Copilot)",
"title": "Título Preliminar - Bloque 4",
"queries": [
{
"question": "¿Qué artículo establece la dignidad humana como fundamento?",
"rights": ["El artículo que reconoce la dignidad de la persona como fundamento de los derechos"],
"wrongs": ["El artículo que regula impuestos", "El artículo sobre la Hacienda pública", "El artículo sobre definiciones de municipios"]
},
{
"question": "¿Cuál es el papel de la Constitución en la organización territorial?",
"rights": ["Establecer el marco para la autonomía y la unidad de la Nación"],
"wrongs": ["Dejar la organización territorial sin reglas", "Dar independencia plena a cada provincia", "Imponer una estructura federal sin pacto constitucional"]
},
{
"question": "¿Qué principio ayuda a legitimar la actuación de los poderes públicos?",
"rights": ["El principio democrático y la sujeción a la ley"],
"wrongs": ["La imposición sin representación", "El ejercicio arbitrario del poder", "La desobediencia jurídica"]
},
{
"question": "¿Qué protege el Título Preliminar respecto a la libertad religiosa?",
"rights": ["La libertad religiosa y la no confesionalidad del Estado"],
"wrongs": ["La religión oficial obligatoria", "La prohibición de religión", "La subordinación del Estado a una confesión"]
},
{
"question": "¿Qué implica el principio de legalidad para los ciudadanos?",
"rights": ["Que sus derechos y deberes se encuentran regulados por normas"],
"wrongs": ["Que no existen normas que los protejan", "Que la ley depende del gobernante de turno", "Que la ley es solo una sugerencia"]
},
{
"question": "¿Qué relación existe entre la Constitución y los derechos fundamentales?",
"rights": ["La Constitución reconoce y garantiza los derechos fundamentales"],
"wrongs": ["Los derechos no están garantizados", "Los derechos dependen exclusivamente de reglamentos", "La Constitución no menciona derechos"]
},
{
"question": "¿Qué no es objeto del Título Preliminar?",
"rights": ["Normas técnicas de procedimiento judicial"],
"wrongs": ["Principios constitucionales", "Soberanía nacional", "La Constitución como norma suprema"]
},
{
"question": "¿Qué principio inspira la protección de las libertades públicas?",
"rights": ["La dignidad de la persona y el respeto a la igualdad"],
"wrongs": ["La desigualdad institucional", "La supresión de libertades civiles", "La imposición religiosa estatal"]
},
{
"question": "¿Qué valor tiene la referencia a los tratados internacionales?",
"rights": ["Que forman parte del ordenamiento y vinculan a España en los límites de la Constitución"],
"wrongs": ["Que sustituyen la Constitución", "Que son ignorados por el Estado", "Que no generan obligaciones internacionales"]
},
{
"question": "¿Qué se espera de los poderes públicos según el Título Preliminar?",
"rights": ["Actuar conforme a la Constitución, respetar derechos y garantizar el orden jurídico"],
"wrongs": ["Actuar arbitrariamente", "Ignorar derechos fundamentales", "Someter la ley a voluntad administrativa"]
}
]
}
]

View File

@ -0,0 +1,58 @@
[
{
"origin": "GPT-5 mini (Copilot)",
"title": "Título Preliminar - Bloque 5",
"queries": [
{
"question": "¿Qué significado tiene 'Estado social y democrático de Derecho'?",
"rights": ["Garantía de derechos sociales y respeto al imperio de la ley"],
"wrongs": ["Estado autoritario", "Supresión de libertades", "Ausencia de controles legales"]
},
{
"question": "¿Qué artículo consagra la igualdad ante la ley?",
"rights": ["El artículo que establece igualdad y no discriminación"],
"wrongs": ["Un artículo sobre competencias locales", "Un artículo sobre tasas municipales", "Una disposición transitoria"]
},
{
"question": "¿Qué reconoce el Título Preliminar sobre los derechos de participación política?",
"rights": ["La garantía de derechos políticos y participación"],
"wrongs": ["La supresión de la participación", "La limitación a ciertos ciudadanos arbitrariamente", "La concentración del poder político"]
},
{
"question": "¿Qué se entiende por principio de legalidad?",
"rights": ["Que la actuación pública debe ajustarse a la ley"],
"wrongs": ["Que la actuación pública puede ser arbitraria", "Que la ley es opcional", "Que no existe control judicial"]
},
{
"question": "¿Qué papel tienen los derechos fundamentales frente a la ley ordinaria?",
"rights": ["Los derechos fundamentales tienen protección superior y mecanismos de tutela"],
"wrongs": ["Los derechos dependen únicamente de reglamentos", "No existen mecanismos de tutela", "Los derechos son de mera cortesía"]
},
{
"question": "¿Qué implica la referencia a la soberanía?",
"rights": ["Que la soberanía reside en el pueblo y se ejerce en los términos de la Constitución"],
"wrongs": ["Que la soberanía es del ejecutivo", "Que la soberanía reside en municipios", "Que no existe soberanía popular"]
},
{
"question": "¿Qué no forma parte del Título Preliminar?",
"rights": ["Reglas procesales administrativas detalladas"],
"wrongs": ["Principios constitucionales", "La supremacía de la Constitución", "La dignidad humana"]
},
{
"question": "¿Cómo se relaciona la Constitución con la comunidad internacional?",
"rights": ["Adhesión a tratados y cumplimiento de obligaciones internacionales"],
"wrongs": ["Aislamiento internacional", "Ignorar tratados", "Renunciar a obligaciones internacionales"]
},
{
"question": "¿Qué principio protege la pluralidad ideológica?",
"rights": ["El respeto a la libertad ideológica y de expresión"],
"wrongs": ["La censura obligatoria", "La prohibición de partidos", "La limitación de la crítica política"]
},
{
"question": "¿Qué función tiene la Constitución en relación con los poderes públicos?",
"rights": ["Servir de límite y marco para su actuación, garantizando derechos"],
"wrongs": ["Permitir acciones arbitrarias", "Eliminar controles institucionales", "Someter los derechos a la voluntad gubernamental"]
}
]
}
]

View File

@ -0,0 +1,59 @@
[
{
"origin": "GPT-5 mini (Copilot)",
"title": "Título Preliminar - Bloque 6",
"queries": [
{
"question": "¿Qué principio constitucional protege la libertad personal?",
"rights": ["El reconocimiento de los derechos y libertades individuales"],
"wrongs": ["La sujeción de la persona al gobierno", "La ausencia de libertades personales", "La restricción sin base legal"]
},
{
"question": "¿Qué relación existe entre la Constitución y las leyes ordinarias?",
"rights": ["Las leyes deben ser conformes a la Constitución"],
"wrongs": ["Las leyes pueden contradecir la Constitución", "No existe jerarquía normativa", "Los reglamentos invalidan la Constitución"]
},
{
"question": "¿Qué garantía se menciona sobre la protección de los derechos?",
"rights": ["La tutela judicial y los mecanismos constitucionales"]
,
"wrongs": ["La ausencia de mecanismos de tutela", "La dependencia total del ejecutivo", "La inexistencia de tribunales"]
},
{
"question": "¿Qué alcance tiene la indisoluble unidad de la Nación?",
"rights": ["Reconocimiento de la unidad junto con la autonomía de nacionalidades y regiones"],
"wrongs": ["Independencia automática de regiones", "Supresión de la Nación", "Privilegio de ciertas autonomías sobre otras"]
},
{
"question": "¿Qué significa que España sea un Estado social y democrático de Derecho?",
"rights": ["Compromiso con derechos sociales, democracia y legalidad"],
"wrongs": ["Supremacía de una clase social", "Ausencia de división de poderes", "La negación de libertades públicas"]
},
{
"question": "¿Qué principio regula la actuación de la Administración pública?",
"rights": ["El principio de legalidad y sometimiento a la Constitución"],
"wrongs": ["Actuación arbitraria sin sujeción a la ley", "Sometimiento a intereses privados", "Desobediencia a la Constitución"]
},
{
"question": "¿Cuál es la relación entre el ordenamiento jurídico y los tratados internacionales?",
"rights": ["Los tratados forman parte del ordenamiento dentro de los límites de la Constitución"],
"wrongs": ["Los tratados invalidan la Constitución", "Los tratados no tienen efecto legal", "España queda fuera del derecho internacional"]
},
{
"question": "¿Qué se protege con el principio de igualdad?",
"rights": ["Igualdad ante la ley y no discriminación"],
"wrongs": ["Desigualdad por origen", "Privilegios legales arbitrarios", "Discriminación institucionalizada"]
},
{
"question": "¿Qué papel tiene la Constitución respecto a las instituciones públicas?",
"rights": ["Establecer límites y competencias, garantizando los derechos"],
"wrongs": ["Permitir competencias sin límites", "Eliminar controles institucionales", "Someter el sistema judicial al ejecutivo"]
},
{
"question": "¿Qué principio protege la libertad de expresión?",
"rights": ["El reconocimiento y garantía de la libertad de expresión"],
"wrongs": ["La censura previa obligatoria", "La prohibición de prensa", "La limitación total del discurso político"]
}
]
}
]

View File

@ -0,0 +1,58 @@
[
{
"origin": "GPT-5 mini (Copilot)",
"title": "Título Preliminar - Bloque 7",
"queries": [
{
"question": "¿Qué se entiende por principio democrático en el Título Preliminar?",
"rights": ["Que el poder emana del pueblo y se ejerce conforme a la Constitución"],
"wrongs": ["Que el poder pertenece solo a gobernantes", "Que el pueblo no participa", "Que no existen mecanismos de control"]
},
{
"question": "¿Qué importancia tiene la dignidad humana en la Constitución?",
"rights": ["Es fundamento del orden jurídico y de los derechos"],
"wrongs": ["No tiene importancia", "Solo es retórica", "Sirve para justificar desigualdades"]
},
{
"question": "¿Qué papel tienen los tratados internacionales según la Constitución?",
"rights": ["Integran el ordenamiento y obligan a España en los límites constitucionales"],
"wrongs": ["Son superiores a la Constitución", "Carecen de efecto jurídico", "Se aplican solo cuando conviene al gobierno"]
},
{
"question": "¿Qué significa que la Constitución es la norma suprema?",
"rights": ["Que ninguna norma puede contradecirla y que organiza la jerarquía normativa"],
"wrongs": ["Que las leyes pueden invalidarla", "Que los reglamentos están por encima", "Que es una sugerencia"]
},
{
"question": "¿Qué principio garantiza la tutela judicial efectiva?",
"rights": ["El acceso a los tribunales y la protección judicial de los derechos"],
"wrongs": ["La falta de tribunales", "La negación de recursos judiciales", "La subsistencia de la justicia privada sin control"]
},
{
"question": "¿Qué relación establece el Título Preliminar entre Nación y nacionalidades?",
"rights": ["Afirma la unidad de la Nación y reconoce la autonomía de las nacionalidades y regiones"],
"wrongs": ["Otorga derecho automático de secesión", "Niega la existencia de nacionalidades", "Sustituye la Nación por entidades sin soberanía"]
},
{
"question": "¿Qué rol tiene la Constitución frente a los derechos fundamentales?",
"rights": ["Reconocerlos, garantizarlos y dotarlos de mecanismos de tutela"],
"wrongs": ["Excluirlos del ordenamiento", "Dejarlos a criterio administrativo", "Suprimirlos sin control judicial"]
},
{
"question": "¿Qué principio obliga a los poderes públicos a respetar la ley?",
"rights": ["El principio de legalidad"],
"wrongs": ["La ausencia de sujeción normativa", "La discrecionalidad completa", "La prevalencia del ejecutivo"]
},
{
"question": "¿Qué se entiende por jerarquía normativa en la Constitución?",
"rights": ["Que la Constitución está por encima de otras normas y que existe un orden de fuentes del derecho"],
"wrongs": ["Que todas las normas son iguales sin jerarquía", "Que los reglamentos prevalecen sobre la Constitución", "Que no existe ordenamiento jurídico"]
},
{
"question": "¿Qué protege la Constitución respecto a las libertades públicas?",
"rights": ["El reconocimiento y la garantía de libertades como la expresión y asociación"],
"wrongs": ["La supresión de libertades", "La limitación sin control jurídico", "La censura previa obligatoria"]
}
]
}
]

View File

@ -0,0 +1,58 @@
[
{
"origin": "GPT-5 mini (Copilot)",
"title": "Título Preliminar - Bloque 8",
"queries": [
{
"question": "¿Qué garantiza la Constitución respecto al acceso a la justicia?",
"rights": ["El acceso efectivo a los tribunales y la tutela judicial efectiva"],
"wrongs": ["La negación de acceso a tribunales", "La falta de mecanismos de tutela", "La justicia privada sin control"]
},
{
"question": "¿Qué dice el Título Preliminar sobre la organización territorial?",
"rights": ["Establece la unidad del Estado y reconoce la autonomía"],
"wrongs": ["Permite la independencia automática", "No regula la autonomía", "Sustituye al Estado por entidades sin soberanía"]
},
{
"question": "¿Qué protege la Constitución en materia de derechos económicos y sociales?",
"rights": ["El reconocimiento y garantía de derechos sociales, dentro de su articulación legal"],
"wrongs": ["La inexistencia de derechos sociales", "La subordinación completa al mercado", "La privación de garantías sociales"]
},
{
"question": "¿Qué rol tienen los poderes públicos frente a la Constitución?",
"rights": ["Actuar conforme a la Constitución y al principio de legalidad"],
"wrongs": ["Actuar fuera de la ley", "Someter la Constitución a decisiones administrativas", "Ignorar derechos fundamentales"]
},
{
"question": "¿Qué significa la referencia a la dignidad humana?",
"rights": ["Fundamento de los derechos y de la protección jurídica"],
"wrongs": ["Justificación para la discriminación", "Base para la indefensión", "Sin trascendencia legal"]
},
{
"question": "¿Qué principio protege la igualdad en la Constitución?",
"rights": ["La igualdad ante la ley y la prohibición de discriminación"],
"wrongs": ["La desigualdad legalizada", "La preferencia por origen", "La discriminación institucionalizada"]
},
{
"question": "¿Qué papel tienen los tratados internacionales según la Constitución?",
"rights": ["Forman parte del ordenamiento dentro de los límites constitucionales"],
"wrongs": ["Son superiores a la Constitución", "Carecen de efecto jurídico", "No afectan al ordenamiento"]
},
{
"question": "¿Qué principio es clave para el funcionamiento democrático?",
"rights": ["La soberanía nacional y su ejercicio conforme a la Constitución"],
"wrongs": ["La concentración del poder en una persona", "La ausencia de mecanismos democráticos", "La negación de participación ciudadana"]
},
{
"question": "¿Qué protege la libertad religiosa según el Título Preliminar?",
"rights": ["La libertad religiosa y la aconfesionalidad del Estado"],
"wrongs": ["Imposición de una religión oficial", "Prohibición de creencias", "Subordinación del Estado a una confesión"]
},
{
"question": "¿Qué exige la Constitución a los poderes públicos en su actuación?",
"rights": ["Someterse a la Constitución y a las leyes"],
"wrongs": ["Actuar arbitrariamente", "Ignorar la Constitución", "Intervenir sin límites legales"]
}
]
}
]

View File

@ -0,0 +1,58 @@
[
{
"origin": "GPT-5 mini (Copilot)",
"title": "Título Preliminar - Bloque 9",
"queries": [
{
"question": "¿Qué significa que la Constitución sea la norma suprema?",
"rights": ["Que ninguna norma del ordenamiento jurídico puede contradecirla"],
"wrongs": ["Que las leyes pueden invalidarla", "Que los reglamentos prevalecen", "Que es opcional seguirla"]
},
{
"question": "¿Qué protege la Constitución respecto a la libertad de asociación?",
"rights": ["El derecho a asociarse y a fundar sindicatos y partidos"],
"wrongs": ["La prohibición de asociaciones", "La imposición de asociaciones oficiales", "La supresión de sindicatos"]
},
{
"question": "¿Qué principio garantiza el respeto a la ley por parte de la administración?",
"rights": ["El principio de legalidad"],
"wrongs": ["Arbitrariedad administrativa", "Desobediencia a la Constitución", "Actuación fuera de la ley"]
},
{
"question": "¿Qué relación establece la Constitución con las comunidades autónomas?",
"rights": ["Reconoce su autonomía dentro del marco constitucional"],
"wrongs": ["Otorga independencia plena", "Niega su existencia", "Suple su papel con autoridades locales"]
},
{
"question": "¿Qué se entiende por protección de derechos fundamentales?",
"rights": ["Mecanismos judiciales y constitucionales de tutela"],
"wrongs": ["Sin recursos judiciales", "Protección solo administrativa", "Desregulación total"]
},
{
"question": "¿Qué principio ayuda a evitar la concentración del poder?",
"rights": ["La separación de poderes y los controles mutuos"],
"wrongs": ["Acaparamiento de funciones por el ejecutivo", "Fusión de poderes sin control", "Supresión del judicial"]
},
{
"question": "¿Qué rol tienen los tratados internacionales en el ordenamiento?",
"rights": ["Forman parte del ordenamiento y vinculan dentro de los límites constitucionales"],
"wrongs": ["Sustituyen la Constitución", "Carecen de efecto legal", "Son ignorados por el Estado"]
},
{
"question": "¿Qué obliga la dignidad de la persona según el Texto Constitucional?",
"rights": ["La protección y garantía de derechos humanos"],
"wrongs": ["La discriminación legalizada", "La desprotección social", "La ausencia de tutela judicial"]
},
{
"question": "¿Qué responsabilidad tienen los poderes públicos ante la Constitución?",
"rights": ["Respetarla y garantizar los derechos"],
"wrongs": ["Ignorarla", "Actuar fuera de sus límites", "Suprimir los derechos fundamentales"]
},
{
"question": "¿Qué garantiza la igualdad ante la ley?",
"rights": ["No discriminación por motivos personales"],
"wrongs": ["Privilegios legales por origen", "Discriminación institucional", "Tratamiento desigual por decisión administrativa"]
}
]
}
]

View File

@ -0,0 +1,59 @@
[
{
"origin": "GPT-5 mini (Copilot)",
"title": "Título Preliminar - Bloque 10",
"queries": [
{
"question": "¿Qué papel tiene la Constitución en la protección de libertades?",
"rights": ["Marco jurídico que reconoce y garantiza libertades"],
"wrongs": ["No protege libertades", "Las libertades dependen de decisiones arbitrarias", "Son eliminadas por reglamentos"]
},
{
"question": "¿Qué implica la sujeción de los poderes públicos a la ley?",
"rights": ["Que deben actuar conforme a la Constitución y legislación"],
"wrongs": ["Que pueden actuar arbitrariamente", "Que no tienen límites", "Que la ley es solo una sugerencia"]
},
{
"question": "¿Qué entiende la Constitución por separación de poderes?",
"rights": ["Distinción y controles entre ejecutivo, legislativo y judicial"],
"wrongs": ["Concentración del poder en un órgano", "Supresión de tribunales", "Un único poder sin controles"]
},
{
"question": "¿Qué establece el Título Preliminar sobre la jerarquía normativa?",
"rights": ["La Constitución está por encima de las leyes y reglamentos"],
"wrongs": ["Las normas son todas iguales sin jerarquía", "Los reglamentos prevalecen", "No existe ordenamiento jurídico"]
},
{
"question": "¿Qué principio protege la participación política?",
"rights": ["Derechos políticos y mecanismos de participación"],
"wrongs": ["Prohibición de participación", "Sometimiento de la participación al ejecutivo", "Limitación arbitraria de derechos políticos"]
},
{
"question": "¿Qué reconoce el Texto Constitucional respecto a la nación y sus regiones?",
"rights": ["La unidad de la Nación y el reconocimiento de nacionalidades y regiones"],
"wrongs": ["Desintegración del Estado", "Supremacía de regiones sobre la Nación", "Ningún reconocimiento de pluralidad territorial"]
},
{
"question": "¿Qué protección se garantiza para la libertad de pensamiento?",
"rights": ["Libertad de pensamiento y expresión"]
,
"wrongs": ["Control obligado del pensamiento", "Prohibición de opinión política", "Sanciones por idea personal"]
},
{
"question": "¿Qué obliga la Constitución a los ciudadanos?",
"rights": ["Respetar la ley y los derechos de los demás"],
"wrongs": ["Actuar fuera de la ley", "Ignorar derechos ajenos", "Someterse a decisiones arbitrarias"]
},
{
"question": "¿Qué concepto relaciona la Constitución con la comunidad internacional?",
"rights": ["Respeto a los tratados y obligaciones internacionales dentro de la Constitución"],
"wrongs": ["Aislamiento internacional", "Sustitución de la Constitución por tratados", "No cumplimiento de obligaciones internacionales"]
},
{
"question": "¿Qué valor político y jurídico tiene la Constitución?",
"rights": ["Norma fundamental que organiza el Estado y garantiza derechos"],
"wrongs": ["Norma sin efecto práctico", "Documento simbólico sin validez jurídica", "Regla optativa para los poderes públicos"]
}
]
}
]

View File

@ -0,0 +1,60 @@
{
"espanol" : {
"home" : "Inicio",
"git" : "Git",
"test_creator" : "Creador de Tests",
"test_creator_text" : "Crea tus propios tests personalizados seleccionando las preguntas que desees.",
"select_all_visible" : "Seleccionar todo lo visible",
"unselect_all_visible" : "Deseleccionar todo lo visible",
"search" : "Buscar",
"search_text" : "Usa & (AND), | (OR) y ! (NOT) para combinar términos. Ejemplo: derecho&constitución|autonomía&!municipal",
"blocks" : "Bloques",
"questions" : "Preguntas",
"selected_questions" : "Preguntas seleccionadas",
"total_questions" : "Total de preguntas",
"show_selected" : "Mostrar seleccionados",
"minimum_questions" : "Número mínimo de preguntas",
"minimum_questions_description" : "El test se generará con al menos este número de preguntas. Si no hay suficientes preguntas seleccionadas, recreará de preguntas ya generadas.",
"maximum_questions" : "Número máximo de preguntas",
"maximum_questions_description" : "El test se generará con un máximo de este número de preguntas.",
"minimum_answers" : "Número mínimo de respuestas",
"minimum_answers_description" : "Cada pregunta tendrá al menos este número de respuestas (correctas e incorrectas). Si no hay suficientes respuestas, se duplicarán las ya existentes.",
"maximum_answers" : "Número máximo de respuestas",
"maximum_answers_description" : "Cada pregunta tendrá un máximo de este número de respuestas (correctas e incorrectas).",
"allow_unique_right" : "Permitir respuesta única correcta",
"allow_unique_right_description" : "Si una pregunta tiene una única respuesta correcta, se permitirá que esa sea la única respuesta correcta en el test.",
"allow_all_answers_false" : "Permitir todas las respuestas incorrectas",
"allow_all_answers_false_description" : "Si una pregunta tiene todas las respuestas incorrectas, se permitirá que esa sea la única respuesta en el test.",
"allow_all_answers_true" : "Permitir todas las respuestas correctas",
"allow_all_answers_true_description" : "Si una pregunta tiene todas las respuestas correctas, se permitirá que esa sea la única respuesta en el test.",
"allow_repeated_questions" : "Permitir preguntas repetidas",
"allow_repeated_questions_description" : "Si no hay suficientes preguntas seleccionadas, se permitirán preguntas repetidas en el test.",
"show_rights" : "Mostrar respuestas correctas",
"show_rights_description" : "Se mostrarán las respuestas correctas e incorrectas durante el uso de Test. Si no se marca se mostrarán al finalizar el Tests.",
"show_results" : "Mostrar resultados",
"show_results_description" : "Se irán mostrando los resultados del test a medida que se vaya haciendo. Si no se marca se mostrarán los resultados al terminar el Test.",
"clean" : "Limpiar",
"submit" : "Enviar",
"test" : "Test",
"test_text" : "Realiza el test con las preguntas seleccionadas.",
"block" : "Bloque",
"blocks_description" : "Selecciona los bloques de preguntas que deseas incluir en el test.",
"status" : "Estado",
"unanswered" : "Sin responder",
"answered" : "Respondida",
"right" : "Correcta",
"wrong" : "Incorrecta",
"partially" : "Parcialmente correcta",
"question" : "Pregunta",
"group" : "Grupo",
"need_one_block_at_least" : "Debes seleccionar al menos un bloque.",
"allow_multiple_answers" : "Permitir multirespuestas",
"allow_multiple_answers_description" : "Si una pregunta tiene varias respuestas correctas, se permitirá que todas sean correctas en el test.",
"username" : "Usuario",
"username_description" : "El nombre de usuario que te hallan asignado para poder acceder al contenido.",
"password" : "Contraseña",
"password_description" : "La contraseña que te hallan asignado para poder acceder al contenido.",
"login" : "Iniciar sesión",
"login_text" : "Inicia sesión para poder acceder al contenido."
}
}

View File

@ -0,0 +1,141 @@
[{
"origin" : "KyMAN",
"sources" : [],
"title" : "Tipos de leyes - Tipos",
"group" : "kyman_leyes",
"queries" : [{
"question" : "¿Qué tipo de ley es la [[rand,ley de leyes|norma suprema]] del ordenamiento jurídico español?",
"rights" : ["Constitución"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tipo de ley establece la estructura del Estado, la organización de los poderes públicos y los derechos fundamentales de los ciudadanos?",
"rights" : ["Constitución", "La Carta Magna", "La Ley de Leyes"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tipo de ley es la que continúa inmediatamente por debajo de la Constitución?",
"rights" : ["Normas con Rango de Ley"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tipos de leyes se comprenden dentro de las Normas con Rangos de Ley?",
"rights" : ["Ley Orgánica", "Ley Ordinaria", "Real Decreto-Ley", "Real Decreto Legislativo"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tipos de Ley emanan [[rand,de las Cortes Generales|del Poder Legislativo]]?",
"rights" : ["Ley Orgánica", "Ley Ordinaria"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tipos de Ley emanan [[rand,del Gobierno|del Poder Ejecutivo]]?",
"rights" : ["Real Decreto-Ley", "Real Decreto Legislativo"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tipo de ley se comprende dentro de las Normas de Rango Reglamentario?",
"rights" : ["Real Decreto", "Orden Ministerial"],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Tipos de leyes - Entidades",
"group" : "kyman_leyes",
"queries" : [{
"question" : "¿Quién prueba una [[rand,Constitución|Carta Magna|Ley de Leyes]]?",
"rights" : ["El Poder Constituyente"],
"brothers_are_wrongs" : true
}, {
"question" : "¿De dónde provienen las Normas con Rangos de Ley?",
"rights" : ["De las Cortes Generales.", "Excepcionalmente del Gobierno.", "[[Mix,de las Cortes Generales|excepcionalmente del Gobierno]]."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Quién dicta las Normas de Rango Reglamentario?",
"rights" : ["[[Mix,y,el Gobierno|la Administración Pública]]."],
"brothers_are_wrongs" : true
}, {
"question" : "¿A quién le corresponde la elaboración de las leyes?",
"rights" : ["Al poder legislativo."],
"brothers_are_wrongs" : true
}, {
"question" : "¿A quién le corresponde la aplicación de las leyes?",
"rights" : ["Al poder ejecutivo."],
"brothers_are_wrongs" : true
}, {
"question" : "¿A quién le corresponde la interpretación y el control de las leyes?",
"rights" : ["Al poder judicial."],
"brothers_are_wrongs" : true
}, {
"question" : "¿[[rand,Dónde reside|A quién le corresponde]] el Poder Legislativo?",
"rights" : ["A las Cortes Generales."],
"brothers_are_wrongs" : true
}, {
"question" : "¿[[rand,Dónde reside|A quién le corresponde]] el Poder Ejecutivo?",
"rights" : ["Al Gobierno."],
"brothers_are_wrongs" : true
}, {
"question" : "¿[[rand,Dónde reside|A quién le corresponde]] el Poder Judicial?",
"rights" : ["A los [[mix,y,jueces|tribunales]]."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Quiénes son los Poderes Públicos del Estado?",
"rights" : ["[[Mix,y,el poder legislativo|el poder ejecutivo|el poder judicial]]."],
"brothers_are_wrongs" : true
}, {
"question" : "¿A quién le corresponde el poder de las Cortes Generales?",
"rights" : ["Al poder legislativo."],
"brothers_are_wrongs" : true
}, {
"question" : "¿A quién le corresponde el poder del Gobierno?",
"rights" : ["Al poder ejecutivo."],
"brothers_are_wrongs" : true
}, {
"question" : "¿A quién le corresponde los poderes de los [[mix,y,jueces|tribunales]]?",
"rights" : ["Al poder judicial."],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Tipos de leyes - Definiciones",
"group" : "kyman_leyes",
"queries" : [{
"question" : "¿Qué son las Normas de Rango Reglamentario?",
"rights" : ["Son leyes que están por debajo de la Ley y su función es desarrollar y aplicar las leyes."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una Ley Orgánica?",
"rights" : ["Es una ley que desarrolla los derechos fundamentales y las libertades públicas y regula las instituciones básicas del Estado."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una Ley Ordinaria?",
"rights" : ["Es una ley que regula materias no reservadas a las Leyes Orgánicas."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es un Real Decreto-Ley?",
"rights" : ["Es una norma con rango de ley dictada por el Gobierno en casos de extraordinaria y urgente necesidad."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es un Real Decreto Legislativo?",
"rights" : ["Es una norma con rango de ley dictada por el Gobierno mediante delegación expresa de las Cortes Generales."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es un Real Decreto?",
"rights" : ["Es una norma jurídica emanada del Poder Ejecutivo que desarrolla o complementa una Ley."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una Orden Ministerial?",
"rights" : ["Es una norma jurídica emanada de un Ministerio que desarrolla o complementa una Ley o un Real Decreto."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una Ley Autonómica?",
"rights" : ["Es una ley aprobada por los Parlamentos Autonómicos dentro del ámbito de sus competencias."],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Tipos de leyes - Preguntas",
"group" : "kyman_leyes",
"queries" : [{
"question" : "¿Cuándo puede contradecir una Norma de Rango Reglamentario a una Ley?",
"rights" : ["Nunca"],
"wrongs" : ["Siempre", "Cuando la Ley lo permita", "Cuando la Ley lo permita y sea aprobada por las Cortes Generales"]
}]
}]

View File

@ -0,0 +1,140 @@
[{
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - Tipos por área",
"group" : "kyman_redes_area",
"queries" : [{
"question" : "¿Qué es una red PAN?",
"rights" : ["Es una red unipersonal que cubre un área pequeña."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una red LAN?",
"rights" : ["Es una red limitada a un área como un edificio o una oficina."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una red MAN?",
"rights" : ["Es una red que abarca un área geográfica más grande que una LAN, como una ciudad o un campus."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una red WAN?",
"rights" : ["Es una red que cubre un área geográfica extensa, como un país o continente."],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - Tipos de Área - Conformación",
"group" : "kyman_redes_area",
"queries" : [{
"question" : "¿De qué se conforma una red PAN?",
"rights" : [
"De dispositivos personales como teléfonos móviles, tabletas y ordenadores portátiles.",
"De conexiones directas entre dispositivos punto a punto cercanos."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿De qué se conforma una red LAN?",
"rights" : [
"De dispositivos de red como routers, switches y puntos de acceso.",
"De redes basadas en Ethernet o Wi-Fi."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿De qué se conforma una red MAN?",
"rights" : [
"De múltiples redes LAN interconectadas.",
"De enlaces de alta velocidad entre edificios o sitios cercanos."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿De qué se conforma una red WAN?",
"rights" : [
"De múltiples redes MAN interconectadas.",
"De enlaces de larga distancia, como líneas telefónicas o satélites."
],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - Tipos de Área - Alcance",
"group" : "kyman_redes_area",
"queries" : [{
"question" : "¿Cuál es el alcance típico de una red PAN?",
"rights" : ["Alcance de unos pocos metros."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el alcance típico de una red LAN?",
"rights" : ["Alcance de hasta 100 metros."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el alcance típico de una red MAN?",
"rights" : ["Alcance de varios kilómetros."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el alcance típico de una red WAN?",
"rights" : ["Alcance global."],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - Tipos de Área - Tecnologías",
"group" : "kyman_redes_area",
"queries" : [{
"question" : "¿Qué tipo de tecnología puede ser usado en una red PAN?",
"rights" : ["Tecnologías inalámbricas como Bluetooth y Zigbee."],
"wrongs" : [
"Tecnologías de línea telefónica.",
"Tecnologías de red celular (4G, 5G).",
"Líneas de Coaxial."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tipo de tecnología puede ser usado en una red LAN?",
"rights" : ["Tecnologías de cableado como Ethernet.", "Tecnologías inalámbricas como Wi-Fi."],
"wrongs" : [
"Tecnologías de satélite.",
"Líneas de Coaxial."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tipo de tecnología puede ser usado en una red MAN?",
"rights" : ["Tecnologías de fibra óptica", "Conexiones de microondas."],
"wrongs" : [
"Tecnologías inalámbricas como Bluetooth y Zigbee."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tipo de tecnología puede ser usado en una red WAN?",
"rights" : ["Tecnologías de fibra óptica", "Conexiones de satélite."],
"wrongs" : [
"Tecnologías de cableado como Ethernet.",
"Tecnologías inalámbricas como Bluetooth y Zigbee.",
"Líneas de Coaxial."
],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - Tipos de Área - Componentes",
"group" : "kyman_redes_area",
"queries" : [{
"question" : "¿En qué tipo de redes se utilizan redes Ethernet?",
"rights" : ["En redes LAN."],
"brothers_are_wrongs" : true
}, {
"question" : "¿En qué tipo de redes se utilizan [[rand,líneas de Coaxial|redes Wi-Fi]]?",
"rights" : ["En redes LAN.", "En una [[rand,CCTV|Circuito Cerrado de Televisión]]."],
"brothers_are_wrongs" : true
}, {
"question" : "¿En qué tipo de redes se utilizan conexiones de fibra óptica?",
"rights" : ["En redes MAN.", "En redes WAN."],
"brothers_are_wrongs" : true
}, {
"question" : "¿En qué tipo de redes se utilizan conexiones de satélite?",
"rights" : ["En redes WAN."],
"brothers_are_wrongs" : true
}]
}]

View File

@ -0,0 +1,222 @@
[{
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - Tipologías",
"group" : "kyman_redes_tipologias",
"queries" : [{
"question" : "¿Qué es una tipología de red lógica?",
"rights" : ["Es una clasificación de redes basada en la forma en que los dispositivos están interconectados y cómo se comunican entre sí."],
"wrongs" : [
"Es una clasificación de redes basada en la ubicación geográfica de los dispositivos.",
"Es una clasificación de redes basada en el tipo de datos que se transmiten.",
"Es una clasificación de redes basada en el protocolo de comunicación utilizado."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una tipología de red física?",
"rights" : ["Es una clasificación de redes basada en la disposición física de los dispositivos y los medios de transmisión."],
"wrongs" : [
"Es una clasificación de redes basada en la forma en que los dispositivos están interconectados.",
"Es una clasificación de redes basada en el tipo de datos que se transmiten.",
"Es una clasificación de redes basada en el protocolo de comunicación utilizado."
],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - Tipologías - Conceptos generales II",
"group" : "kyman_redes_tipologias",
"queries" : [{
"question" : "¿Cuál de las siguientes es una tipología de [[rand,red|red lógica|red física]]?",
"rights" : ["En estrella", "En malla", "Punto a Punto", "En bus", "En anillo"],
"wrongs" : [
"Circular",
"Triangular",
"Hexagonal",
"Diagonal",
"De interconexión",
"De servicio",
"Digital"
]
}, {
"question" : "En tipologías de red. ¿Qué es una [[rand,Branch|rama]]?",
"rights" : [
"Es una subdivisión de una red que conecta varios nodos o dispositivos dentro de la red.",
"Es la línea que une nuevos nodos en una topología de árbol o [[rand,híbrida|mixta]]."
],
"wrongs" : [
"Es un dispositivo central que controla la comunicación en la red.",
"Es un tipo de cable utilizado para conectar dispositivos en la red.",
"Es un protocolo de comunicación utilizado en redes.",
"Es un software utilizado para gestionar la red."
]
}, {
"question" : "¿Qué es un Token Ring?",
"rights" : [
"Es una topología de red en la que los dispositivos están conectados en un anillo cerrado y utilizan un token para controlar el acceso al medio de transmisión.",
"Es una topología de red en la que los datos circulan en una dirección alrededor del anillo y cada dispositivo actúa como un repetidor para los datos que pasan a través de él."
],
"wrongs" : [
"Es una topología de red en la que todos los dispositivos están conectados a un dispositivo central.",
"Es una topología de red en la que todos los dispositivos están conectados a un único cable central.",
"Es una topología de red en la que cada dispositivo está conectado a todos los demás dispositivos."
]
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - Tipologías - Tipos",
"group" : "kyman_redes_tipologias",
"queries" : [{
"question" : "¿Qué es una topología de red punto a punto?",
"rights" : ["Es una configuración de red en la que dos dispositivos están directamente conectados entre sí."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una topología de red en bus?",
"rights" : ["Es una configuración de red en la que todos los dispositivos están conectados en una línea continua."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una topología de red [[rand,en|de]] anillo?",
"rights" : ["Es una configuración de red en la que los dispositivos están conectados en un círculo cerrado."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una topología de red [[rand,en|de]] [[rand,doble anillo|anillo doble]]?",
"rights" : ["Es una configuración de red en la que los dispositivos están conectados en dos círculos cerrados que se interconectan."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una topología de red [[rand,en|de]] estrella?",
"rights" : ["Es una configuración de red en la que todos los dispositivos están conectados a un dispositivo central, como un switch o un hub."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una topología de red [[rand,en|de]] malla?",
"rights" : ["Es una configuración de red en la que cada dispositivo está conectado a todos los demás dispositivos."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una tipología de red [[rand,en árbol|de árbol|arbórea]]?",
"rights" : ["Es una configuración de red en la que los dispositivos están organizados en una estructura jerárquica similar a un árbol."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una tipología de red [[rand,híbrida|mixta]]?",
"rights" : ["Es una combinación de dos o más tipologías de red, aprovechando las ventajas de cada una."],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - Tipologías - Ventajas",
"group" : "kyman_redes_tipologias",
"queries" : [{
"question" : "¿Cuáles son las ventajas de una red Punto a Punto?",
"rights" : [
"[[Mix,y,simplicidad de configuración|Alta velocidad de comunicación]].",
"[[Mix,y,comunicación directa entre dos dispositivos|fácil de implementar]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuáles son las ventajas de una red en bus?",
"rights" : [
"[[Mix,y,simplicidad de instalación|coste reducido de cableado]].",
"[[Mix,y,bajo costo para redes pequeñas|fácil de ampliar|diseño simple]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuáles son las ventajas de una red [[rand,en|de]] anillo?",
"rights" : [
"[[Mix,y,puede manejar grandes volúmenes de tráfico|fácil de instalar y configurar]].",
"[[Mix,y,organización clara de datos|cada dispositivo actúa como repetidor]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuáles son las ventajas de una red [[rand,en|de]] [[rand,doble anillo|anillo doble]]?",
"rights" : [
"[[Mix,y,alta tolerancia a fallos|redundancia en la comunicación]].",
"[[Mix,y,si un anillo falla, el otro puede mantener la comunicación|mejora la fiabilidad de la red]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuáles son las ventajas de una red [[rand,en|de]] estrella?",
"rights" : [
"[[Mix,y,facilidad de gestión y mantenimiento|Aislamiento de fallos|escalabilidad]].",
"[[Mix,y,alta tolerancia a fallos|comunicación directa entre dispositivos|gestión conveniente desde una ubicación central|facilidad para identificar los problemas]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuáles son las ventajas de una red [[rand,en|de]] [[rand,malla|Mesh]]?",
"rights" : [
"[[Mix,y,alta tolerancia a fallos|comunicación directa entre dispositivos]].",
"[[Mix,y,confiable|escalable|estable|ningún fallo en un nodo afecta al resto de la red]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuáles son las ventajas de una red [[rand,en árbol|de árbol|arbórea]]?",
"rights" : [
"[[Mix,y,facilidad de expansión|Estructura jerárquica clara]].",
"[[Mix,y,extremadamente flexible|extremadamente escalable|facilidad para gestionar errores por la independencia de cada Branch]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuáles son las ventajas de una red [[rand,híbrida|mixta]]?",
"rights" : ["[[Mix,y,flexibilidad|Optimización de recursos]]."],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - Tipologías - Desventajas",
"group" : "kyman_redes_tipologias",
"queries" : [{
"question" : "¿Cuáles son las desventajas de una red Punto a Punto?",
"rights" : [
"[[Mix,y,limitada a dos dispositivos|No escalable]].",
"[[Mix,y,si un dispositivo falla, la comunicación se interrumpe|difícil de gestionar en redes grandes]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuáles son las desventajas de una red en bus?",
"rights" : [
"[[Mix,y,dificultad para aislar fallos|Limitaciones en la longitud del cable]].",
"[[Mix,y,vulnerable a fallas de cables|rendimiento disminuye con más dispositivos|los datos viajan unidireccionalmente]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuáles son las desvetajas de una red [[rand,en|de]] anillo?",
"rights" : [
"[[Mix,y,si un dispositivo o conexión falla, puede afectar a toda la red|Dificultad para agregar o eliminar dispositivos sin interrumpir la red]].",
"[[Mix,y,si un nodo falla, toda la red se ve afectada|puede ser difícil de gestionar]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuáles son las desventajas de una red [[rand,en|de]] [[rand,doble anillo|anillo doble]]?",
"rights" : [
"[[Mix,y,complejidad de configuración|Coste elevado de instalación]].",
"[[Mix,y,si ambos anillos fallan, la comunicación se interrumpe|puede ser costoso de operar]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuáles son las desventajas de una red [[rand,en|de]] estrella?",
"rights" : [
"[[Mix,y,dependencia del dispositivo central|Coste de instalación inicial más alto]].",
"[[Mix,y,si falla el dispositivo central, toda la red se ve afectada|rendimiento y ancho de banda limitados por el nodo central|puede ser costoso de operar]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuáles son las desventajas de una red [[rand,en|de]] [[rand,malla|Mesh]]?",
"rights" : [
"[[Mix,y,complejidad de instalación|Coste elevado de cableado]].",
"[[Mix,y,complejidad, gestión y mantenimiento|coste alto para redes grandes|mucho cableado para conectar los dispositivos]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuáles son las desventajas de una red [[rand,en árbol|de árbol|arbórea]]?",
"rights" : [
"[[Mix,y,dependencia de los nodos principales|Complejidad de gestión]].",
"[[Mix,y,si falla un nodo principal, toda la rama se ve afectada|utiliza mucho cableado|puede ser difícil de gestionar]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuáles son las desventajas de una red [[rand,híbrida|mixta]]?",
"rights" : ["[[Mix,y,complejidad de diseño|Dificultad de gestión]]."],
"brothers_are_wrongs" : true
}]
}]

View File

@ -0,0 +1,492 @@
[{
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - Servicios, Protocolos y Métodos",
"group" : "kyman_redes_protocolos",
"queries" : [{
"question" : "¿Qué significa 'FTP'?",
"rights" : ["File Transfer Protocol", "Protocolo de Transferencia de Archivos."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué significa 'HTTP'?",
"rights" : ["HyperText Transfer Protocol.", "Protocolo de Transferencia de Hipertexto."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué significa 'HTTPS'?",
"rights" : ["HyperText Transfer Protocol Secure.", "Protocolo Seguro de Transferencia de Hipertexto."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué significa 'IP'?",
"rights" : ["Internet Protocol.", "Protocolo de Internet."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué significa 'POP3'?",
"rights" : ["Post Office Protocol version 3.", "Protocolo de Oficina de Correos versión 3."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué significa 'SMTP'?",
"rights" : ["Simple Mail Transfer Protocol.", "Protocolo Simple de Transferencia de Correo."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué significa 'TCP'?",
"rights" : ["Transmission Control Protocol.", "Protocolo de Control de Transmisión."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué significa 'UDP'?",
"rights" : ["User Datagram Protocol.", "Protocolo de Datagrama de Usuario."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué significa 'DNS'?",
"rights" : ["Domain Name System.", "Sistema de Nombres de Dominio."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué significa 'DHCP'?",
"rights" : ["Dynamic Host Configuration Protocol.", "Protocolo de Configuración Dinámica de Host."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué significa 'SSH'?",
"rights" : ["Secure Shell.", "Shell Seguro."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué significa 'SSL'?",
"rights" : ["Secure Sockets Layer.", "Capa de Conexión Segura."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué significa 'TLS'?",
"rights" : ["Transport Layer Security.", "Seguridad de la Capa de Transporte."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué significa 'STP'?",
"rights" : ["Spanning Tree Protocol.", "Protocolo de Árbol de Expansión."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué significa 'SFTP'?",
"rights" : ["SSH File Transfer Protocol.", "Protocolo de Transferencia de Archivos SSH."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué significa 'SCP'?",
"rights" : ["Secure Copy Protocol.", "Protocolo de Copia Segura."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué significa 'FTPS'?",
"rights" : ["File Transfer Protocol Secure.", "Protocolo Seguro de Transferencia de Archivos."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es el 'EUI-64'?",
"rights" : ["Extended Unique Identifier.", "Identificador Único Extendido."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es el 'CIDR'?",
"rights" : ["Classless Inter-Domain Routing.", "Enrutamiento Inter-Dominio Sin Clases."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'NAT'?",
"rights" : ["Network Address Translation.", "Traducción de Direcciones de Red."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'ARP'?",
"rights" : ["Address Resolution Protocol.", "Protocolo de Resolución de Direcciones."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'RARP'?",
"rights" : ["Reverse Address Resolution Protocol.", "Protocolo de Resolución Inversa de Direcciones."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'ICMP'?",
"rights" : ["Internet Control Message Protocol.", "Protocolo de Mensajes de Control de Internet."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'IGMP'?",
"rights" : ["Internet Group Management Protocol.", "Protocolo de Gestión de Grupos de Internet."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'SLAAC'?",
"rights" : ["Stateless Address Autoconfiguration.", "Autoconfiguración de Direcciones Sin Estado."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'DHCPv6'?",
"rights" : ["Dynamic Host Configuration Protocol for IPv6", "Protocolo de Configuración Dinámica de Host para IPv6"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'MPLS'?",
"rights" : ["Multiprotocol Label Switching.", "Conmutación de Etiquetas Multiprotocolo."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'VLAN'?",
"rights" : ["Virtual Local Area Network.", "Red de Área Local Virtual."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'VPN'?",
"rights" : ["Virtual Private Network.", "Red Privada Virtual."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'QoS'?",
"rights" : ["Quality of Service.", "Calidad de Servicio."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'WPA2'?",
"rights" : ["Wi-Fi Protected Access 2.", "Acceso Protegido Wi-Fi 2."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'WPA3'?",
"rights" : ["Wi-Fi Protected Access 3.", "Acceso Protegido Wi-Fi 3."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'WEP'?",
"rights" : ["Wired Equivalent Privacy.", "Privacidad Equivalente a Cableado."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'SSID'?",
"rights" : ["Service Set Identifier.", "Identificador de Conjunto de Servicios."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'ISP'?",
"rights" : ["Internet Service Provider.", "Proveedor de Servicios de Internet."],
"brothers_are_wrongs" : true
},
"#####################################################################################################",
"#####################################################################################################",
"#####################################################################################################",
"#####################################################################################################",
"#####################################################################################################",
"#####################################################################################################",
"#####################################################################################################",
"#####################################################################################################",
"#####################################################################################################",
"#####################################################################################################",
{
"question" : "¿Qué es 'PoE'?",
"rights" : ["Power over Ethernet.", "Alimentación a través de Ethernet."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'MPLS'?",
"rights" : ["Multiprotocol Label Switching.", "Conmutación de Etiquetas Multiprotocolo."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'VPLS'?",
"rights" : ["Virtual Private LAN Service.", "Servicio de LAN Privada Virtual."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'SD-WAN'?",
"rights" : ["Software-Defined Wide Area Network.", "Red de Área Amplia Definida por Software."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'CoS'?",
"rights" : ["Class of Service.", "Clase de Servicio."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'VoIP'?",
"rights" : ["Voice over [[rand,IP|Internet Protocol]].", "Voz sobre [[rand,IP|Protocolo de Internet]]."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'IETF'?",
"rights" : ["Internet Engineering Task Force.", "Grupo de Trabajo de Ingeniería de Internet."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'RFC'?",
"rights" : ["Request for Comments.", "Solicitud de Comentarios."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'NTP'?",
"rights" : ["Network Time Protocol.", "Protocolo de Tiempo de Red."],
"brothers_are_wrongs" : true
}, {
"question" : "En el ámbito de la Red SARA. ¿Qué significa 'PAS'?",
"rights" : ["Proveedor de Acceso a la Red SARA."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es 'IDS'?",
"rights" : ["Intrusion Detection System.", "Sistema de Detección de Intrusos."],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - Servicios, Protocolos y Métodos - Preguntas",
"group" : "kyman_redes_protocolos",
"queries" : [{
"question" : "¿Cuál es la función del [[rand,FTP|File Transfer Protocol|Protocolo de Transferencia de Archivos]]?",
"rights" : ["Transferir archivos entre un cliente y un servidor."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,HTTP|HyperText Transfer Protocol|Protocolo de Transferencia de Hipertexto]]?",
"rights" : ["Transferir páginas web y otros recursos en la web."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,HTTPS|HyperText Transfer Protocol Secure|Protocolo Seguro de Transferencia de Hipertexto]]?",
"rights" : ["Proporcionar una conexión segura para la transferencia de páginas web y otros recursos en la web."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,IP|Internet Protocol|Protocolo de Internet]]?",
"rights" : ["Encaminar y direccionar paquetes de datos entre dispositivos en una red."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,POP3|Post Office Protocol 3|Protocolo de Oficina de Correos 3]]?",
"rights" : ["Recuperar correos electrónicos desde un servidor de correo al cliente de correo."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,SMTP|Simple Mail Transfer Protocol|Protocolo Simple de Transferencia de Correo]]?",
"rights" : ["Enviar correos electrónicos desde un cliente de correo a un servidor de correo o entre servidores de correo."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,TCP|Transmission Control Protocol|Protocolo de Control de Transmisión]]?",
"rights" : ["Proporcionar una comunicación fiable y ordenada entre aplicaciones en una red."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,UDP|User Datagram Protocol|Protocolo de Datagramas de Usuario]]?",
"rights" : ["Proporcionar una comunicación rápida y sin conexión entre aplicaciones en una red, sin garantizar la entrega ni el orden de los paquetes."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,DNS|Domain Name System|Sistema de Nombres de Dominio]]?",
"rights" : ["Resolver nombres de dominio en direcciones IP para facilitar la localización de recursos en una red."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,DHCP|Dynamic Host Configuration Protocol|Protocolo de Configuración Dinámica de Host]]?",
"rights" : ["Asignar automáticamente direcciones IP y otros parámetros de configuración de red a dispositivos en una red."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,SSH|Secure Shell|Shell Seguro]]?",
"rights" : ["Proporcionar una conexión segura y cifrada para la administración remota de sistemas y la transferencia de archivos."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,SSL|Secure Sockets Layer|Capa de Conexión Segura]]?",
"rights" : ["Proporcionar una capa de seguridad para las comunicaciones en red mediante el cifrado de datos."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,TLS|Transport Layer Security|Seguridad en la Capa de Transporte]]?",
"rights" : [
"Proporcionar una capa de seguridad mejorada para las comunicaciones en red mediante el cifrado de datos y la autenticación.",
"Proporcionar una capa de seguridad mejorada para las comunicaciones en red mediante el cifrado de datos y la verificación de la identidad de los participantes."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,STP|Spanning Tree Protocol|Protocolo de Árbol de Expansión]]?",
"rights" : ["Prevenir bucles de red en topologías de red conmutadas mediante la creación de una estructura de árbol."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,EUI-64|Extended Unique Identifier 64|Identificador Único Ampliado 64]]?",
"rights" : [
"Generar identificadores únicos de 64 bits para interfaces de red a partir de direcciones MAC de 48 bits, para direcciones IPv6.",
"Generar identificadores únicos de red a partir de direcciones MAC, insertando 'FFFE' en el medio, para direcciones IPv6."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,CIDR|Classless Inter-Domain Routing|Enrutamiento Inter-Dominio Sin Clases]]?",
"rights" : [
"Permitir una asignación más flexible y eficiente de direcciones IP mediante el uso de prefijos de longitud variable.",
"Permitir una asignación más eficiente de direcciones IP mediante la eliminación de las clases de red tradicionales."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,NAT|Network Address Translation|Traducción de Direcciones de Red]]?",
"rights" : [
"Permitir que múltiples dispositivos en una red local compartan una única dirección IP pública para acceder a Internet.",
"Modificar las direcciones IP en los paquetes de datos para facilitar la comunicación entre redes con diferentes esquemas de direccionamiento."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,ARP|Address Resolution Protocol|Protocolo de Resolución de Direcciones]]?",
"rights" : ["Resolver direcciones IP en direcciones MAC para facilitar la comunicación en redes locales."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,RARP|Reverse Address Resolution Protocol|Protocolo de Resolución Inversa de Direcciones]]?",
"rights" : ["Resolver direcciones MAC en direcciones IP, aunque su uso es limitado y ha sido reemplazado en gran medida por DHCP."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,ICMP|Internet Control Message Protocol|Protocolo de Mensajes de Control de Internet]]?",
"rights" : ["Enviar mensajes de control y error entre dispositivos en una red para diagnosticar y gestionar problemas de comunicación."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,IGMP|Internet Group Management Protocol|Protocolo de Gestión de Grupos de Internet]]?",
"rights" : ["Gestionar la membresía de dispositivos en grupos multicast en una red IPv4."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,SLAAC|Stateless Address Autoconfiguration|Autoconfiguración de Direcciones Sin Estado]]?",
"rights" : ["Permitir que los dispositivos configuren automáticamente sus propias direcciones IPv6 sin necesidad de un servidor DHCP."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,DHCPv6|Dynamic Host Configuration Protocol for IPv6|Protocolo de Configuración Dinámica de Host para IPv6]]?",
"rights" : ["Asignar automáticamente direcciones IPv6 y otros parámetros de configuración de red a dispositivos en una red IPv6."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,MPLS|Multiprotocol Label Switching|Conmutación de Etiquetas Multiprotocolo]]?",
"rights" : ["Mejorar la eficiencia y velocidad del enrutamiento de paquetes en redes mediante el uso de etiquetas en lugar de direcciones IP."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,VLAN|Virtual Local Area Network|Red de Área Local Virtual]]?",
"rights" : ["Segmentar una red física en múltiples redes lógicas para mejorar la seguridad y la gestión del tráfico."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,VPN|Virtual Private Network|Red Privada Virtual]]?",
"rights" : ["Proporcionar una conexión segura y cifrada a través de una red pública, como Internet, para acceder a recursos de una red privada."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,QoS|Quality of Service|Calidad de Servicio]]?",
"rights" : ["Priorizar ciertos tipos de tráfico de red para garantizar un rendimiento adecuado para aplicaciones críticas."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,WPA2|Wi-Fi Protected Access 2|Acceso Protegido Wi-Fi 2]]?",
"rights" : ["Proporcionar seguridad mejorada para redes Wi-Fi mediante el uso de cifrado avanzado."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,WPA3|Wi-Fi Protected Access 3|Acceso Protegido Wi-Fi 3]]?",
"rights" : ["Proporcionar la última generación de seguridad para redes Wi-Fi con mejoras en el cifrado y la protección contra ataques."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,WEP|Wired Equivalent Privacy|Privacidad Equivalente a Cableado]]?",
"rights" : ["Proporcionar una capa básica de seguridad para redes Wi-Fi, aunque es considerado inseguro y obsoleto."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,SSID|Service Set Identifier|Identificador de Conjunto de Servicios]]?",
"rights" : ["Identificar una red Wi-Fi específica para que los dispositivos puedan conectarse a ella."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la función del [[rand,ISP|Internet Service Provider|Proveedor de Servicios de Internet]]?",
"rights" : ["Proporcionar acceso a Internet y otros servicios relacionados a los usuarios y empresas."],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - Servicios, Protocolos y Métodos - OSI",
"group" : "kyman_redes_protocolos",
"queries" : [{
"question" : [
"¿En qué capa del modelo OSI opera el [[rand,STP|Spanning Tree Protocol|Protocolo de Árbol de Expansión]]?",
"¿En qué capa del modelo OSI opera el [[rand,ARP|Address Resolution Protocol|Protocolo de Resolución de Direcciones]]?",
"¿En qué capa del modelo OSI opera el [[rand,RARP|Reverse Address Resolution Protocol|Protocolo de Resolución Inversa de Direcciones]]?"
],
"rights" : ["Capa de Enlace de Datos", "Capa de Enlace", "Capa 2"],
"brothers_are_wrongs" : true
}, {
"question" : [
"¿En qué capa del modelo OSI opera [[rand,la IP|el Internet Protocol|el Protocolo de Internet]]?",
"¿En qué capa del modelo OSI opera el [[rand,ICMP|Internet Control Message Protocol|Protocolo de Mensajes de Control de Internet]]?",
"¿En qué capa del modelo OSI opera el [[rand,IGMP|Internet Group Management Protocol|Protocolo de Gestión de Grupos de Internet]]?",
"¿En qué capa del modelo OSI opera el [[rand,SLAAC|Stateless Address Autoconfiguration|Autoconfiguración de Direcciones Sin Estado]]?",
"¿En qué capa del modelo OSI opera el [[rand,NAT|Network Address Translation|Traducción de Direcciones de Red]]?",
"¿En qué capa del modelo OSI opera el [[rand,MPLS|Multiprotocol Label Switching|Conmutación de Etiquetas Multiprotocolo]]?",
"¿En qué capa del modelo OSI opera el [[rand,VLAN|Virtual Local Area Network|Red de Área Local Virtual]]?"
],
"rights" : ["Capa de Red", "Capa 3"],
"brothers_are_wrongs" : true
}, {
"question" : [
"¿En qué capa del modelo OSI opera el [[rand,TCP|Transmission Control Protocol|Protocolo de Control de Transmisión]]",
"¿En qué capa del modelo OSI opera el [[rand,UDP|User Datagram Protocol|Protocolo de Datagramas de Usuario]]?",
"¿En qué capa del modelo OSI opera el [[rand,QoS|Quality of Service|Calidad de Servicio]]?"
],
"rights" : ["Capa de Transporte", "Capa 4"],
"brothers_are_wrongs" : true
}, {
"question" : [
"¿En qué capa del modelo OSI opera el protocolo SSL/TLS?",
"¿En qué capa del modelo OSI opera el [[rand,SSL|Secure Sockets Layer|Capa de Conexión Segura]]?",
"¿En qué capa del modelo OSI opera el [[rand,TLS|Transport Layer Security|Seguridad en la Capa de Transporte]]?",
"¿En qué capa del modelo OSI opera el [[rand,SSH|Secure Shell|Capa de Aplicación]]?",
"¿En qué capa del modelo OSI opera el [[rand,DHCP|Dynamic Host Configuration Protocol|Capa de Aplicación]]?",
"¿En qué capa del modelo OSI opera el [[rand,DNS|Domain Name System|Capa de Aplicación]]?",
"¿En qué capa del modelo OSI opera el [[rand,POP3|Post Office Protocol 3|Capa de Aplicación]]?",
"¿En qué capa del modelo OSI opera el [[rand,FTP|File Transfer Protocol|Capa de Aplicación]]?",
"¿En qué capa del modelo OSI opera el [[rand,HTTP|Hypertext Transfer Protocol|Capa de Aplicación]]?"
],
"rights" : ["Capa de Aplicación", "Capa 7"],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - Servicios, Protocolos y Métodos - Programas",
"group" : "kyman_redes_protocolos",
"queries" : [{
"question" : "¿Qué programas son para gestionar un servidor [[rand,FTP|File Transfer Protocol|Protocolo de Transferencia de Archivos]]?",
"rights" : ["FileZilla", "vsftpd", "ProFTPD", "Pure-FTPd", "WinSCP", "ftpd"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué programas son para gestionar un servidor [[rand,DNS|Domain Name System|Sistema de Nombres de Dominio]]?",
"rights" : ["BIND", "dnsmasq", "PowerDNS", "Unbound", "Knot DNS"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué programas son para gestionar un servidor [[rand,SMTP|Simple Mail Transfer Protocol|Protocolo Simple de Transferencia de Correo]]?",
"rights" : ["Postfix", "Exim", "Sendmail", "qmail", "Courier Mail Server"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué programas son para gestionar un servidor [[rand,SSH|Secure Shell|Shell Seguro]]?",
"rights" : ["OpenSSH", "PuTTY", "Bitvise SSH Server", "MobaXterm", "WinSCP"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué programas son para gestionar un servidor [[rand,DHCP|Dynamic Host Configuration Protocol|Protocolo de Configuración Dinámica de Host]]?",
"rights" : ["ISC DHCP Server", "dnsmasq", "Kea DHCP", "DHCPD", "Pump"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué programas son para gestionar un servidor [[rand,HTTP|HyperText Transfer Protocol|Protocolo de Transferencia de Hipertexto]]?",
"rights" : ["Apache HTTP Server", "Nginx", "Microsoft Internet Information Services (IIS)", "LiteSpeed Web Server", "Caddy"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué programas son para gestionar un servidor [[rand,HTTPS|HyperText Transfer Protocol Secure|Protocolo Seguro de Transferencia de Hipertexto]]?",
"rights" : ["Apache HTTP Server con mod_ssl", "Nginx con OpenSSL", "Microsoft Internet Information Services (IIS) con SSL", "LiteSpeed Web Server con SSL", "Caddy con soporte HTTPS integrado"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué programas son para gestionar un servidor [[rand,POP3|Post Office Protocol version 3|Protocolo de Oficina de Correos versión 3]]?",
"rights" : ["Dovecot", "Courier-IMAP", "Cyrus IMAP", "Qpopper", "MailEnable"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué programas son para gestionar un servidor [[rand,STP|Spanning Tree Protocol|Protocolo de Árbol de Expansión]]?",
"rights" : ["Bridge Utilities (brctl)", "Open vSwitch", "mstpd (Multiple Spanning Tree Protocol Daemon)", "Spanning Tree Protocol Daemon (stpd)", "Rapid Spanning Tree Protocol (RSTP) implementations"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué programas son para gestionar un servidor [[rand,NAT|Network Address Translation|Traducción de Direcciones de Red]]?",
"rights" : ["iptables", "pf (Packet Filter)", "NAT64", "NAT46", "Cisco IOS NAT"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué programas son para gestionar un servidor [[rand,VPN|Virtual Private Network|Red Privada Virtual]]?",
"rights" : ["OpenVPN", "WireGuard", "IPsec (StrongSwan, Libreswan)", "PPTP (Point-to-Point Tunneling Protocol)", "SoftEther VPN"],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - Servicios, Protocolos y Métodos - Ventajas",
"group" : "kyman_redes_protocolos",
"queries" : [{
"question" : "¿Qué ventaja tiene IPv4?",
"rights" : [
"Amplia compatibilidad y soporte en la mayoría de los dispositivos y redes.",
"Simplicidad en la configuración y gestión.",
"Menor tamaño de encabezado en comparación con IPv6."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué ventaja tiene IPv6?",
"rights" : [
"Mayor espacio de direcciones con direcciones de 128 bits.",
"Mejoras en la seguridad y privacidad con IPsec obligatorio.",
"Soporte nativo para la autoconfiguración y movilidad."
],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - Servicios, Protocolos y Métodos - Desventajas",
"group" : "kyman_redes_protocolos",
"queries" : [{
"question" : "¿Qué desventaja tiene IPv4?",
"rights" : [
"Limitaciones en el espacio de direcciones.",
"Falta de características de seguridad integradas.",
"Dificultades para la autoconfiguración."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué desventaja tiene IPv6?",
"rights" : [
"Complejidad en la configuración y gestión.",
"Incompatibilidad con IPv4.",
"Mayor tamaño de encabezado en comparación con IPv4."
],
"brothers_are_wrongs" : true
}]
}]

View File

@ -0,0 +1,134 @@
[{
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IEEE 802",
"group" : "kyman_redes_ieee_802",
"queries" : [{
"question" : "¿Cuál es el estándar IEEE 802?",
"rights" : ["Un conjunto de estándares desarrollados para redes de área local (LAN) y redes de área metropolitana (MAN)."],
"wrongs" : [
"Un protocolo de comunicación utilizado en redes de área amplia (WAN).",
"Un estándar para la transmisión de datos a través de redes inalámbricas (Wi-Fi).",
"Un conjunto de reglas para la seguridad en redes informáticas."
],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IEEE 802 - Significados",
"group" : "kyman_redes_ieee_802",
"queries" : [{
"question" : [
"¿Cuál es el estándar que define las capas física y de enlace del modelo OSI?",
"¿Cuál es el estándar para la gestión de redes y la interoperabilidad entre diferentes tipos de redes?"
],
"rights" : ["IEEE 802.1"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el estándar para la gestión y etiquetados de VLAN en redes Ethernet?",
"rights" : ["IEEE 802.1Q"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el estándar que define la [[rand,LLC|Logical Link Control|Capa de Enlace Lógico]] en redes de área local?",
"rights" : ["IEEE 802.2", "dot1Q"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el estándar que define el [[rand,STP|Spanning Tree Protocol|Protocolo de Árbol de Expansión]]?",
"rights" : ["IEEE 802.1D"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el estándar de [[rand,la tecnología 10Base5|la topología Bus|Coaxial grueso de hasta 500m a 10Mbits/s]]?",
"rights" : ["IEEE 802.3"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el estándar de [[rand,la tecnología 10Base2|la topología Bus|Coaxial fino de hasta 185m a 10Mbits/s]]?",
"rights" : ["IEEE 802.3a"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el estándar de [[rand,la tecnología 10BaseT|Par trenzado de hasta 100m a 10Mbits/s]]?",
"rights" : ["IEEE 802.3i"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el estándar de [[rand,la tecnología 100BaseTX|la tecnología 100BaseT4|la tecnología 100BaseFX|Par trenzado de hasta 100m a 100Mbits/s]]?",
"rights" : ["IEEE 802.3u"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el estándar de [[rand,la tecnología 1000BaseT|Par trenzado de hasta 100m a 1Gbits/s]]?",
"rights" : ["IEEE 802.3ab"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el estándar de [[rand,la tecnología 10GBaseT|Par trenzado de hasta 100m a 10Gbits/s]]?",
"rights" : ["IEEE 802.3an"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el estándar de [[rand,la tecnología 10GBaseSR|la tecnología 10GBaseLR|Fibra óptica multimodo de hasta 400m a 10Gbits/s|Fibra óptica monomodo de hasta 10km a 10Gbits/s]]?",
"rights" : ["IEEE 802.3ae"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el estándar de [[rand,la tecnología 40GBaseLR4|Fibra óptica monomodo de hasta 10km a 40Gbits/s]]?",
"rights" : ["IEEE 802.3ba"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el estándar de la arquitectura Token Ring?",
"rights" : ["IEEE 802.5"],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IEEE 802 - Selección",
"group" : "kyman_redes_ieee_802",
"queries" : [{
"question" : "¿Qué significa IEEE 802.1?",
"rights" : ["Estándar para la gestión de redes y la interoperabilidad entre diferentes tecnologías de red."],
"wrongs" : [
"Estándar para la transmisión de datos en redes de área local (LAN).",
"Estándar para la comunicación en redes de área amplia (WAN).",
"Estándar para la seguridad en redes inalámbricas."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿A qué hace referencia el estándar IEEE 802.5?",
"rights" : ["Token Ring"],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IEEE 802 - Tecnologías",
"group" : "kyman_redes_ieee_802",
"queries" : [{
"question" : "¿Qué tecnología está definida por el estándar IEEE 802.3?",
"rights" : ["10Base5", "Coaxial Grueso hasta 550m a 10Mbits/s"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tecnología está definida por el estándar IEEE 802.3a?",
"rights" : ["10Base2", "Coaxial Fino hasta 185m a 10Mbits/s"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tecnología está definida por el estándar IEEE 802.3i?",
"rights" : ["10BaseT", "Par trenzado de hasta 100m a 10Mbits/s"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tecnología está definida por el estándar IEEE 802.3u?",
"rights" : ["100BaseTX", "100BaseT4", "100BaseFX", "Par trenzado de hasta 100m a 100Mbits/s"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tecnología está definida por el estándar IEEE 802.3ab?",
"rights" : ["1000BaseT", "Par trenzado de hasta 100m a 1Gbits/s"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tecnología está definida por el estándar IEEE 802.3an?",
"rights" : ["10GBaseT", "Par trenzado de hasta 100m a 10Gbits/s"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tecnología está definida por el estándar IEEE 802.3ae?",
"rights" : ["10GBaseSR", "10GBaseLR", "Fibra óptica multimodo de hasta 400m a 10Gbits/s", "Fibra óptica monomodo de hasta 10km a 10Gbits/s"],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tecnología está definida por el estándar IEEE 802.3ba?",
"rights" : ["40GBaseLR4", "Fibra óptica monomodo de hasta 10km a 40Gbits/s"],
"brothers_are_wrongs" : true
}]
}]

View File

@ -0,0 +1,317 @@
[{
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IPv4",
"group" : "kyman_redes_ipv4",
"queries" : [{
"question" : "¿Qué es una subred?",
"rights" : ["Una subdivisión lógica de una red IP más grande."],
"wrongs" : ["Una red IP que utiliza direcciones privadas.", "Una red IP que utiliza direcciones públicas.", "Una red IP que utiliza direcciones estáticas."]
}, {
"question" : "¿Qué es una superred?",
"rights" : ["Una combinación de varias redes IP más pequeñas en una red IP más grande."],
"wrongs" : ["Una red IP que utiliza direcciones privadas.", "Una red IP que utiliza direcciones públicas.", "Una red IP que utiliza direcciones estáticas."]
}, {
"question" : "¿Qué es la Máscara de Red?",
"rights" : ["Un número que define el tamaño de una red IP."],
"wrongs" : ["Una dirección IP que se utiliza para identificar un dispositivo en una red.", "Un protocolo de comunicación utilizado en redes IP.", "Un tipo de dirección IP que se utiliza para la comunicación entre redes."]
}, {
"question" : "¿Cuál es la parte de Host de una dirección IP?",
"rights" : ["La parte de una dirección IP que identifica a un dispositivo específico dentro de una red."],
"wrongs" : ["La parte de una dirección IP que identifica a una red específica.", "La parte de una dirección IP que se utiliza para la comunicación entre redes.", "La parte de una dirección IP que se utiliza para identificar un protocolo de comunicación."]
}, {
"question" : "¿Cuál es la parte de Red de una dirección IP?",
"rights" : ["La parte de una dirección IP que identifica a una red específica."],
"wrongs" : ["La parte de una dirección IP que identifica a un dispositivo específico dentro de una red.", "La parte de una dirección IP que se utiliza para la comunicación entre redes.", "La parte de una dirección IP que se utiliza para identificar un protocolo de comunicación."]
}, {
"question" : "¿Cuáles son las direcciones IP que representan [[rand,el Broadcast|la difusión|]] y la Red en una subred?",
"rights" : ["La dirección IP de Broadcast es la última dirección de la subred y la dirección de Red es la primera."],
"wrongs" : ["La dirección IP de Broadcast es la primera dirección de la subred y la dirección de Red es la última.", "Ambas direcciones son las mismas.", "La dirección de Broadcast es la dirección de un dispositivo específico."]
}, {
"question" : "¿Cuáles son las direcciones IP que representan la red a la que pertenecen?",
"rights" : ["La dirección IP de Red es la primera dirección de la subred."],
"wrongs" : ["La dirección IP de Red es la última dirección de la subred.", "Ambas direcciones son las mismas.", "La dirección de Red es la dirección de un dispositivo específico."]
}, {
"question" : "¿Cuáles son las direcciones IP que representan el Broadcast?",
"rights" : ["La dirección IP de Broadcast es la última dirección de la subred."],
"wrongs" : ["La dirección IP de Broadcast es la primera dirección de la subred.", "Ambas direcciones son las mismas.", "La dirección de Broadcast es la dirección de un dispositivo específico."]
}, {
"question" : "¿Qué es IPv4?",
"rights" : ["IPv4 es la cuarta versión del Protocolo de Internet, que utiliza direcciones de 32 bits."],
"wrongs" : ["IPv4 es la primera versión del Protocolo de Internet.", "IPv4 utiliza direcciones de 64 bits.", "IPv4 es un protocolo de red de área local."]
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IPv4 - Clases",
"group" : "kyman_redes_ipv4",
"queries" : [{
"question" : "¿Qué es una red de clase A?",
"rights" : [
"Una red IP que utiliza la primera dirección IP en el rango de 1.0.0.0 a 126.255.255.255.",
"Una red IP cuya máscara de red es [[rand,255.0.0.0|de 8 Bits|de 1 Byte]].",
"Una red IP cuyo Host es de [[rand,24 Bits|3 Bytes]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una red de clase B?",
"rights" : [
"Una red IP que utiliza la primera dirección IP en el rango de 128.0.0.0 a 191.255.255.255.",
"Una red IP cuya máscara de red es [[rand,255.255.0.0|de 16 Bits|de 2 Bytes]].",
"Una red IP cuyo Host es de [[rand,16 Bits|2 Bytes]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una red de clase C?",
"rights" : [
"Una red IP que utiliza la primera dirección IP en el rango de 192.0.0.0 a 223.255.255.255.",
"Una red IP cuya máscara de red es [[rand,255.255.255.0|de 24 Bits|de 3 Bytes]].",
"Una red IP cuyo Host es de [[rand,8 Bits|1 Byte]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una red de clase D?",
"rights" : [
"Una red IP que utiliza la primera dirección IP en el rango de 224.0.0.0 a 239.255.255.255.",
"Es una red IP utilizada para el tráfico [[rand,multicast|de multidifusión]]."
],
"wrongs" : [
"Es una red IP utilizada para el tráfico [[rand,unicast|de unidifusión|punto a punto]].",
"Una red IP cuya máscara de red es [[rand,63.255.255.255|de 28 Bits|de 3,5 Bytes]].",
"Una red IP cuyo Host es de [[rand,4 Bits|0,5 Bytes]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una red de clase E?",
"rights" : [
"Una red IP que utiliza la primera dirección IP en el rango de 240.0.0.0 a 255.255.255.255.",
"Una red reservada para uso [[mix,o,futuro|de investigación|experimental]]."
],
"wrongs" : [
"Es una red IP utilizada para el tráfico [[rand,unicast|de unidifusión|punto a punto]].",
"Una red IP cuya máscara de red es [[rand,31.255.255.255|de 29 Bits|de 3,625 Bytes]].",
"Una red IP cuyo Host es de [[rand,3 Bits|0,275 Bytes]]."
],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IPv4 - Rangos",
"group" : "kyman_redes_ipv4",
"queries" : [{
"question" : "¿Cuál es el rango de direcciones IP para una red de clase A?",
"rights" : ["De 1.0.0.0 a 126.255.255.255."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el rango de direcciones IP para una red de clase B?",
"rights" : ["De 128.0.0.0 a 191.255.255.255."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el rango de direcciones IP para una red de clase C?",
"rights" : ["De 192.0.0.0 a 223.255.255.255."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el rango de direcciones IP para una red de clase D?",
"rights" : ["De 224.0.0.0 a 239.255.255.255."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el rango de direcciones IP para una red de clase E?",
"rights" : ["De 240.0.0.0 a 255.255.255.255."],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IPv4 - Bytes",
"group" : "kyman_redes_ipv4",
"queries" : [{
"question" : "¿Cuántos Bytes de máscara tiene una dirección IP de clase A?",
"rights" : ["1 Byte."],
"wrongs" : ["Ninguno.", "[[range,4-32]] Bytes."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bytes de máscara tiene una dirección IP de clase B?",
"rights" : ["2 Bytes."],
"wrongs" : ["Ninguno.", "[[range,4-32]] Bytes."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bytes de máscara tiene una dirección IP de clase C?",
"rights" : ["3 Bytes."],
"wrongs" : ["Ninguno.", "[[range,4-32]] Bytes."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bytes de Host tiene una dirección IP de clase A?",
"rights" : ["3 Bytes."],
"wrongs" : ["Ninguno.", "[[range,4-32]] Bytes."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bytes de Host tiene una dirección IP de clase B?",
"rights" : ["2 Bytes."],
"wrongs" : ["Ninguno.", "[[range,4-32]] Bytes."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bytes de Host tiene una dirección IP de clase C?",
"rights" : ["1 Byte."],
"wrongs" : ["Ninguno.", "[[range,4-32]] Bytes."],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IPv4 - Bits",
"group" : "kyman_redes_ipv4",
"queries" : [{
"question" : "¿Cuántos Bits de máscara tiene una dirección IP de clase A?",
"rights" : ["8 bits."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bits de máscara tiene una dirección IP de clase B?",
"rights" : ["16 bits."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bits de máscara tiene una dirección IP de clase C?",
"rights" : ["24 bits."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bits de máscara tiene una dirección IP de clase D?",
"rights" : ["No tiene."],
"wrongs" : ["[[rand,28|29]] bits."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bits de máscara tiene una dirección IP de clase E?",
"rights" : ["No tiene."],
"wrongs" : ["[[rand,28|29]] bits."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bits de Host tiene una dirección IP de clase A?",
"rights" : ["24 bits."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bits de Host tiene una dirección IP de clase B?",
"rights" : ["16 bits."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bits de Host tiene una dirección IP de clase C?",
"rights" : ["8 bits."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bits de Host tiene una dirección IP de clase D?",
"rights" : ["4 Bits."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bits de Host tiene una dirección IP de clase E?",
"rights" : ["3 Bits."],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IPv4 - IPs reservadas - Rangos",
"group" : "kyman_redes_ipv4",
"queries" : [{
"question" : "¿Qué rango de IPs sólo pueden ser usadas como dirección de origen?",
"rights" : ["De 0.0.0.0 a 0.255.255.255.", "Las 0.0.0.0/8."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rango de IPs entrarían dentro de una red privada de clase A?",
"rights" : ["De 10.0.0.0 a 10.255.255.255.", "Las 10.0.0.0/8."],
"brothers_are_wrongs" : true
}, {
"question" : "¿En qué rango de IPs están reservadas como [[rand,Espacio de Direccion Compartido|Shared Address Space]] en una NAT que comunica proveedores de servicios con subscritores?",
"rights" : ["De 100.64.0.0 a 100.127.255.255.", "Las 100.64.0.0/10."],
"brothers_are_wrongs" : true
}, {
"question" : [
"¿En qué rango de IPs se reservan las direcciones de loopback?",
"¿Qué rango de direcciones se reservan para el Host local?"
],
"rights" : ["De 127.0.0.0 a 127.255.255.255.", "Las 127.0.0.0/8."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rango de IPs tienen las [[rand,direcciones APIPA|Automatic Private IP Addressing|Direcciones IP Privadas Automáticas]]?",
"rights" : ["De 169.254.0.0 a 169.254.255.255.", "Las 169.254.0.0/16."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rango de IPs entrarían dentro de una red privada de clase B?",
"rights" : ["De 172.16.0.0 a 172.31.255.255.", "Las 172.16.0.0/12."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rango de IPs entrarían dentro de una red privada de clase C?",
"rights" : ["De 192.168.0.0 a 192.168.255.255.", "Las 192.168.0.0/16."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rango de IPs están reservadas para la documentación y ejemplos?",
"rights" : [
"De 192.0.2.0 a 192.0.2.255.", "Las 192.0.2.0/24.",
"De 198.51.100.0 a 198.51.100.255.", "Las 198.51.100.0/24.",
"De 203.0.113.0 a 203.0.113.255.", "Las 203.0.113.0/24."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rango de IPs se usa para [[rand,la clase D|Multicast|Multidifusión|Difusión Múltiple]] en Internet?",
"rights" : ["De 224.0.0.0 a 239.255.255.255.", "Las 224.0.0.0/4."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rango de IPs está reservado para [[rand,usos futuros o experimentales|usos futuros]]?",
"rights" : ["De 240.0.0.0 a 255.255.255.255.", "Las 240.0.0.0/4."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rango de IPs está reservado para destinos de [[rand,Broadcast|difusión|multidifusión]]?",
"rights" : ["Sólo la 255.255.255.255.", "La 255.255.255.255/32."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rangos de IPs son de caracter privado y no son enrutables en Internet?",
"rights" : [
"De 10.0.0.0 a 10.255.255.255.", "Las 10.0.0.0/8.",
"De 100.64.0.0 a 100.127.255.255.", "Las 100.64.0.0/10.",
"De 172.16.0.0 a 172.31.255.255.", "Las 172.16.0.0/12.",
"De 192.0.0.0 a 192.255.255.255.", "Las 192.0.0.0/24.",
"De 192.168.0.0 a 192.168.255.255.", "Las 192.168.0.0/16.",
"De 192.18.0.0 a 192.19.255.255.", "Las 192.18.0.0/15."
]
}, {
"question" : "¿Qué rango de IPs está reservado para Internet de uso especial?",
"rights" : [
"De 192.88.99.0 a 192.88.99.255.", "Las 192.88.99.0/24.",
"De 240.0.0.0 a 255.255.255.255.", "Las 240.0.0.0/4.",
"De 224.0.0.0 a 239.255.255.255.", "Las 224.0.0.0/4."
],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IPv4 - IPs reservadas - Número",
"group" : "kyman_redes_ipv4",
"queries" : [{
"question" : "¿Cuántas direcciones IPs tiene una red [[rand,privada de clase A|de clase A|para direcciones de origen|para Loopback|para Hosts]]?",
"rights" : ["[[rand,16.777.216|2^24]] direcciones."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántas direcciones IPs tiene una red [[rand,privada de clase C|de clase B|de direcciones APIPA|de Automatic Private IP Addressing|de Direcciones IP Privadas Automáticas]]?",
"rights" : ["[[rand,65.536|2^16]] direcciones."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántas direcciones IPs tiene una red [[rand,de clase C|para documentación y ejemplos]]?",
"rights" : ["[[rand,256|2^8]] direcciones."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántas direcciones IPs tiene una red [[rand,de clase D|de clase E|usos futuros o experimentales|usos futuros]]?",
"rights" : ["[[rand,268.435.456|2^28]] direcciones, aunque no son asignables."],
"wrongs" : ["[[rand,268.435.456|2^28]] direcciones."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántas direcciones IPs tiene una red para el [[rand,Espacio de Direccion Compartido|Shared Address Space]] en una NAT que comunica proveedores de servicios con subscritores",
"rights" : ["[[rand,4.194.304|2^22]] direcciones."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántas direcciones IPs tiene una red privada de clase B?",
"rights" : ["[[rand,1.048.576|2^20]] direcciones."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántas direcciones IPs tiene una red reservada para destinos de [[rand,Broadcast|difusión|multidifusión]]?",
"rights" : ["Sólo 1 dirección."],
"brothers_are_wrongs" : true
}]
}]

View File

@ -0,0 +1,450 @@
[{
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IPv6",
"group" : "kyman_redes_ipv6",
"queries" : [{
"question" : "¿Cuántas veces puede aparecer '::' en una dirección IPv6 compactada?",
"rights" : ["Solo una vez."],
"wrongs" : ["Puede aparecer múltiples veces.", "No puede aparecer en una dirección IPv6.", "Puede aparecer hasta [[range,2-8]] veces."]
}, {
"question" : "¿Cuántas clases de red existen en IPv6?",
"rights" : ["Ninguna, ya que IPv6 no utiliza clases de red."],
"wrongs" : ["Tres clases: A, B y C.", "Cinco clases: A, B, C, D y E.", "Cuatro clases: A, B, C y D."]
}, {
"question" : "¿Se puede generar una subred definida en IPv6?",
"rights" : [
"Sí, mediante la configuración del prefijo de subred.",
"Sí, pero rompería la filosofía de IPv6 de tener un espacio de direcciones amplio.",
"Sí, pero inutilizaría la [[rand,SLAAC|Stateless Address Autoconfiguration|Autoconfiguración sin estado]].",
"Sí, pero tendrías problemas con el [[rand,DHCPv6|Dynamic Host Configuration Protocol for IPv6|Protocolo de Configuración Dinámica de Host para IPv6]]."
],
"wrongs" : [
"No, las subredes en IPv6 son fijas.",
"Sí, pero solo en redes privadas.",
"No, las subredes en IPv6 se asignan automáticamente.",
"Es fundamental esta práctica en IPv6.",
"Sin problema.",
"Es lo más habitual."
]
}, {
"question" : "¿Qué es una superred en IPv6?",
"rights" : [
"Ws una red que abarca múltiples subredes.",
"Permite la agregación de direcciones IP para simplificar la administración de la red."
],
"wrongs" : [
"Es una red que utiliza direcciones IPv4.",
"Ws una red única sin subredes.",
"No existe el concepto de superred en IPv6.",
"Es una red que utiliza direcciones MAC."
]
}, {
"question" : "¿Qué es IPv6?",
"rights" : [
"La sexta versión del Protocolo de Internet, que utiliza direcciones de 128 bits.",
"La sexta versión del Protocolo de Internet, que utiliza direcciones de 16 bytes."
],
"wrongs" : [
"La primera versión del Protocolo de Internet.",
"Utiliza direcciones de 64 bits.",
"Es un protocolo de red de área local.",
"La sexta versión del Protocolo de Internet, que utiliza direcciones de [[rand,32|64|256|512|16]] bits.",
"La sexta versión del Protocolo de Internet, que utiliza direcciones de [[rand,4|8|32|64|2]] bytes."
]
}, {
"question" : "¿Qué es [[rand,Teredo|Teredo tunneling|Túnel de Teredo]]?",
"rights" : [
"Es un método para encapsular paquetes IPv6 dentro de paquetes IPv4.",
"Permite la comunicación entre nodos IPv6 a través de una red IPv4."
],
"wrongs" : [
"Es un tipo de dirección IPv6.",
"Es un protocolo de enrutamiento para IPv6.",
"Es un método de compresión de direcciones IPv6.",
"Es un mecanismo de transición de IPv4 a IPv6."
]
}, {
"question" : "¿Qué es 6to4?",
"rights" : [
"Es un método para encapsular paquetes IPv6 dentro de paquetes IPv4.",
"Permite la comunicación entre nodos IPv6 a través de una red IPv4.",
"Es un mecanismo de transición de IPv4 a IPv6."
],
"wrongs" : [
"Es un tipo de dirección IPv6.",
"Es un protocolo de enrutamiento para IPv6.",
"Es un método de compresión de direcciones IPv6."
]
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IPv6 - Partes",
"group" : "kyman_redes_ipv6",
"queries" : [{
"question" : "¿Qué es el prefijo de red en una dirección IPv6?",
"rights" : [
"Son los primeros 64 bits de la dirección.",
"Determinan la red a la que pertenece la dirección."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es el [[rand,sufijo|ID|identificador]] de interfaz en una dirección IPv6?",
"rights" : [
"Son los últimos 64 bits de la dirección.",
"Identifican de manera única la interfaz en la red.",
"Es la parte que se suele conformar de la MAC de la [[rand,interfaz|tarjeta]] de Red a la que pertenece.",
"Pese a que por defecto es la MAC, puede ser asignada de manera manual o incluso aleatoria por el [[rand,OS|Sistema Operativo]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es el prefijo de sitio en una dirección IPv6?",
"rights" : [
"Son los primeros 48 bits de la dirección.",
"Es la parte que determina el sitio al que pertenece la dirección."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es el [[rand,ID|identificador|prefijo]] de subred en una dirección IPv6?",
"rights" : [
"Son los Bits comprendidos entre el 49 y el 64 de la dirección.",
"Es la parte que determina la subred a la que pertenece la dirección."
],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IPv6 - Definiciones",
"group" : "kyman_redes_ipv6",
"queries" : [{
"question" : "¿Qué es la notación CIDR en IPv6?",
"rights" : [
"Es un método para representar direcciones IP y sus máscaras de subred.",
"Se expresa como una dirección IP seguida de una barra y un número que indica la longitud del prefijo."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cómo es la notación completa de una dirección IPv6?",
"rights" : [
"Consiste en [[rand,8|ocho]] grupos de [[rand,4|cuatro]] [[rand,caracteres|dígitos]] hexadecimales separados por dos puntos.",
"Con [[rand,8|ocho]] grupos de 16 bits cada uno."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es la compresión de ceros en una dirección IPv6?",
"rights" : [
"Es un método para simplificar la representación de direcciones.",
"Permite omitir ceros a la izquierda de un grupo de dígitos hexadecimales.",
"Consiste en reemplazar secuencias de ceros consecutivos por un doble dos puntos (::)."
],
"brothers_are_wrongs" : true
}, {
"question" : "En una dirección IPv6 compactada, ¿Qué indica el uso de '::'?",
"rights" : [
"Indica la omisión de uno o más grupos de ceros consecutivos.",
"Solo puede aparecer una vez en una dirección para evitar ambigüedades."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una subred en IPv6?",
"rights" : ["Una subdivisión lógica de una red IPv6."],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IPv6 - Definiciones II",
"group" : "kyman_redes_ipv6",
"queries" : [{
"question" : "¿Para qué se usa por defecto, en IPv6 la MAC de la [[rand,tarjeta|interfaz]] de red?",
"rights" : [
"Para conformar el ID de interfaz (los últimos 64 bits) de la dirección IPv6.",
"Para asegurar que cada dispositivo en la red tenga una dirección única."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Si la MAC es única en cada [[rand,tarjeta|interfaz]] de red, qué problema puede surgir al usarla para conformar el ID de interfaz en IPv6?",
"rights" : [
"Que si se cambia la [[rand,tarjeta|interfaz]] de red, la dirección IPv6 también cambiará.",
"Que puede comprometer la privacidad del usuario al permitir rastrear el dispositivo."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué métodos existen para evitar los problemas de usar la MAC para conformar el ID de interfaz en IPv6?",
"rights" : [
"Asignar el ID de interfaz de manera manual.",
"Generar el ID de interfaz de manera aleatoria mediante el sistema operativo."
],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IPv6 - Bits",
"group" : "kyman_redes_ipv6",
"queries" : [{
"question" : "¿Cuántos bits tiene una dirección IPv6?",
"rights" : ["128 bits."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bits tiene el prefijo de red en una dirección IPv6?",
"rights" : ["64 bits."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bits tiene el ID de interfaz en una dirección IPv6?",
"rights" : ["64 bits."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bits tiene el prefijo de sitio en una dirección IPv6?",
"rights" : ["48 bits."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bits tiene el ID de subred en una dirección IPv6?",
"rights" : ["16 bits."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos Bits tiene un grupo de una dirección IPv6?",
"rights" : ["16 bits."],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IPv6 - Bytes",
"group" : "kyman_redes_ipv6",
"queries" : [{
"question" : "¿Cuántos bytes tiene una dirección IPv6?",
"rights" : ["16 bytes."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos bytes tiene el prefijo de red en una dirección IPv6?",
"rights" : ["8 bytes."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos bytes tiene el ID de interfaz en una dirección IPv6?",
"rights" : ["8 bytes."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos bytes tiene el prefijo de sitio en una dirección IPv6?",
"rights" : ["6 bytes."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos bytes tiene el ID de subred en una dirección IPv6?",
"rights" : ["2 bytes."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos bytes tiene un grupo de una dirección IPv6?",
"rights" : ["2 bytes."],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IPv6 - Rangos de Subredes y Superredes",
"group" : "kyman_redes_ipv6",
"queries" : [{
"question" : "Qué rango de [[rand,direcciones de subred|prefijos de red]] están establecidos por el prefijo destinados a usos específicos y controlados y no generales?",
"rights" : ["Del /65 al /127."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rango de [[rand,direcciones de subred|prefijos de red]] están establecidos por el prefijo destinados a usos generales?",
"rights" : ["Del /0 al /64."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rango de [[rand,direcciones de subred|prefijos de red]] están destinados para la asignación de un sitio o cliente por parte del [[rand,ISP|Proveedor de Servicios de Internet]]?",
"rights" : ["Del /48 al /64."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rango de [[rand,direcciones de subred|prefijos de red]] es para determinar el tamaño de subred universal?",
"rights" : ["El /64."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rango de [[rand,direcciones de subred|prefijos de red]] tiene el tamaño estándar para una organización o sitio desde un [[rand,ISP|Proveedor de Servicios de Internet]]?",
"rights" : ["El /48."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rango de [[rand,direcciones de subred|prefijos de red]] es la más común para asignar a [[rand,clientes residenciales|pequeñas empresas]] en IPv6 desde un [[rand,ISP|Proveedor de Servicios de Internet]]?",
"rights" : ["El /56."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rango de [[rand,direcciones de subred|prefijos de red]] es recomendado específicamente para enlaces punto a punto?",
"rights" : ["El /127."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rango de direcciones de superred está reservado para la asignación global?",
"rights" : ["Del /0 al /47."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rango de [[rand,direcciones de subred|prefijos de red]] está reservado [[rand,a identificar un dispositivo específico|al equivalente de la red de Loopback de IPv4]]?",
"rights" : ["El /128."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué rango de [[rand,direcciones de subred|prefijos de red]] significa 'todas las redes'?",
"rights" : ["El /0."],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IPv6 - Redes reservadas",
"group" : "kyman_redes_ipv6",
"queries" : [{
"question" : "¿Qué rango de IPs están reservadas rutas por defecto?",
"rights" : [
"::/0.",
"Desde :: hasta ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff.",
"Desde :: hasta FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF.",
"Todas las direcciones posibles."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el rango de IPs para direcciones [[rand,indefinidas|no definidas]]?",
"rights" : ["::/128."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es la dirección IP para el Loopback?",
"rights" : ["::1/128."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el rango de IPs para direcciones [[rand,multicast|multidifusión]]?",
"rights" : [
"[[rand,ff|FF]]00::/8.",
"Desde ff00:: hasta ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff.",
"Desde FF00:: hasta FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el rango de IPs para direcciones [[rand,Link-Local|Local de Enlace|de ámbito Local de Enlace]]?",
"rights" : [
"[[rand,fe|FE]]80::/10.",
"Desde fe80:: hasta febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff.",
"Desde FE80:: hasta FEBF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el rango de IPs para direcciones [[rand,Unique Local|Locales Unicas|ULA]]?",
"rights" : [
"[[rand,fc|FC]]00::/7.",
"Desde fc00:: hasta fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff.",
"Desde FC00:: hasta FDFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el rango de IPs para direcciones [[rand,Site-Local|de Local de Sitio|de ámbito Local de Sitio]], actualmente obsoleto?",
"rights" : ["[[rand,fec|FEC]]0::/10."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el rango de IPs para direcciones [[rand,IPv4-mapped|mapeadas de IPv4]]?",
"rights" : [
"::[[rand,ffff|FFFF]]:0:0/96.",
"::[[rand,FFFF|ffff]]/96.",
"desde ::ffff:0.0.0.0 hasta ::ffff:255.255.255.255.",
"desde ::FFFF:0.0.0.0 hasta ::FFFF:255.255.255.255.",
"desde ::ffff:0:0 hasta ::ffff:ffff:ffff.",
"desde ::FFFF:0:0 hasta ::FFFF:FFFF:FFFF."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el rango de IPs para direcciones [[rand,IPv4-compatible|compatibles con IPv4|IPv4 Traducida]]?",
"rights" : [
"::[[rand,ffff|FFFF]]:0:0:0/96.",
"::[[rand,FFFF|ffff]]:0:0/96.",
"desde ::ffff:0:0.0.0.0 hasta ::ffff:0:255.255.255.255.",
"desde ::FFFF:0:0.0.0.0 hasta ::FFFF:0:255.255.255.255.",
"desde ::ffff:0:0:0 hasta ::ffff:0:ffff:ffff.",
"desde ::FFFF:0:0:0 hasta ::FFFF:0:FFFF:FFFF."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el rango de IPs para direcciones [[rand,Multicast|Multidifusión]] de ámbito local?",
"rights" : ["ff02::/16."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el rango de IPs para direcciones de enrutamiento para entornos de prueba?",
"rights" : [
"100::/64.",
"Desde 100:: hasta 100:ffff:ffff:ffff:ffff:ffff:ffff:ffff.",
"Desde 100:: hasta 100:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el rango de IPs para direcciones de Túnel de Teredo?",
"rights" : [
"2001::/32.",
"Desde 2001:: hasta 2001:ffff:ffff:ffff:ffff:ffff:ffff:ffff.",
"Desde 2001:: hasta 2001:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el rango de IPs para direcciones de documentación, códigos de ejemplo y pruebas?",
"rights" : [
"2001:db8::/32.",
"Desde 2001:db8:: hasta 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff.",
"Desde 2001:DB8:: hasta 2001:DB8:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuál es el rango de IPs para direcciones de 6to4?",
"rights" : [
"2002::/16.",
"Desde 2002:: hasta 2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff.",
"Desde 2002:: hasta 2002:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF."
],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Redes - IPv6 - Tipos",
"group" : "kyman_redes_ipv6",
"queries" : [{
"question" : "¿Qué es una dirección IP Unicast?",
"rights" : ["Una dirección que identifica a un único interfaz en una red."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una dirección IP Multicast?",
"rights" : ["Una dirección que identifica a un grupo de interfaces en una red."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una dirección IP Anycast?",
"rights" : ["Una dirección que puede ser asignada a múltiples interfaces, donde el tráfico se envía a la interfaz más cercana."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una dirección IP de Broadcast en IPv6?",
"rights" : ["IPv6 no utiliza direcciones de Broadcast; en su lugar, se usan direcciones Multicast."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una dirección Link-Local?",
"rights" : [
"Una dirección que es válida solo dentro del enlace local (subred) y no es enrutable fuera de él.",
"Una dirección que comienza por [[rand,fe80|FE80]]::[[rand,|/10]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una dirección [[rand,Unicast Global|Global Unicast|GUA]]?",
"rights" : ["Una dirección que es enrutable en Internet y se utiliza para la comunicación global."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una dirección [[rand,Unique Local|ULA]]?",
"rights" : [
"Una dirección que es válida dentro de una organización y no es enrutable en Internet.",
"Son direcciones similares a las direcciones privadas en IPv4.",
"Son direcciones que comienzan por [[rand,fc|FC]]00::/7."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una dirección Site-Local?",
"rights" : ["Una dirección que era válida dentro de un sitio o red privada, pero está obsoleta y ya no se recomienda su uso."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una dirección No Especificada en IPv6?",
"rights" : ["Una dirección que indica la ausencia de una dirección válida, representada como [[rand,::|::/128]]."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es una dirección Loopback en IPv6?",
"rights" : ["Una dirección que se utiliza para pruebas internas en el dispositivo, representada como [[rand,::1|::1/128]]."],
"brothers_are_wrongs" : true
}]
}]

View File

@ -0,0 +1,101 @@
[{
"origin" : "KyMAN",
"sources" : [],
"title" : "Informática - Generaciones de computadoras",
"group" : "kyman_informatica_generaciones_copmputadoras",
"queries" : [{
"question" : "¿Cuándo se produjo la [[rand,|Primera|Segunda|Tercera|Cuarta|1ª|2ª|3ª|4ª]] Generación de las Computadoras?",
"rights" : ["No hay un consenso claro de cuándo fue."],
"wrongs" : [
"Desde [[serie,1938|1940|1943|1945|1946|1955|1956|1963|1964|1971|1981|1982|1989|1990|1998|1998|1999]] hasta [[serie,1956|1963|1964|1971|1981|1982|1989|1990|1998|1998|1999]].",
"Desde [[serie,1938|1940|1943|1945|1946|1955|1956|1963|1964|1971|1981|1982|1989|1990|1998|1998|1999]] hasta la actualidad.",
"Nunca existió.",
"Es un concepto futuro que aún no ha llegado.",
"Es la Generación actual, que continúa a día de hoy.",
"Nunca, pues aunque halla informes o estudios que la recojan, actualmente no se ha definido como que realmente halla existido o existe más que como futuro."
]
}, {
"question" : "¿Cuándo se produjo la [[rand,Quinta|5ª]] Generación de las Computadoras?",
"rights" : [
"Es la Generación actual, que continúa a día de hoy.",
"No existe un consenso que determine cuándo comenzó exactamente."
],
"wrongs" : [
"Desde [[serie,1938|1940|1943|1945|1946|1955|1956|1963|1964|1971|1981|1982|1989|1990|1998|1998|1999]] hasta [[serie,1956|1963|1964|1971|1981|1982|1989|1990|1998|1998|1999]].",
"Desde [[serie,1938|1940|1943|1945|1946|1955|1956|1963|1964|1971|1981|1982|1989|1990|1998|1998|1999]] hasta la actualidad.",
"Nunca existió.",
"Es un concepto futuro que aún no ha llegado.",
"Nunca, pues aunque halla informes o estudios que la recojan, actualmente no se ha definido como que realmente halla existido o existe más que como futuro."
]
}, {
"question" : "¿Cuándo se produjo la [[rand,Sexta|Séptima|Octava|6ª|7ª|8ª]] Generación de las Computadoras?",
"rights" : ["Nunca, pues aunque halla informes o estudios que la recojan, actualmente no se ha definido como que realmente halla existido o existe más que como futuro."],
"wrongs" : [
"Desde [[serie,1938|1940|1943|1945|1946|1955|1956|1963|1964|1971|1981|1982|1989|1990|1998|1998|1999]] hasta [[serie,1956|1963|1964|1971|1981|1982|1989|1990|1998|1998|1999]].",
"Desde [[serie,1938|1940|1943|1945|1946|1955|1956|1963|1964|1971|1981|1982|1989|1990|1998|1998|1999]] hasta la actualidad.",
"Es un concepto futuro que aún no ha llegado.",
"Es la Generación actual, que continúa a día de hoy."
]
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Informática - Generaciones de computadoras - Tecnologías",
"group" : "kyman_informatica_generaciones_copmputadoras",
"queries" : [{
"question" : "¿Qué tecnología fue utilizada en la [[rand,Primera|1ª]] Generación de las Computadoras?",
"rights" : [
"Vávulas de vacío.",
"[[rand,Lenguaje Máquina|Código Máquina Absoluto|Código Binario]].",
"Creación del lenguaje [[rand,FORTRAN|FORmula TRANslation]] en una computadora de Válvulas de Vacío."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tecnología fue utilizada en la [[rand,Segunda|2ª]] Generación de las Computadoras?",
"rights" : [
"Transistores.",
"Lenguajes de programación.",
"Lenguaje Ensamblador.",
"Se crea el lenguaje [[rand,COBOL|COmmon Business-Oriented Language]].",
"Uso generalizado de [[rand,FORTRAN|FORmula TRANslation]] en computadoras con transistores."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tecnología fue utilizada en la [[rand,Tercera|3ª]] Generación de las Computadoras?",
"rights" : [
"Nacen los primeros [[rand,ICs|Circuitos Integrados]].",
"Lenguajes de alto nivel.",
"Chips.",
"Nacimiento del Lenguaje de programación [[rand,BASIC|Beginner's All-purpose Symbolic Instruction Code]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tecnología fue utilizada en la [[rand,Cuarta|4ª]] Generación de las Computadoras?",
"rights" : [
"Microprocesadores.",
"Lenguajes Orientados a Objetos.",
"Circuitos [[rand,VLSI|Very Large Scale Integration]].",
"Aparición de las primeras [[rand,Computadoras Personales|PC|Personal Computer]].",
"Desarrollo de sistemas operativos más avanzados como [[rand,MS-DOS|Microsoft Disk Operating System]] y [[rand,UNIX|Uniplexed Information and Computing System]].",
"Nacimiento del lenguaje de programación C.",
"Nacimiento del lenguaje de programación Pascal.",
"Lenguajes [[rand,4GL|de Cuarta Generación]].",
"Nacimiento del Lenguaje [[rand,SQL|Structured Query Language]].",
"Aparece la empresa [[rand,Intel|Intel Corporation]] con el Intel 4004."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tecnología es utilizada en la [[rand,Quinta|5ª]] Generación de las Computadoras?",
"rights" : [
"Inteligencia artificial.",
"Computación cuántica.",
"Procesamiento del lenguaje natural.",
"Redes Neuronales.",
"Computación en la nube.",
"Big Data.",
"Computación Ubicua.",
"Nacimiento del Lenguaje Java."
],
"brothers_are_wrongs" : true
}]
}]

View File

@ -0,0 +1,107 @@
[{
"origin" : "KyMAN",
"sources" : [],
"title" : "Informática - Hardware - ICs",
"group" : "kyman_hardware_ics",
"queries" : [{
"question" : "¿Qué es un 'IC'?",
"rights" : [
"Un Circuito Integrado.",
"Un Integrated Circuit.",
"Dispositivo electrónico que integra múltiples componentes en un solo chip."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es un 'SSI'?",
"rights" : [
"Una Small Scale Integration.",
"Una Integración a Pequeña Escala.",
"Circuitos Integrados con un número limitado de puertas lógicas (generalmente hasta 100)."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es un 'MSI'?",
"rights" : [
"Una Medium Scale Integration.",
"Una Integración a Media Escala.",
"Circuitos Integrados que contienen entre [[rand,101 y 1,000|más de cien y mil|cientouno y mil]] puertas lógicas."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es un 'LSI'?",
"rights" : [
"Una Large Scale Integration.",
"Una Integración a Gran Escala.",
"Circuitos Integrados que contienen entre [[rand,1,001 y 10,000|más de mil y diez mil|mil uno y diez mil]] puertas lógicas."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es un 'VLSI'?",
"rights" : [
"Una Very Large Scale Integration.",
"Una Integración a Muy Gran Escala.",
"Circuitos Integrados que contienen entre [[rand,10,001 y 100,000|más de diez mil y cien mil|diez mil uno y cien mil]] puertas lógicas."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es un 'ULSI'?",
"rights" : [
"Una Ultra Large Scale Integration.",
"Una Integración a Ultra Gran Escala.",
"Circuitos Integrados que contienen entre [[rand,100,001 y 1,000,000|más de cien mil y un millón|cien mil uno y un millón]] de puertas lógicas."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es un GLSI?",
"rights" : [
"Una Giga Large Scale Integration.",
"Una Integración a Escala Giga.",
"Circuitos Integrados que contienen más de [[rand,un millón|1,000,000]] de puertas lógicas."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es un Circuito Monolítico?",
"rights" : [
"Un tipo de [[rand,IC|Circuito Integrado]] donde todos los componentes están fabricados en una sola pieza de material semiconductor.",
"Un [[rand,IC|Circuito Integrado]] donde los transistores, resistencias y condensadores están integrados en un único chip.",
"Un tipo de [[rand,IC|Circuito Integrado]] que suele estar construido en un único Monocristal de Silicio.",
"Un tipo de [[rand,IC|Circuito Integrado]] que puede estar construído en un único Monocristal de [[select,1-3,0,Germanio|Asenido de Galio|Silicio-Germanio]] entre otros."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es un Circuito Híbrido de Capa Fina?",
"rights" : [
"Un tipo de [[rand,IC|Circuito Integrado]] que combina componentes discretos y circuitos integrados en una sola unidad.",
"Son como los Circuitos Monolíticos pero contienen componentes más difíciles de fabricar para éstos.",
"Muchos de los conversores [[rand,A/D y D/A|Analógico/Digital y Digital/Analógico]] son fabricados con esta tecnología."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es un Circuito Híbrido de Capa Gruesa?",
"rights" : [
"Suelen tener Circuitos Monolíticos sin cápsula, transistores, diodos, etc. Interconectados por pistas conductoras.",
"Suele estar conformado sobre un sustrato dieléctrico.",
"Las resistencias se depositan por serigrafía y se ajustan con láser",
"El encapsulado puede ser metálico o plástico, dependiendo de la disipación que requiera.",
"Se pueden encontrar muchos casos donde se cubre el circuito con resina Epoxi para protegerlo.",
"Se suelen usar para módulos de radiofrecuencia, fuentes de alimentación, etc."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es un IC Analógico?",
"rights" : [
"Un tipo de [[rand,IC|Circuito Integrado]] que maneja señales continuas.",
"Un [[rand,IC|Circuito Integrado]] que procesa señales como amplificadores operacionales, reguladores de voltaje y filtros.",
"Un [[rand,IC|Circuito Integrado]] que se utiliza en aplicaciones de audio, radiofrecuencia y procesamiento de señales."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es un IC Digital?",
"rights" : [
"Un tipo de [[rand,IC|Circuito Integrado]] que maneja señales discretas.",
"Un [[rand,IC|Circuito Integrado]] que procesa señales como microprocesadores, memorias y circuitos lógicos.",
"Un [[rand,IC|Circuito Integrado]] que se utiliza en computadoras, dispositivos electrónicos y sistemas de comunicación."
],
"brothers_are_wrongs" : true
}]
}]

View File

@ -0,0 +1,154 @@
[{
"origin" : "KyMAN",
"sources" : [],
"title" : "Informática - Programación - Codificaciones de Texto",
"group" : "kyman_programacion_codificaciones_texto",
"queries" : [{
"question" : "¿Qué es el BCD?",
"rights" : [
"Binary-Coded Decimal.",
"Codificación de Números Decimales en Binario.",
"Sistema de representación de números decimales donde cada dígito se representa por su equivalente en binario de 4 bits."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es el EBCDIC?",
"rights" : [
"Extended Binary-Coded Decimal Interchange Code.",
"Código de Intercambio Decimal Codificado en Binario Extendido.",
"Sistema de codificación de caracteres de 8 bits desarrollado por IBM, utilizado principalmente en sistemas mainframe."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es el ASCII?",
"rights" : [
"American Standard Code for Information Interchange.",
"Código Estándar Americano para el Intercambio de Información.",
"Sistema de codificación de caracteres que utiliza 7 bits para representar caracteres alfanuméricos y de control.",
"Un sistema de codificación cuyo símbolo 127 es el caracter de control."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es el ASCII Extendido?",
"rights" : [
"Extended ASCII.",
"ASCII [[rand,Ampliado|Extendido]].",
"Extended American Standard Code for Information Interchange.",
"Código Estándar Americano para el Intercambio de Información [[rand,Ampliado|Extendido]].",
"Sistema de codificación de caracteres que utiliza 8 bits, permitiendo representar 256 caracteres, incluyendo caracteres especiales y símbolos gráficos."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es el EBCDIC?",
"rights" : [
"Extended Binary-Coded Decimal Interchange Code.",
"Código de Intercambio Decimal Codificado en Binario Extendido.",
"Sistema de codificación de caracteres de 8 bits desarrollado por IBM, utilizado principalmente en sistemas mainframe."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es el Unicode?",
"rights" : [
"Estándar de codificación de caracteres universal.",
"Sistema que asigna un número único a cada carácter, independientemente de la plataforma, programa o idioma.",
"Permite representar caracteres de múltiples idiomas y símbolos en un solo conjunto de caracteres."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es el UTF?",
"rights" : [
"Unicode Transformation Format.",
"Formato de Transformación de Unicode.",
"Sistema de codificación que permite representar todos los caracteres de Unicode utilizando una secuencia de uno o más bytes."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es el ISO/IEC 8859?",
"rights" : [
"International Organization for Standardization / International Electrotechnical Commission 8859.",
"Organización Internacional de Normalización / Comisión Electrotécnica Internacional 8859.",
"Conjunto de estándares de codificación de caracteres.",
"Define diferentes codificaciones para representar caracteres en 8 bits.",
"Incluye variantes como ISO/IEC 8859-1 (Latin-1) para idiomas occidentales."
],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Informática - Programación - Codificaciones de Texto - Bits",
"group" : "kyman_programacion_codificaciones_texto",
"queries" : [{
"question" : "¿Cuántos [[mix,o,bytes|bits]] utiliza el [[rand,BCD|Binary-Coded Decimal|Código Decimal Codificado en Binario]]?",
"rights" : ["4 bits."],
"brothers_are_wrongs" : true
}, {
"question" : [
"¿Cuántos bits utiliza el [[rand,ASCII Extendido|Extended ASCII|ASCII Extendido|Extended American Standard Code for Information Interchange|Código Estándar Americano para el Intercambio de Información Extendido]]?",
"¿Cuántos bits utiliza el [[rand,EBCDIC|Extended Binary-Coded Decimal Interchange Code|Código de Intercambio Decimal Codificado en Binario Extendido]]?",
"¿Cuántos bits utiliza el [[rand,UTF-8|Unicode Transformation Format 8|Formato de Transformación de Unicode 8]]?",
"¿Cuántos bits utiliza el [[rand,ISO/IEC 8859|International Organization for Standardization / International Electrotechnical Commission 8859|Organización Internacional de Normalización / Comisión Electrotécnica Internacional 8859]]?"
],
"rights" : ["8 bits.", "1 byte."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos [[mix,o,bytes|bits]] utiliza el [[rand,ASCII|American Standard Code for Information Interchange|Código Estándar Americano para el Intercambio de Información]]?",
"rights" : ["7 bits."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos [[mix,o,bytes|bits]] utiliza el Unicode?",
"rights" : [
"8, 16 o 32 bits dependiendo de la codificación específica.",
"1, 2, o 4 bytes dependiendo de la codificación específica."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos [[mix,o,bytes|bits]] utiliza el [[rand,UTF-16|Unicode Transformation Format 16|Formato de Transformación de Unicode 16]]?",
"rights" : ["16 bits.", "2 bytes."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos [[mix,o,bytes|bits]] utiliza el [[rand,UTF-32|Unicode Transformation Format 32|Formato de Transformación de Unicode 32]]?",
"rights" : ["32 bits.", "4 bytes."],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [],
"title" : "Informática - Programación - Codificaciones de Texto - Bits por caracter",
"group" : "kyman_programacion_codificaciones_texto",
"queries" : [{
"question" : "¿Cuántos [[mix,o,bytes|bits]] por caracter utiliza el [[rand,BCD|Binary-Coded Decimal|Código Decimal Codificado en Binario]]?",
"rights" : ["4 bits."],
"brothers_are_wrongs" : true
}, {
"question" : [
"¿Cuántos bits utiliza el [[rand,ASCII Extendido|Extended ASCII|ASCII Extendido|Extended American Standard Code for Information Interchange|Código Estándar Americano para el Intercambio de Información Extendido]]?",
"¿Cuántos bits utiliza el [[rand,EBCDIC|Extended Binary-Coded Decimal Interchange Code|Código de Intercambio Decimal Codificado en Binario Extendido]]?",
"¿Cuántos bits utiliza el [[rand,ISO/IEC 8859|International Organization for Standardization / International Electrotechnical Commission 8859|Organización Internacional de Normalización / Comisión Electrotécnica Internacional 8859]]?"
],
"rights" : ["8 bits.", "1 byte."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos [[mix,o,bytes|bits]] por caracter utiliza el [[rand,ASCII|American Standard Code for Information Interchange|Código Estándar Americano para el Intercambio de Información]]?",
"rights" : ["7 bits."],
"brothers_are_wrongs" : true
}, {
"question" : [
"¿Cuántos bits utiliza el [[rand,UTF-8|Unicode Transformation Format 8|Formato de Transformación de Unicode 8]]?",
"¿Cuántos [[mix,o,bytes|bits]] utiliza el Unicode?"
],
"rights" : [
"Entre 8, 16 y 32 bits.",
"Entre 1, 2, y 4 bytes."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos [[mix,o,bytes|bits]] por caracter utiliza el [[rand,UTF-16|Unicode Transformation Format 16|Formato de Transformación de Unicode 16]]?",
"rights" : ["Entre 8 y 16 bits.", "Entre 1 y 2 bytes."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuántos [[mix,o,bytes|bits]] por caracter utiliza el [[rand,UTF-32|Unicode Transformation Format 32|Formato de Transformación de Unicode 32]]?",
"rights" : ["32 bits.", "4 bytes."],
"brothers_are_wrongs" : true
}]
}]

View File

@ -0,0 +1,159 @@
[{
"origin" : "KyMAN",
"sources" : [
"https://es.wikipedia.org/wiki/Red_SARA",
"https://es.wikipedia.org/wiki/RedIRIS"
],
"title" : "Informática - Entornos - Red SARA - Conceptos",
"group" : "kyman_informatica_entornos_red_sara",
"queries" : [{
"question" : "¿Qué es la Red SARA?",
"rights" : [
"Sistema de Aplicaciones y Redes para las Administraciones.",
"Un conjunto de [[mix,y,infraestructuras de comunicaciones|servicios básicos]] que conecta las redes de las [[mix,y,Administraciones Públicas Españolas|Instituciones Europeas]] facilitando [[mix,y,el intercambio de información|el acceso a los servicios]]."
],
"wrongs" : [
"Una red social para [[rand,funcionarios|cargos estatales]].",
"Un Sistema de Aplicaciones y Redes para [[select,1-2,y,las Empresas|el Sector Público]].",
"Una plataforma de gestión de recursos [[select,1-2,y,privados|secretos]] para las Administraciones.",
"Una infraestructura de comunicaciones para [[select,1-2,y,usuarios particulares|empresas privadas]]."
]
}, {
"question" : "¿Qué es lo que permite la Red SARA?",
"rights" : [
"Interconectar las redes de las Administraciones Públicas.",
"Cualquier unidad conectada pueda [[mix,o,proveer servicios|utilizar los que ponen a su dispocisión otras unidades de las diferentes Administraciones Públicas [1mix,o,Españolas:::Europeas1]]]."
],
"wrongs" : [
"Interconectar las redes de [[rand,empresas privadas|usuarios particulares]].",
"Cualquier unidad conectada pueda [[mix,o,proveer servicios|utilizar los que ponen a su dispocisión otras unidades de las diferentes [1rand,empresas privadas:::usuarios particulares1]]]."
]
}, {
"question" : "¿Cuál de las siguientes opciones está dentro del alcance de la Red SARA?",
"rights" : [
"[[rand,Centros de Proceso de Datos|CPD]] del Ministerio competente en materia de función pública donde se alojan servicios comunes de Administración Electrónica.",
"Ministerios de la Administración General del Estado[[rand,|, a través de éstos o de sus organismos adscritos]].",
"Comunidades Autónomas y sus Instituciones Públicas[[rand,|, a través de éstas o de las Corporaciones Locales]].",
"[[Mix,y,Instituciones|Organismos]] Públicos sin adscripción a [[mix,o,Ministerios|Comunidades Autónomas]] tales como los Órganos Constitucionales.",
"[[Mix,y,Comisión|Estados Miembros de la Unión Europea]][[rand,|, a través de [1rand,sTESTA|la Red Transeuropea]].",
"Universidades[[rand,|, a través de la conexión con [1mix,y,la Red Académica:::[2rand,RedIRIS:::Red Española para Interconexión de los Recursos Informáticos de las Universidades y Centros de Investigación2]1]]]."
],
"wrongs" : [
"[[rand,Centro de Procedimiento de Datos|CPD]] de [[rand,una empresa privada|un usuario particular]], intermediada por [[select,1-3,y,el Gobierno|las Cámaras|el Senado|las Autoridades|el Congreso de los Diputados|la Corona]].",
"La interconexión entre las [[mix,y,Administraciones Públicas|Empresas Privadas]] para manejo de datos comunes.",
"Operativilidad con países de la OTAN.",
"Redes de Telecomunicaciones Comerciales."
]
}, {
"question" : "¿En qué año se adjudicó la partida para la primera versión de la Red SARA?",
"rights" : ["En 2007."],
"wrongs" : ["En [[range,1990-2004|2005-2006|2008-2011|2012-2025]]."]
}, {
"question" : "¿En qué año se lanzó la Red SARA 2.0?",
"rights" : ["En 2009."],
"wrongs" : ["En [[range,1990-2004|2005-2008|2010-2015|2016-2025]]."]
}, {
"question" : "¿Cuál es la idea de la Red SARA?",
"rights" : ["Ser la red troncal de las comunicaciones de las Administraciones."],
"wrongs" : [
"Ser una red social para [[rand,funcionarios|cargos estatales]].",
"Ser una plataforma de gestión de recursos [[select,1-2,y,privados|secretos]] para las Administraciones.",
"Ser una infraestructura de comunicaciones para [[select,1-2,y,usuarios particulares|empresas privadas]]."
]
}, {
"question" : "¿En qué se basa la Red Troncal de la Red SARA?",
"rights" : ["[[rand,Desde[1rand,::: el 11 de Septiembre de1] 2015, e|E]]n la infraestructura de comunicaciones del operador adjudicatario de los Servicios Consolidados de Telecomunicaciones de la Administración General del Estado[[rand,| Fase I]]"],
"wrongs" : [
"[[rand,Desde[1rand,::: el [2range,1-302] de [2rand,Enero:::Febrero:::Marzo:::Abril:::Mayo:::Junio:::Julio:::Agosto:::Septiembre:::Octubre:::Noviembre:::Diciembre2] de1] [1range,2007-20251], e|E]]n cualquier proveedor de Internet[[rand,|, independientemente de su [1rand,capacidad:::seguridad:::área1]]].",
"[[rand,Desde[1rand,::: el [2range,1-302] de [2rand,Enero:::Febrero:::Marzo:::Abril:::Mayo:::Junio:::Julio:::Agosto:::Septiembre:::Octubre:::Noviembre:::Diciembre2] de1] [1range,2007-20251], e|E]]n la infraestructura de comunicaciones del operador adjudicatario de los Servicios Técnicos de Telecomunicaciones de la Administración Pública[[rand,| Fase I]]."
]
}]
}, {
"origin" : "KyMAN",
"sources" : [
"https://es.wikipedia.org/wiki/Red_SARA",
"https://es.wikipedia.org/wiki/RedIRIS"
],
"title" : "Informática - Entornos - Red SARA - Comunes",
"group" : "kyman_informatica_entornos_red_sara",
"queries" : [{
"question" : "¿Cómo es la comunicación en la Red SARA?",
"rights" : ["De transporte cifrado sobre la Red Troncal de la [[rand,VPLS|Virtual Private LAN Service|de Servicio de LAN Privada Virtual]][[rand,|, independientemente del tipo de tráfico]][[rand,|, aplicando mecanismos de [1rand,QoS:::Quality of Service:::Calidad de Servicio1]]]."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Por qué tecnologías fue precedida la Red SARA?",
"rights" : ["La red IA", "La Intranet Administrativa."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué tecnología se implementó para poder abarcar grandes áreas geográficas?",
"rights" : ["Tecnología [[rand,VPLS|Virtual Private LAN Service|de Servicio de LAN Privada Virtual]]."],
"brothers_are_wrongs" : true
}, {
"question" : "Cuáles de los siguientes servicios a usuarios ofrece la Red SARA?",
"rights" : [
"[[rand,VoIP|Voice over IP|Voz sobre Protocolo de Internet]].",
"Videoconferencia.",
"Datos de Aplicaciones."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuáles de los siguientes servicios técnicos telemáticos ofrece la Red SARA?",
"rights" : [
"[[rand,DNS|Domain Name System|Sistema de Nombres de Dominio]].",
"[[rand,SMTP|Simple Mail Transfer Protocol|Protocolo Simple de Transferencia de Correo]].",
"[[rand,NTP|Network Time Protocol|Protocolo de Tiempo de Red]].",
"Proxy.",
"Proxy Inverso."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Con cuáles de las siguientes herramientas de seguridad cuenta la Red SARA?",
"rights" : [
"Cortafuegos.",
"[[rand,IDS|Sistemas de Detección de Intrusos|Intrusion Detection System]].",
"Análisis de Vulnerabilidades.",
"Correlación de Logs."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuáles son los servicios [[rand,comunes|horizontales]] de la Red SARA?",
"rights" : ["Los promovidos directamente por el Ministerio de Política Territorial y Función Pública."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Cuáles son los servicios verticales de la Red SARA?",
"rights" : ["Los promovidos por las diferentes Administraciones Públicas[[rand,|, [1mix,y,en el marco de sus competencias:::bajo su responsabilidad1]]]."],
"brothers_are_wrongs" : true
}]
}, {
"origin" : "KyMAN",
"sources" : [
"https://es.wikipedia.org/wiki/Red_SARA",
"https://es.wikipedia.org/wiki/RedIRIS"
],
"title" : "Informática - Entornos - Red SARA - Marco normativo",
"group" : "kyman_informatica_entornos_red_sara",
"queries" : [{
"question" : "¿En cuáles de las siguientes opciones se regula obligación de las Administraciones Públicas de conectarse a la Red SARA?",
"rights" : [
"En[[rand,| el artículo 43 de]] la Ley 11/2007[[rand,|, de 22 de junio]][[rand,|, de Acceso Electrónico de los Ciudadanos a los Servicios Públicos]].",
"En [[rand,de|el artículo 13 del]] Real Decreto 4/2010[[rand,|, de 8 de enero]][[rand,|, por el que se regula el Esquema Nacional de Interoperabilidad en el ámbito de la Administración Electrónica]]."
],
"wrongs" : [
"En[[rand,| el artículo [1range,1-2001] de]] [[rand,la Ley[1rand,::: Orgánica ::: Ordinaria1]|del Real Decreto[1rand,::: Ley::: Legislativo1]]] [[range,1-3|5-10|12-90]]/[[range,1965-2025]][[rand,|, de [1range,1-301] de [1rand,Enero:::Febrero:::Marzo:::Abril:::Mayo:::Junio:::Julio:::Agosto:::Septiembre:::Octubre:::Noviembre:::Diciembre1]]][[rand,|, por el que se regula el Esquema Nacional de Interoperabilidad en el ámbito de la Administración Electrónica|, de Acceso Electrónico de los Ciudadanos a los Servicios Públicos]].",
"En[[rand,| el artículo [1range,1-2001] de]] [[rand,la Ley[1rand,::: Orgánica ::: Ordinaria1]|del Real Decreto[1rand,::: Ley::: Legislativo1]]] [[range,1-90]]/[[range,1965-2007|2008-2009|2011-2025]][[rand,|, de [1range,1-301] de [1rand,Enero:::Febrero:::Marzo:::Abril:::Mayo:::Junio:::Julio:::Agosto:::Septiembre:::Octubre:::Noviembre:::Diciembre1]]][[rand,|, por el que se regula el Esquema Nacional de Interoperabilidad en el ámbito de la Administración Electrónica|, de Acceso Electrónico de los Ciudadanos a los Servicios Públicos]]."
]
}, {
"question" : "¿En cuáles de las siguientes opciones se regula Red SARA?",
"rights" : [
"En[[rand,| el artículo 43 de]] la Ley 11/2007[[rand,|, de 22 de junio]][[rand,|, de Acceso Electrónico de los Ciudadanos a los Servicios Públicos]].",
"En [[rand,| el artículo 13 del]] Real Decreto 4/2010[[rand,|, de 8 de enero]][[rand,|, por el que se regula el Esquema Nacional de Interoperabilidad en el ámbito de la Administración Electrónica]].",
"[[rand,| Resolución de 19 de Julio de 2011 de la Secretaría de Estado para la Función Pública, por la que se aprueba la ]]Norma Técnica de Interoperatibilidad de requisitos de conexión a la red de comunicaciones de las Administraciones Públicas Españolas."
],
"wrongs" : [
"En[[rand,| el artículo [1range,1-2001] de]] [[rand,la Ley[1rand,::: Orgánica ::: Ordinaria1]|del Real Decreto[1rand,::: Ley::: Legislativo1]]] [[range,1-3|5-10|12-90]]/[[range,1965-2025]][[rand,|, de [1range,1-301] de [1rand,Enero:::Febrero:::Marzo:::Abril:::Mayo:::Junio:::Julio:::Agosto:::Septiembre:::Octubre:::Noviembre:::Diciembre1]]][[rand,|, por el que se regula el Esquema Nacional de Interoperabilidad en el ámbito de la Administración Electrónica|, de Acceso Electrónico de los Ciudadanos a los Servicios Públicos]].",
"En[[rand,| el artículo [1range,1-2001] de]] [[rand,la Ley[1rand,::: Orgánica ::: Ordinaria1]|del Real Decreto[1rand,::: Ley::: Legislativo1]]] [[range,1-90]]/[[range,1965-2007|2008-2009|2011-2025]][[rand,|, de [1range,1-301] de [1rand,Enero:::Febrero:::Marzo:::Abril:::Mayo:::Junio:::Julio:::Agosto:::Septiembre:::Octubre:::Noviembre:::Diciembre1]]][[rand,|, por el que se regula el Esquema Nacional de Interoperabilidad en el ámbito de la Administración Electrónica|, de Acceso Electrónico de los Ciudadanos a los Servicios Públicos]].",
"[[rand,| Resolución de [1range,1-18:::20-301] de [1rand,Enero:::Febrero:::Marzo:::Abril:::Mayo:::Junio:::Julio:::Agosto:::Septiembre:::Octubre:::Noviembre:::Diciembre1] de [1range,1995-20251] de [1rand,la Secretaría de Estado para la Función Pública1], por la que se aprueba la ]]Norma[[rand,|tiva]] Técnica de Interoperatibilidad de [[rand,requisitos|recursos|condiciones]] de conexión a la red de comunicaciones de las Administraciones Públicas [[rand,Europeas|Españolas|Internacionales]].",
"[[rand,| Resolución de [1range,1-301] de [1rand,Enero:::Febrero:::Marzo:::Abril:::Mayo:::Junio:::Julio:::Agosto:::Septiembre:::Octubre:::Noviembre:::Diciembre1] de [1range,1995-2010:::2012-20251] de [1rand,la Secretaría de Estado para la Función Pública1], por la que se aprueba la ]]Norma[[rand,|tiva]] Técnica de Interoperatibilidad de [[rand,requisitos|recursos|condiciones]] de conexión a la red de comunicaciones de las Administraciones Públicas [[rand,Europeas|Españolas|Internacionales]]."
]
}]
}]

View File

@ -0,0 +1,526 @@
[{
"origin" : "Paco Barbié",
"title" : "Constitución - Estructura",
"source" : "https://www.youtube.com/watch?v=jll91s6qz6c",
"queries" : [{
"question" : "¿Cuántos artículos tiene la Constitución Española de 1978?",
"rights" : ["169 artículos"],
"wrongs" : ["[[range,40-168|170-230]] artículos"]
}, {
"question" : "¿Cuántos títulos tiene la Constitución Española?",
"rights" : ["Un título preliminar y 10 títulos"],
"wrongs" : ["[[range,2-9|11-23]] títulos", "[[range,2-15]] títulos preliminares y [[range,2-9|11-23]] títulos"]
}, {
"question" : "¿Cuántas disposiciones adicionales tiene la Constitución Española?",
"rights" : ["4 disposiciones adicionales"],
"wrongs" : ["Ninguna disposición adicional", "1 disposición adicional", "[[range,2-3|5-15]] disposiciones adicionales"]
}, {
"question" : "¿Cuántas disposiciones transitorias tiene la Constitución Española?",
"rights" : ["9 disposiciones transitorias"],
"wrongs" : ["Ninguna disposición transitoria", "1 disposición transitoria", "2 disposiciones transitorias", "3 disposiciones transitorias", "1 disposición transitoria", "5 disposiciones transitorias", "4 disposiciones transitorias", "6 disposiciones transitorias", "7 disposiciones transitorias", "8 disposiciones transitorias", "10 disposiciones transitorias"]
}, {
"question" : "¿Cuántas disposiciones derogatorias tiene la Constitución Española?",
"rights" : ["1 disposición derogatoria"],
"wrongs" : ["Ninguna disposición derogatoria", "2 disposiciones derogatorias", "3 disposiciones derogatorias", "1 disposición derogatoria", "5 disposiciones derogatorias", "4 disposiciones derogatorias", "6 disposiciones derogatorias", "7 disposiciones derogatorias", "8 disposiciones derogatorias", "10 disposiciones derogatorias"]
}, {
"question" : "¿Cuántas disposiciones finales tiene la Constitución Española?",
"rights" : ["1 disposición final"],
"wrongs" : ["Ninguna disposición final", "2 disposiciones finales", "3 disposiciones finales", "1 disposición final", "5 disposiciones finales", "4 disposiciones finales", "6 disposiciones finales", "7 disposiciones finales", "8 disposiciones finales", "10 disposiciones finales"]
}, {
"question" : "¿Cómo se llama el Título I de la Constitución Española?",
"rights" : ["de los derechos y deberes fundamentales"],
"wrongs" : ["de la Corona", "de las Cortes Generales", "del Gobierno", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Título de la Constitución Española corresponde 'De los derechos y deberes fundamentales'?",
"rights" : ["Título I"],
"wrongs" : ["Título [[rand,II|III|IV|V|VI|VII|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["46 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2-45|47-60]] artículos"]
}, {
"question" : "¿De cuántos capítulos se componen el Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["5 capítulos"],
"wrongs" : [["Ningún capítulo", 0.1], "1 capítulo", "[[range,2-4|6-7]] capítulos"]
}, {
"question" : "¿De qué artículos se componen el Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["Del artículo 10 al artículo 55"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,1-44]] al artículo [[serie,2-60]]"]
}, {
"question" : "¿Cómo se llama el Título II de la Constitución Española?",
"rights" : ["de la Corona"],
"wrongs" : ["de los derechos y deberes fundamentales", "de las Cortes Generales", "del Gobierno", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Título de la Constitución Española corresponde 'De la Corona'?",
"rights" : ["Título II"],
"wrongs" : ["Título [[rand,I|III|IV|V|VI|VII|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos capítulos se componen el Título [[rand,II|De la Corona]] de la Constitución Española?",
"rights" : ["Ningún capítulo"],
"wrongs" : [["1 capítulo", 0.17], "[[range,2-7]] capítulos"]
}, {
"question" : "¿De cuántos artículos se componen el Título [[rand,II|De la Corona]] de la Constitución Española?",
"rights" : ["10 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2-9|11-60]] artículos"]
}, {
"question" : "¿De qué artículos se componen el Título [[rand,II|De la Corona]] de la Constitución Española?",
"rights" : ["Del artículo 56 al artículo 65"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,30-80]] al artículo [[serie,32-110]]"]
}, {
"question" : "¿Cómo se llama el Título III de la Constitución Española?",
"rights" : ["de las Cortes Generales"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "del Gobierno", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Título de la Constitución Española corresponde 'De las Cortes Generales'?",
"rights" : ["Título III"],
"wrongs" : ["Título [[rand,I|II|IV|V|VI|VII|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Título [[rand,III|De las Cortes Generales]] de la Constitución Española?",
"rights" : ["31 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2-30|32-60]] artículos"]
}, {
"question" : "¿De cuántos capítulos se componen el Título [[rand,III|De las Cortes Generales]] de la Constitución Española?",
"rights" : ["3 capítulos"],
"wrongs" : [["Ningún capítulo", 0.1], "1 capítulo", "[[range,2|4-7]] capítulos"]
}, {
"question" : "¿De qué artículos se componen el Título [[rand,III|De las Cortes Generales]] de la Constitución Española?",
"rights" : ["Del artículo 66 al artículo 96"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,40-90]] al artículo [[serie,43-120]]"]
}, {
"question" : "¿Cómo se llama el Título IV de la Constitución Española?",
"rights" : ["del Gobierno"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Título de la Constitución Española corresponde 'Del Gobierno'?",
"rights" : ["Título IV"],
"wrongs" : ["Título [[rand,I|II|III|V|VI|VII|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Título [[rand,IV|Del Gobierno]] de la Constitución Española?",
"rights" : ["11 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2-10|12-60]] artículos"]
}, {
"question" : "¿De cuántos capítulos se componen el Título [[rand,IV|Del Gobierno]] de la Constitución Española?",
"rights" : ["Ningún capítulo"],
"wrongs" : [["1 capítulo", 0.17], "[[range,2-7]] capítulos"]
}, {
"question" : "¿De qué artículos se componen el Título [[rand,IV|Del Gobierno]] de la Constitución Española?",
"rights" : ["Del artículo 97 al artículo 107"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,85-110]] al artículo [[serie,88-130]]"]
}, {
"question" : "¿Cómo se llama el Título V de la Constitución Española?",
"rights" : ["de las relaciones entre el Gobierno y las Cortes Generales"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Título de la Constitución Española corresponde 'De las relaciones entre el Gobierno y las Cortes Generales'?",
"rights" : ["Título V"],
"wrongs" : ["Título [[rand,I|II|III|IV|VI|VII|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Título [[rand,V|De las relaciones entre el Gobierno y las Cortes Generales]] de la Constitución Española?",
"rights" : ["9 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2-8|10-60]] artículos"]
}, {
"question" : "¿De cuántos capítulos se componen el Título [[rand,V|De las relaciones entre el Gobierno y las Cortes Generales]] de la Constitución Española?",
"rights" : ["Ningún capítulo"],
"wrongs" : [["1 artículo", 0.1], "1 capítulo", "[[range,2-7]] capítulos"]
}, {
"question" : "¿De qué artículos se componen el Título [[rand,V|De las relaciones entre el Gobierno y las Cortes Generales]] de la Constitución Española?",
"rights" : ["Del artículo 108 al artículo 116"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,90-140]] al artículo [[serie,93-160]]"]
}, {
"question" : "¿Cómo se llama el Título VI de la Constitución Española?",
"rights" : ["del Poder Judicial"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Título de la Constitución Española corresponde 'De las relaciones entre el Gobierno y las Cortes Generales'?",
"rights" : ["Título VI"],
"wrongs" : ["Título [[rand,I|II|III|IV|IV|VII|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Título [[rand,VI|Del Poder Judicial]] de la Constitución Española?",
"rights" : ["11 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2-10|12-60]] artículos"]
}, {
"question" : "¿De cuántos capítulos se componen el Título [[rand,VI|Del Poder Judicial]] de la Constitución Española?",
"rights" : ["Ningún capítulo"],
"wrongs" : [["1 capítulo", 0.17], "[[range,2-7]] capítulos"]
}, {
"question" : "¿De qué artículos se componen el Título [[rand,VI|Del Poder Judicial]] de la Constitución Española?",
"rights" : ["Del artículo 117 al artículo 127"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,100-140]] al artículo [[serie,103-160]]"]
}, {
"question" : "¿Cómo se llama el Título VII de la Constitución Española?",
"rights" : ["Economía y Hacienda"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Título de la Constitución Española corresponde a 'Economía y Hacienda'?",
"rights" : ["Título VII"],
"wrongs" : ["Título [[rand,I|II|III|IV|IV|VI|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Título [[rand,VII|De la Economía y Hacienda]] de la Constitución Española?",
"rights" : ["9 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2-8|10-60]] artículos"]
}, {
"question" : "¿De cuántos capítulos se componen el Título [[rand,VII|De la Economía y Hacienda]] de la Constitución Española?",
"rights" : ["Ningún capítulo"],
"wrongs" : [["1 capítulo", 0.17], "[[range,2-7]] capítulos"]
}, {
"question" : "¿De qué artículos se componen el Título [[rand,VII|De la Economía y Hacienda]] de la Constitución Española?",
"rights" : ["Del artículo 128 al artículo 136"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,110-140]] al artículo [[serie,113-170]]"]
}, {
"question" : "¿Cómo se llama el Título VIII de la Constitución Española?",
"rights" : ["De la Organización Territorial del Estado"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Título de la Constitución Española corresponde 'De la Organización Territorial del Estado'?",
"rights" : ["Título VIII"],
"wrongs" : ["Título [[rand,I|II|III|IV|IV|VI|VII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Título [[rand,VIII|De la Organización Territorial del Estado]] de la Constitución Española?",
"rights" : ["22 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2-21|23-60]] artículos"]
}, {
"question" : "¿De cuántos capítulos se componen el Título [[rand,VIII|De la Organización Territorial del Estado]] de la Constitución Española?",
"rights" : ["3 capítulos"],
"wrongs" : [["Ningún capítulo", 0.1], "1 capítulo", "[[range,2|4-7]] capítulos"]
}, {
"question" : "¿De qué artículos se componen el Título [[rand,VIII|De la Organización Territorial del Estado]] de la Constitución Española?",
"rights" : ["Del artículo 137 al artículo 158"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,130-150]] al artículo [[serie,133-170]]"]
}, {
"question" : "¿Cómo se llama el Título IX de la Constitución Española?",
"rights" : ["Del Tribunal Constitucional"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Título de la Constitución Española corresponde 'Del Tribunal Constitucional'?",
"rights" : ["Título IX"],
"wrongs" : ["Título [[rand,I|II|III|IV|IV|VI|VII|VIII|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Título [[rand,IX|Del Tribunal Constitucional]] de la Constitución Española?",
"rights" : ["7 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2-6|8-60]] artículos"]
}, {
"question" : "¿De cuántos capítulos se componen el Título [[rand,IX|Del Tribunal Constitucional]] de la Constitución Española?",
"rights" : ["Ningún capítulo"],
"wrongs" : [["1 capítulo", 0.17], "[[range,2-7]] capítulos"]
}, {
"question" : "¿De qué artículos se componen el Título [[rand,IX|Del Tribunal Constitucional]] de la Constitución Española?",
"rights" : ["Del artículo 159 al artículo 165"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,150-170]] al artículo [[serie,153-180]]"]
}, {
"question" : "¿Cómo se llama el Título X de la Constitución Española?",
"rights" : ["De la Reforma Constitucional"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Título de la Constitución Española corresponde 'De la Reforma Constitucional'?",
"rights" : ["Título X"],
"wrongs" : ["Título [[rand,I|II|III|IV|IV|VI|VII|VIII|IX]]"]
}, {
"question" : "¿De cuántos artículos se componen el Título [[rand,X|De la Reforma Constitucional]] de la Constitución Española?",
"rights" : ["4 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2-3|5-60]] artículos"]
}, {
"question" : "¿De cuántos capítulos se componen el Título [[rand,X|De la Reforma Constitucional]] de la Constitución Española?",
"rights" : ["Ningún capítulo"],
"wrongs" : [["1 capítulo", 0.17], "[[range,2-7]] capítulos"]
}, {
"question" : "¿De qué artículos se componen el Título [[rand,X|De la Reforma Constitucional]] de la Constitución Española?",
"rights" : ["Del artículo 166 al artículo 169"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,160-170]] al artículo [[serie,161-180]]"]
}, {
"question" : "¿Cómo se llama el Capítulo Primero del Título I de la Constitución Española?",
"rights" : ["De los españoles y los extranjeros"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Capítulo de la Constitución Española corresponde los derechos y deberes fundamentales 'De los españoles y los extranjeros'?",
"rights" : ["Capítulo Primero del Título I"],
"wrongs" : ["Capítulo [[rand,Segundo|Tercero|Cuarto|Quinto]] del Título I", "Capítulo Primero del Título [[rand,II|III|IV|V|VI|VII|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Capítulo [[rand,Primero|De los españoles y los extranjeros]] del Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["3 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2-2|4-40]] artículos"]
}, {
"question" : "¿De cuántas secciones se componen el Capítulo [[rand,Primero|De los españoles y los extranjeros]] del Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["Ninguna sección"],
"wrongs" : [["Ninguna sección", 0.2], ["1 sección", 0.17], "[[range,2-7]] secciones"]
}, {
"question" : "¿De qué artículos se componen el Capítulo [[rand,Primero|De los españoles y los extranjeros]] del Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["Del artículo 11 al artículo 13"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,1-17]] al artículo [[serie,2-22]]"]
}, {
"question" : "¿Cómo se llama el Capítulo Segundo del Título I de la Constitución Española?",
"rights" : ["Derechos y libertades"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Capítulo de la Constitución Española corresponde los derechos y deberes fundamentales, 'Derechos y libertades'?",
"rights" : ["Capítulo Segundo del Título I"],
"wrongs" : ["Capítulo [[rand,Primero|Tercero|Cuarto|Quinto]] del Título I", "Capítulo Segundo del Título [[rand,II|III|IV|V|VI|VII|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Capítulo [[rand,Segundo|De los Derechos y Libertades]] del Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["25 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2-24|26-40]] artículos"]
}, {
"question" : "¿De cuántas secciones se componen el Capítulo [[rand,Segundo|De los Derechos y Libertades]] del Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["2 secciones"],
"wrongs" : [["Ninguna sección", 0.2], ["1 sección", 0.17], "[[range,3-7]] secciones"]
}, {
"question" : "¿De qué artículos se componen el Capítulo [[rand,Segundo|De los Derechos y Libertades]] del Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["Del artículo 14 al artículo 38"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,5-32]] al artículo [[serie,10-60]]"]
}, {
"question" : "¿Cómo se llama el Capítulo Tercero del Título I de la Constitución Española?",
"rights" : ["De los principios rectores de la política social y económica"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Capítulo de la Constitución Española corresponde los derechos y deberes fundamentales, 'De los principios rectores de la política social y económica'?",
"rights" : ["Capítulo Tercero del Título I"],
"wrongs" : ["Capítulo [[rand,Segundo|Primero|Cuarto|Quinto]] del Título I", "Capítulo Tercero del Título [[rand,II|III|IV|V|VI|VII|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Capítulo [[rand,Tercero|De los principios rectores de la política social y económica]] del Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["14 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2-13|15-40]] artículos"]
}, {
"question" : "¿De cuántas secciones se componen el Capítulo [[rand,Tercero|De los principios rectores de la política social y económica]] del Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["Ninguna sección"],
"wrongs" : [["Ninguna sección", 0.2], ["1 sección", 0.17], "[[range,2-7]] secciones"]
}, {
"question" : "¿De qué artículos se componen el Capítulo [[rand,Tercero|De los principios rectores de la política social y económica]] del Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["Del artículo 39 al artículo 52"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,20-60]] al artículo [[serie,25-70]]"]
}, {
"question" : "¿Cómo se llama el Capítulo Cuarto del Título I de la Constitución Española?",
"rights" : ["De las garantías de las libertades y derechos fundamentales"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Capítulo de la Constitución Española corresponde los derechos y deberes fundamentales, 'De las garantías de las libertades y derechos fundamentales'?",
"rights" : ["Capítulo Cuarto del Título I"],
"wrongs" : ["Capítulo [[rand,Segundo|Primero|Tercero|Quinto]] del Título I", "Capítulo Cuarto del Título [[rand,II|III|IV|V|VI|VII|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Capítulo [[rand,Cuarto|De las garantías de las libertades y derechos fundamentales]] del Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["2 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,3-40]] artículos"]
}, {
"question" : "¿De cuántas secciones se componen el Capítulo [[rand,Cuarto|De las garantías de las libertades y derechos fundamentales]] del Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["Ninguna sección"],
"wrongs" : [["Ninguna sección", 0.2], ["1 sección", 0.17], "[[range,2-7]] secciones"]
}, {
"question" : "¿De qué artículos se componen el Capítulo [[rand,Cuarto|De las garantías de las libertades y derechos fundamentales]] del Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["Del artículo 53 al artículo 54"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,20-60]] al artículo [[serie,25-70]]"]
}, {
"question" : "¿Cómo se llama el Capítulo Quinto del Título I de la Constitución Española?",
"rights" : ["De la suspensión de los derechos y libertades"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Capítulo de la Constitución Española corresponde los derechos y deberes fundamentales, 'De la suspensión de los derechos y libertades'?",
"rights" : ["Capítulo Quinto del Título I"],
"wrongs" : ["Capítulo [[rand,Segundo|Primero|Tercero|Cuarto]] del Título I", "Capítulo Quinto del Título [[rand,II|III|IV|V|VI|VII|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Capítulo [[rand,Quinto|De la suspensión de los derechos y libertades]] del Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["1 artículo"],
"wrongs" : ["[[range,2-40]] artículos"]
}, {
"question" : "¿De cuántas secciones se componen el Capítulo [[rand,Quinto|De la suspensión de los derechos y libertades]] del Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["Ninguna sección"],
"wrongs" : [["Ninguna sección", 0.2], ["1 sección", 0.17], "[[range,2-7]] secciones"]
}, {
"question" : "¿De qué artículos se componen el Capítulo [[rand,Quinto|De la suspensión de los derechos y libertades]] del Título [[rand,I|De los derechos y deberes fundamentales]] de la Constitución Española?",
"rights" : ["Sólo el artículo 55"],
"wrongs" : [["Sólo el artículo [[range,1-54|56-230]]", 0.1], "Del artículo [[serie,20-60]] al artículo [[serie,25-70]]"]
}, {
"question" : "¿Cómo se llama el Capítulo Primero del Título III de la Constitución Española?",
"rights" : ["De las Cámaras"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Capítulo de la Constitución Española corresponde a las Cortes Generales, 'De las Cámaras'?",
"rights" : ["Capítulo Primero del Título III"],
"wrongs" : ["Capítulo [[rand,Segundo|Tercero|Cuarto|Quinto]] del Título III", "Capítulo Primero del Título [[rand,I|II|IV|V|VI|VII|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Capítulo [[rand,Primero|De las Cámaras]] del Título [[rand,III|De las Cortes Generales]] de la Constitución Española?",
"rights" : ["15 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2-14|16-40]] artículos"]
}, {
"question" : "¿De cuántas secciones se componen el Capítulo [[rand,Primero|De las Cámaras]] del Título [[rand,III|De las Cortes Generales]] de la Constitución Española?",
"rights" : ["Ninguna sección"],
"wrongs" : [["Ninguna sección", 0.2], ["1 sección", 0.17], "[[range,2-7]] secciones"]
}, {
"question" : "¿De qué artículos se componen el Capítulo [[rand,Primero|De las Cámaras]] del Título [[rand,III|De las Cortes Generales]] de la Constitución Española?",
"rights" : ["Del artículo 66 al artículo 80"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,50-90]] al artículo [[serie,55-100]]"]
}, {
"question" : "¿Cómo se llama el Capítulo Segundo del Título III de la Constitución Española?",
"rights" : ["De la elaboración de las leyes"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Capítulo de la Constitución Española corresponde a las Cortes Generales, 'De la elaboración de las leyes'?",
"rights" : ["Capítulo Segundo del Título III"],
"wrongs" : ["Capítulo [[rand,Primero|Tercero|Cuarto|Quinto]] del Título III", "Capítulo Segundo del Título [[rand,I|II|IV|V|VI|VII|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Capítulo [[rand,Segundo|De la elaboración de las leyes]] del Título [[rand,III|De las Cortes Generales]] de la Constitución Española?",
"rights" : ["12 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2-11|13-40]] artículos"]
}, {
"question" : "¿De cuántas secciones se componen el Capítulo [[rand,Segundo|De la elaboración de las leyes]] del Título [[rand,III|De las Cortes Generales]] de la Constitución Española?",
"rights" : ["Ninguna sección"],
"wrongs" : [["Ninguna sección", 0.2], ["1 sección", 0.17], "[[range,2-7]] secciones"]
}, {
"question" : "¿De qué artículos se componen el Capítulo [[rand,Segundo|De la elaboración de las leyes]] del Título [[rand,III|De las Cortes Generales]] de la Constitución Española?",
"rights" : ["Del artículo 81 al artículo 92"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,60-90]] al artículo [[serie,65-110]]"]
}, {
"question" : "¿Cómo se llama el Capítulo Tercero del Título III de la Constitución Española?",
"rights" : ["De los Tratados Internacionales"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Capítulo de la Constitución Española corresponde a las Cortes Generales, 'De los Tratados Internacionales'?",
"rights" : ["Capítulo Tercero del Título III"],
"wrongs" : ["Capítulo [[rand,Primero|Segundo|Cuarto|Quinto]] del Título III", "Capítulo Tercero del Título [[rand,I|II|IV|V|VI|VII|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Capítulo [[rand,Tercero|De los Tratados Internacionales]] del Título [[rand,III|De las Cortes Generales]] de la Constitución Española?",
"rights" : ["4 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2-3|5-40]] artículos"]
}, {
"question" : "¿De cuántas secciones se componen el Capítulo [[rand,Tercero|De los Tratados Internacionales]] del Título [[rand,III|De las Cortes Generales]] de la Constitución Española?",
"rights" : ["Ninguna sección"],
"wrongs" : [["Ninguna sección", 0.2], ["1 sección", 0.17], "[[range,2-7]] secciones"]
}, {
"question" : "¿De qué artículos se componen el Capítulo [[rand,Tercero|De los Tratados Internacionales]] del Título [[rand,III|De las Cortes Generales]] de la Constitución Española?",
"rights" : ["Del artículo 93 al artículo 96"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,60-90]] al artículo [[serie,65-110]]"]
}, {
"question" : "¿Cómo se llama el Capítulo Primero del Título VIII de la Constitución Española?",
"rights" : ["Principios generales"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Capítulo de la Constitución Española corresponde a la organización territorial del estado, 'De los Principios generales'?",
"rights" : ["Capítulo Primero del Título VIII"],
"wrongs" : ["Capítulo [[rand,Segundo|Tercero|Cuarto|Quinto]] del Título VIII", "Capítulo Primero del Título [[rand,I|II|IV|V|VI|VII|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Capítulo [[rand,Primero|De los Tratados Internacionales]] del Título [[rand,VIII|De la organización territorial del Estado]] de la Constitución Española?",
"rights" : ["3 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2|4-40]] artículos"]
}, {
"question" : "¿De cuántas secciones se componen el Capítulo [[rand,Primero|De los Tratados Internacionales]] del Título [[rand,VIII|De la organización territorial del Estado]] de la Constitución Española?",
"rights" : ["Ninguna sección"],
"wrongs" : [["Ninguna sección", 0.2], ["1 sección", 0.17], "[[range,2-7]] secciones"]
}, {
"question" : "¿De qué artículos se componen el Capítulo [[rand,Primero|De los Tratados Internacionales]] del Título [[rand,VIII|De la organización territorial del Estado]] de la Constitución Española?",
"rights" : ["Del artículo 137 al artículo 139"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,110-160]] al artículo [[serie,115-165]]"]
}, {
"question" : "¿Cómo se llama el Capítulo Segundo del Título VIII de la Constitución Española?",
"rights" : ["De la Administración Local"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Capítulo de la Constitución Española corresponde a la organización territorial del estado, 'De la Administración Local'?",
"rights" : ["Capítulo Segundo del Título VIII"],
"wrongs" : ["Capítulo [[rand,Primero|Tercero|Cuarto|Quinto]] del Título VIII", "Capítulo Segundo del Título [[rand,I|II|IV|V|VI|VII|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Capítulo [[rand,Segundo|De la Administración Local]] del Título [[rand,VIII|De la organización territorial del Estado]] de la Constitución Española?",
"rights" : ["3 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2|4-40]] artículos"]
}, {
"question" : "¿De cuántas secciones se componen el Capítulo [[rand,Segundo|De la Administración Local]] del Título [[rand,VIII|De la organización territorial del Estado]] de la Constitución Española?",
"rights" : ["Ninguna sección"],
"wrongs" : [["Ninguna sección", 0.2], ["1 sección", 0.17], "[[range,2-7]] secciones"]
}, {
"question" : "¿De qué artículos se componen el Capítulo [[rand,Segundo|De la Administración Local]] del Título [[rand,VIII|De la organización territorial del Estado]] de la Constitución Española?",
"rights" : ["Del artículo 140 al artículo 142"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,120-160]] al artículo [[serie,125-165]]"]
}, {
"question" : "¿Cómo se llama el Capítulo Tercero del Título VIII de la Constitución Española?",
"rights" : ["De las Comunidades Autónomas"],
"wrongs" : ["de los derechos y deberes fundamentales", "de la Corona", "de las Cortes Generales", "de la organización territorial del Estado", "de la Administración Pública", "de la justicia", "de la economía y la hacienda", "de la seguridad social", "de la defensa nacional", "de la Unión Europea"]
}, {
"question" : "¿A qué Capítulo de la Constitución Española corresponde a la organización territorial del estado, 'De las Comunidades Autónomas'?",
"rights" : ["Capítulo Tercero del Título VIII"],
"wrongs" : ["Capítulo [[rand,Primero|Segundo|Cuarto|Quinto]] del Título VIII", "Capítulo Tercero del Título [[rand,I|II|IV|V|VI|VII|VIII|IX|X]]"]
}, {
"question" : "¿De cuántos artículos se componen el Capítulo [[rand,Tercero|De las Comunidades Autónomas]] del Título [[rand,VIII|De la organización territorial del Estado]] de la Constitución Española?",
"rights" : ["16 artículos"],
"wrongs" : [["1 artículo", 0.1], "[[range,2-15|17-40]] artículos"]
}, {
"question" : "¿De cuántas secciones se componen el Capítulo [[rand,Tercero|De las Comunidades Autónomas]] del Título [[rand,VIII|De la organización territorial del Estado]] de la Constitución Española?",
"rights" : ["Ninguna sección"],
"wrongs" : [["Ninguna sección", 0.2], ["1 sección", 0.17], "[[range,2-7]] secciones"]
}, {
"question" : "¿De qué artículos se componen el Capítulo [[rand,Tercero|De las Comunidades Autónomas]] del Título [[rand,VIII|De la organización territorial del Estado]] de la Constitución Española?",
"rights" : ["Del artículo 143 al artículo 158"],
"wrongs" : [["Sólo el artículo [[range,1-230]]", 0.1], "Del artículo [[serie,130-165]] al artículo [[serie,135-175]]"]
}, {
"question" : "¿En qué fecha fue la Aprobación por las Cortes Generales de la constitución Española en sesiones plenarias?",
"rights" : ["31 de Octubre de 1978"],
"wrongs" : ["[[range,1-30]] de [[rand,Diciembre|Octubre]] de 1978", "6 de Diciembre de 1978", "27 de Diciembre de 1978", "29 de Diciembre de 1978"]
}, {
"question" : "¿Quién aprobó la Constitución Española en sesiones plenarias el 31 de Octubre de 1978?",
"rights" : ["Las Cortes Generales"],
"wrongs" : ["El pueblo español en referéndum", "Su Majestad el Rey ante las Cortes", "El Tribunal Constitucional", "El Congreso de los Diputados", "El Senado"]
}, {
"question" : "¿En qué fecha fue la ratificación del pueblo Español de la constitución Española por Referéndum?",
"rights" : ["6 de Diciembre de 1978"],
"wrongs" : ["[[range,1-5|7-31]] de [[rand,Diciembre|Octubre]] de 1978", "31 de Octubre de 1978", "27 de Diciembre de 1978", "29 de Diciembre de 1978"]
}, {
"question" : "¿Quién ratificó la Constitución Española?",
"rights" : ["El pueblo español en referéndum"],
"wrongs" : ["Las Cortes Generales", "Su Majestad el Rey ante las Cortes", "El Tribunal Constitucional", "El Congreso de los Diputados", "El Senado"]
}, {
"question" : "¿Quién sancionó y promulgó la Constitución Española ante las Cortes?",
"rights" : ["Su Majestad el Rey"],
"wrongs" : ["El pueblo español en referéndum", "El Tribunal Constitucional", "El Congreso de los Diputados", "El Senado"]
}, {
"question" : "¿En qué fecha fue la sanción y promulgación por su majestad el Rey ante las Cortes para la constitución Española?",
"rights" : ["27 de Diciembre de 1978"],
"wrongs" : ["[[range,1-27|28-31]] de [[rand,Diciembre|Octubre]] de 1978", "31 de Octubre de 1978", "6 de Diciembre de 1978", "29 de Diciembre de 1978"]
}, {
"question" : "¿En qué fecha fue publica en el BOE la constitución Española?",
"rights" : ["29 de Diciembre de 1978"],
"wrongs" : ["[[range,1-28|30-31]] de [[rand,Diciembre|Octubre]] de 1978", "31 de Octubre de 1978", "6 de Diciembre de 1978", "27 de Diciembre de 1978"]
}, {
"question" : "¿En qué fecha entra vigor la constitución Española?",
"rights" : ["29 de Diciembre de 1978"],
"wrongs" : ["[[range,1-28|30-31]] de [[rand,Diciembre|Octubre]] de 1978", "31 de Octubre de 1978", "6 de Diciembre de 1978", "27 de Diciembre de 1978"]
}, {
"question" : "¿Cuándo se modificó el Artículo 13.2 de la Constitución Española?",
"rights" : ["27 de Agosto de 1992"],
"wrongs" : ["[[range,1-31]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Noviembre|Diciembre]] de [[range,1978-2025]]", "31 de Octubre de 1978", "6 de Diciembre de 1978", "27 de Diciembre de 1978", "27 de Septiembre de 2011", "15 de Febrero de 2024"]
}, {
"question" : "¿Cuándo se modificó el Artículo 135 de la Constitución Española?",
"rights" : ["27 de Septiembre de 2011"],
"wrongs" : ["[[range,1-31]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Noviembre|Diciembre]] de [[range,1978-2025]]", "31 de Octubre de 1978", "6 de Diciembre de 1978", "27 de Diciembre de 1978", "27 de Agosto de 1992", "15 de Febrero de 2024"]
}, {
"question" : "¿Cuándo se modificó el Artículo 49 de la Constitución Española?",
"rights" : ["15 de Febrero de 2024"],
"wrongs" : ["[[range,1-31]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Noviembre|Diciembre]] de [[range,1978-2025]]", "31 de Octubre de 1978", "6 de Diciembre de 1978", "27 de Diciembre de 1978", "27 de Agosto de 1992", "27 de Septiembre de 2011"]
}, {
"question" : "¿Qué sucedió el 31 de Octubre de 1978?",
"rights" : ["La aprobación de la Constitución Española por las Cortes Generales en sesiones plenarias"],
"wrongs" : ["Se ratificó la Constitución Española por el pueblo español en referéndum", "Se sancionó y promulgó la Constitución Española por su Majestad el Rey ante las Cortes", "Se publicó la Constitución Española en el BOE", "Entró en vigor la Constitución Española", "Se le añade la expresión 'y pasivo' al artículo 13.2 de la Constitución Española", "Se modifica el artículo 135 de la Constitución Española para incluir el principio de estabilidad presupuestaria", "Se modifica el artículo 49 de la Constitución Española para sustituir el término 'disminuidos' por 'personas con discapacidad'"]
}, {
"question" : "¿Qué sucedió el 6 de Diciembre de 1978?",
"rights" : ["Se ratificó la Constitución Española por el pueblo español en referéndum"],
"wrongs" : ["La aprobación de la Constitución Española por las Cortes Generales en sesiones plenarias", "Se sancionó y promulgó la Constitución Española por su Majestad el Rey ante las Cortes", "Se publicó la Constitución Española en el BOE", "Entró en vigor la Constitución Española", "Se le añade la expresión 'y pasivo' al artículo 13.2 de la Constitución Española", "Se modifica el artículo 135 de la Constitución Española para incluir el principio de estabilidad presupuestaria", "Se modifica el artículo 49 de la Constitución Española para sustituir el término 'disminuidos' por 'personas con discapacidad'"]
}, {
"question" : "¿Qué sucedió el 27 de Diciembre de 1978?",
"rights" : ["Se sancionó y promulgó la Constitución Española por su Majestad el Rey ante las Cortes"],
"wrongs" : ["La aprobación de la Constitución Española por las Cortes Generales en sesiones plenarias", "Se ratificó la Constitución Española por el pueblo español en referéndum", "Se publicó la Constitución Española en el BOE", "Entró en vigor la Constitución Española", "Se le añade la expresión 'y pasivo' al artículo 13.2 de la Constitución Española", "Se modifica el artículo 135 de la Constitución Española para incluir el principio de estabilidad presupuestaria", "Se modifica el artículo 49 de la Constitución Española para sustituir el término 'disminuidos' por 'personas con discapacidad'"]
}, {
"question" : "¿Qué sucedió el 29 de Diciembre de 1978?",
"rights" : ["Se publicó la Constitución Española en el BOE", "Entró en vigor la Constitución Española"],
"wrongs" : ["La aprobación de la Constitución Española por las Cortes Generales en sesiones plenarias", "Se ratificó la Constitución Española por el pueblo español en referéndum", "Se sancionó y promulgó la Constitución Española por su Majestad el Rey ante las Cortes", "Se le añade la expresión 'y pasivo' al artículo 13.2 de la Constitución Española", "Se modifica el artículo 135 de la Constitución Española para incluir el principio de estabilidad presupuestaria", "Se modifica el artículo 49 de la Constitución Española para sustituir el término 'disminuidos' por 'personas con discapacidad'"]
}, {
"question" : "¿Qué sucedió el 27 de Agosto de 1992?",
"rights" : ["Se le añade la expresión 'y pasivo' al artículo 13.2 de la Constitución Española"],
"wrongs" : ["La aprobación de la Constitución Española por las Cortes Generales en sesiones plenarias", "Se ratificó la Constitución Española por el pueblo español en referéndum", "Se sancionó y promulgó la Constitución Española por su Majestad el Rey ante las Cortes", "Se publicó la Constitución Española en el BOE", "Entró en vigor la Constitución Española", "Se modifica el artículo 135 de la Constitución Española para incluir el principio de estabilidad presupuestaria", "Se modifica el artículo 49 de la Constitución Española para sustituir el término 'disminuidos' por 'personas con discapacidad'"]
}, {
"question" : "¿Qué sucedió el 27 de septiembre de 2011?",
"rights" : ["Se modifica el artículo 135 de la Constitución Española para incluir el principio de estabilidad presupuestaria"],
"wrongs" : ["La aprobación de la Constitución Española por las Cortes Generales en sesiones plenarias", "Se ratificó la Constitución Española por el pueblo español en referéndum", "Se sancionó y promulgó la Constitución Española por su Majestad el Rey ante las Cortes", "Se publicó la Constitución Española en el BOE", "Entró en vigor la Constitución Española", "Se le añade la expresión 'y pasivo' al artículo 13.2 de la Constitución Española", "Se modifica el artículo 49 de la Constitución Española para sustituir el término 'disminuidos' por 'personas con discapacidad'"]
}, {
"question" : "¿Qué sucedió el 15 de Febrero de 2024?",
"rights" : ["Se modifica el artículo 49 de la Constitución Española para sustituir el término 'disminuidos' por 'personas con discapacidad'"],
"wrongs" : ["La aprobación de la Constitución Española por las Cortes Generales en sesiones plenarias", "Se ratificó la Constitución Española por el pueblo español en referéndum", "Se sancionó y promulgó la Constitución Española por su Majestad el Rey ante las Cortes", "Se publicó la Constitución Española en el BOE", "Entró en vigor la Constitución Española", "Se le añade la expresión 'y pasivo' al artículo 13.2 de la Constitución Española", "Se modifica el artículo 135 de la Constitución Española para incluir el principio de estabilidad presupuestaria"]
}, {
"question" : "¿Quiénes son los Poderes Públicos del Estado?",
"rights" : ["[[Mix,y,el poder legislativo|el poder ejecutivo|el poder judicial]]."],
"wrongs" : ["El poder legislativo y el poder ejecutivo.", "El poder legislativo y el poder judicial.", "El poder ejecutivo y el poder judicial.", "El poder legislativo.", "El poder ejecutivo.", "El poder judicial.", "Ninguno de los anteriores."]
}]
}]

View File

@ -0,0 +1,172 @@
[{
"origin" : "Paco Barbié",
"title" : "Constitución - Preámbulo y Título Preliminar",
"source" : "https://www.youtube.com/watch?v=saHVlJohBTU",
"queries" : [{
"question" : "¿Qué es el preámbulo?",
"rights" : ["Es una carta de presentación de la Constitución Española."],
"wrongs" : ["Es un conjunto de artículos que desarrollan los derechos fundamentales.", "Es una sección que establece la estructura del gobierno.", "Es un resumen de las leyes principales del país."]
}, {
"question" : "¿Qué proclama el preámbulo?",
"rights" : ["Los valores y principios en los que se basa la Constitución."],
"wrongs" : ["Los derechos y deberes de los ciudadanos.", "La estructura del gobierno y sus funciones.", "Un resumen de las leyes principales del país."]
}, {
"question" : "¿En qué se constituye el estado Español?",
"rights" : ["En un estado social y democrático de derecho."],
"wrongs" : ["En un estado autoritario y centralizado.", "En un estado federal y confederado.", "En un estado socialista y planificado."]
}, {
"question" : "¿Cuáles son los valores superiores del ordenamiento jurídico?",
"rights" : ["[[Mix,y,la libertad|la justicia|la igualdad|el pluralismo político]]."],
"wrongs" : [
"[[Mix,y,la seguridad|el orden|la tradición|la autoridad]].",
"[[Mix,y,la riqueza|el poder|el control|la dominación]].",
"[[Mix,y,la unidad|la homogeneidad|la conformidad|la obediencia]].",
"[[Mix,y,la solidaridad|la fraternidad|la cooperación|la ayuda mutua]].",
"[[Mix,y,la paz|la tolerancia|el respeto|la convivencia]].",
"[[Mix,y,la democracia|la participación|la transparencia|la rendición de cuentas]].",
"[[Mix,y,la soberanía|la independencia|la autonomía|la autogestión]].",
"[[Mix,y,la diversidad|la multiculturalidad|la pluralidad|la inclusión]].",
"[[Mix,y,la innovación|la creatividad|el progreso|el desarrollo]].",
"[[Mix,y,la sostenibilidad|la ecología|el medio ambiente|la conservación]].",
"[[Mix,y,la educación|la cultura|el conocimiento|la ciencia]].",
"[[Mix,y,la salud|el bienestar|la calidad de vida|la felicidad]].",
"[[Mix,y,la familia|la comunidad|la sociedad|la nación]]."
]
}, {
"question" : "¿De dónde emanan los poderes del estado?",
"rights" : ["Del pueblo, a través de la soberanía nacional.", "De la soberanía nacional"],
"wrongs" : ["De la monarquía, a través del derecho divino.", "De las instituciones, a través de la legalidad.", "De los partidos políticos, a través de la representación."]
}, {
"question" : "¿Dónde reside la soberanía nacional?",
"rights" : ["En el pueblo español."],
"wrongs" : ["En el rey o la reina.", "En las instituciones del estado.", "En los partidos políticos."]
}, {
"question" : "¿Cuál es la forma política del estado español?",
"rights" : ["La monarquía parlamentaria."],
"wrongs" : ["La república federal.", "La república presidencialista.", "La monarquía absoluta.", "El estado socialista.", "La confederación de estados.", "El estado teocrático.", "La dictadura militar.", "El estado anárquico.", "La oligarquía plutocrática.", "El estado comunista.", "La democracia directa.", "El estado autoritario.", "La tecnocracia.", "El estado totalitario.", "La meritocracia.", "El estado tribal.", "La democracia participativa.", "El estado feudal.", "La democracia representativa."]
}, {
"question" : "¿En qué se fundamenta la Constitución Española?",
"rights" : ["En la indisoluble unidad de la nación española, patria común e indivisible de todos los españoles."],
"wrongs" : ["En la diversidad de las nacionalidades y regiones que la integran.", "En la autonomía de las comunidades autónomas.", "En la solidaridad entre las nacionalidades y regiones."]
}, {
"question" : "¿Qué reconoce y garantiza la Constitución Española?",
"rights" : ["El derecho a la autonomía de las nacionalidades y regiones que la integran y la solidaridad entre todas ellas."],
"wrongs" : ["El derecho a la independencia de las nacionalidades y regiones que la integran.", "El derecho a la secesión de las nacionalidades y regiones que la integran.", "El derecho a la supremacía de las nacionalidades y regiones que la integran."]
}, {
"question" : "¿Cuál es la lengua oficial del estado Español?",
"rights" : ["El castellano."],
"wrongs" : ["El castellano conjunto con el catalán, el gallego y el vasco.", "La competente en cada Comunidad Autónoma.", "El Español"]
}, {
"question" : "¿Con respecto [[rand,a la lengua oficial del Estado|al castellano]], qué dice la Constitución Española?",
"rights" : ["Todos los españoles tienen el deber de conocerla y el derecho a usarla."],
"wrongs" : ["Solo los españoles de nacimiento tienen el deber de conocerla y el derecho a usarla.", "Solo los españoles residentes en la península tienen el deber de conocerla y el derecho a usarla.", "Solo los españoles mayores de edad tienen el deber de conocerla y el derecho a usarla."]
}, {
"question" : "¿Qué dice la Constitución Española sobre las demás lenguas españolas?",
"rights" : ["Las demás lenguas españolas serán también oficiales en las respectivas Comunidades Autónomas de acuerdo con sus Estatutos."],
"wrongs" : ["Las demás lenguas españolas no tienen ningún reconocimiento oficial.", "Las demás lenguas españolas son oficiales en todo el territorio nacional.", "Las demás lenguas españolas son oficiales solo en las regiones donde se hablan mayoritariamente."]
}, {
"question" : "¿Qué dice la Constitución Española sobre el respeto a las lenguas?",
"rights" : ["Los poderes públicos tienen el deber de respetar y proteger las lenguas españolas."],
"wrongs" : ["Los poderes públicos no tienen ningún deber respecto a las lenguas españolas.", "Los poderes públicos tienen el deber de promover solo el castellano.", "Los poderes públicos tienen el deber de promover solo las lenguas cooficiales."]
}, {
"question" : "¿Qué dice la Constitución Española sobre la riqueza de las distintas modalidades lingüísticas de España?",
"rights" : ["La riqueza de las distintas modalidades lingüísticas de España es un patrimonio cultural que será objeto de especial respeto y protección."],
"wrongs" : ["La riqueza de las distintas modalidades lingüísticas de España no tiene ningún reconocimiento oficial.", "La riqueza de las distintas modalidades lingüísticas de España es un patrimonio cultural que será objeto de especial promoción y difusión.", "La riqueza de las distintas modalidades lingüísticas de España es un patrimonio cultural que será objeto de especial regulación y control."]
}, {
"question" : "¿Cómo está formada la bandera de España?",
"rights" : ["Por tres franjas horizontales: roja, amarilla y roja, siendo la amarilla de doble anchura que cada una de las rojas."],
"wrongs" : ["Por tres franjas verticales: roja, amarilla y roja, siendo la amarilla de doble anchura que cada una de las rojas.", "Por dos franjas horizontales: roja y amarilla, siendo la amarilla de doble anchura que la roja.", "Por dos franjas verticales: roja y amarilla, siendo la amarilla de doble anchura que la roja."]
}, {
"question" : "¿Se reconocen las banderas y enseñas de las Comunidades Autónomas?",
"rights" : ["Sí, junto a la bandera de España."],
"wrongs" : ["No, solo se reconoce la bandera de España.", "Sí, pero solo en las Comunidades Autónomas.", "No, solo se reconocen las banderas de las provincias."]
}, {
"question" : "¿Cuál es la Capital de España?",
"rights" : ["La villa de Madrid."],
"wrongs" : ["Madrid.", "La Comunidad de Madrid.", "La Ciudad de Madrid."]
}, {
"question" : "¿Qué expresan los partidos políticos?",
"rights" : ["La pluralidad de la sociedad española."],
"wrongs" : ["La unidad de la sociedad española.", "La homogeneidad de la sociedad española.", "La conformidad de la sociedad española."]
}, {
"question" : "¿Qué son los partidos políticos?",
"rights" : ["Instrumentos fundamentales para la participación política."],
"wrongs" : ["Organizaciones sociales sin relevancia política.", "Grupos de interés económico.", "Asociaciones culturales."]
}, {
"question" : "¿[[rand,Qué papel tienen|En qué concurren]] los partidos políticos en la sociedad española?",
"rights" : ["Contribuyen a la formación y manifestación de la voluntad popular."],
"wrongs" : ["Controlan la voluntad popular.", "Manipulan la voluntad popular.", "Ignoran la voluntad popular."]
}, {
"question" : "¿Cómo es la creación y el ejercicio de la actividad de los partidos políticos?",
"rights" : ["Libre dentro del respeto a la Constitución y a la ley."],
"wrongs" : ["Controlada por el gobierno.", "Regulada por las instituciones del estado.", "Limitada por los partidos mayoritarios."]
}, {
"question" : "¿Cómo es la estructura interna de los partidos políticos?",
"rights" : ["Democrática."],
"wrongs" : ["Autoritaria.", "Centralizada.", "Oligárquica."]
}, {
"question" : "¿A qué contribuyen [[mix,y,los sindicatos|las asociaciones empresariales]]?",
"rights" : ["A la defensa y promoción de los intereses [[mix,y,económicos|sociales]] que les son propios."],
"wrongs" : ["A la defensa y promoción de los intereses políticos que les son propios.", "A la defensa y promoción de los intereses culturales que les son propios.", "A la defensa y promoción de los intereses religiosos que les son propios."]
}, {
"question" : "¿Qué defienden los sindicatos de trabajadores?",
"rights" : ["Los intereses [[mix,y,económicos|sociales]] de los trabajadores."],
"wrongs" : ["Los intereses [[mix,y,económicos|sociales]] de los empresarios.", "Los intereses políticos de los trabajadores.", "Los intereses culturales de los trabajadores."]
}, {
"question" : "¿Qué defienden las asociaciones empresariales?",
"rights" : ["Los intereses [[mix,y,económicos|sociales]] de los empresarios."],
"wrongs" : ["Los intereses [[mix,y,económicos|sociales]] de los trabajadores.", "Los intereses políticos de los empresarios.", "Los intereses culturales de los empresarios."]
}, {
"question" : "¿Cómo [[rand,es la estructura interna de|han de ser]] [[mix,y,los sindicatos|las asociaciones empresariales]]?",
"rights" : ["Democráticos."],
"wrongs" : ["Autoritarios.", "Centralizados.", "Oligárquicos."]
}, {
"question" : "¿Cómo es la creación y el ejercicio de la actividad de [[mix,y,los sindicatos|las asociaciones empresariales]]?",
"rights" : ["Libre dentro del respeto a la Constitución y a la ley."],
"wrongs" : ["Controlada por el gobierno.", "Regulada por las instituciones del estado.", "Limitada por los partidos mayoritarios."]
}, {
"question" : "¿Por qué están constituídas las Fuerzas Armadas?",
"rights" : ["Por [[mix,y,el Ejército de Tierra|la Armada|el Ejército del Aire]]."],
"wrongs" : ["Por [[mix,y,el Ejército de Tierra|la Armada]].", "Por [[mix,y,el Ejército del Aire|la Armada]].", "Por [[mix,y,el Ejército de Tierra|el Ejército del Aire]]."]
}, {
"question" : "¿Cuál es la misión de las Fuerzas Armadas?",
"rights" : ["[[Mix,y,garantizar la soberanía e independencia de España|defender su integridad territorial|defender el ordenamiento constitucional]]."],
"wrongs" : ["[[Mix,y,garantizar la soberanía e independencia de España|defender su integridad territorial]].", "[[Mix,y,garantizar la soberanía e independencia de España|defender el ordenamiento constitucional]].", "[[Mix,y,defender su integridad territorial|defender el ordenamiento constitucional]]."]
}, {
"question" : "¿Quién se encarga de [[rand,garantizar la soberanía e independencia de España|defender su integridad territorial|defender el ordenamiento constitucional]]?",
"rights" : ["Las Fuerzas Armadas.", "[[Mix,y,el Ejército de Tierra|la Armada|el Ejército del Aire]]."],
"wrongs" : ["El gobierno.", "El parlamento.", "El presidente del gobierno."]
}, {
"question" : "¿A quién están sometidas las Fuerzas Armadas?",
"rights" : ["Al poder civil."],
"wrongs" : ["Al poder militar.", "Al poder judicial.", "Al poder legislativo."]
}, {
"question" : "¿Quién regula la organización militar conforme a los principios de la Constitución?",
"rights" : ["La ley orgánica."],
"wrongs" : ["El gobierno.", "El parlamento.", "El presidente del gobierno.", "La ley ordinaria.", "El rey o la reina.", "El poder judicial.", "El poder legislativo."]
}, {
"question" : "¿A qué están sujetos [[mix,y,los ciudadanos|los poderes públicos]]?",
"rights" : ["A la Constitución y al resto del ordenamiento jurídico."],
"wrongs" : ["A la voluntad del pueblo.", "A la autoridad del gobierno.", "A las decisiones del parlamento."]
}, {
"question" : "¿Qué promueven los Poderes Públicos?",
"rights" : ["Que las condiciones para que la libertad y la igualdad del individuo y de los grupos en que se integra sean reales y efectivas."],
"wrongs" : ["Que las condiciones para que la libertad y la igualdad del individuo y de los grupos en que se integra sean formales y nominales.", "Que las condiciones para que la libertad y la igualdad del individuo y de los grupos en que se integra sean limitadas y controladas.", "Que las condiciones para que la libertad y la igualdad del individuo y de los grupos en que se integra sean restringidas y supervisadas."]
}, {
"question" : "¿Qué facilitan los Poderes Públicos?",
"rights" : ["La participación de todos los ciudadanos en la vida política, económica, cultural y social."],
"wrongs" : ["La participación de todos los ciudadanos en la vida política únicamente.", "La participación de todos los ciudadanos en la vida económica únicamente.", "La participación de todos los ciudadanos en la vida cultural únicamente."]
}, {
"question" : "¿Qué remueven los Poderes Públicos?",
"rights" : ["Los obstáculos que impidan o dificulten la plenitud de la libertad y la igualdad de los ciudadanos."],
"wrongs" : ["Los obstáculos que impidan o dificulten la libertad y la igualdad de los ciudadanos únicamente.", "Los obstáculos que impidan o dificulten la libertad y la igualdad de los ciudadanos en la vida política únicamente.", "Los obstáculos que impidan o dificulten la libertad y la igualdad de los ciudadanos en la vida económica únicamente."]
}, {
"question" : "¿Qué principios garantiza la Constitución Española?",
"rights" : ["[[Mix,y,la legalidad|la jerarquía normativa|la publicidad de las normas|la irretroactividad de las disposiciones sancionadoras no favorables o restrictivas de derechos individuales|la seguridad jurídica|la responsabilidad|la interdicción de la arbitrariedad de los poderes públicos]]."],
"wrongs" : [
"[[Mix,y,la legalidad|la jerarquía normativa|la publicidad de las normas|la irretroactividad de las disposiciones sancionadoras favorables o restrictivas de derechos individuales|la seguridad jurídica|la responsabilidad|la interdicción de la arbitrariedad de los poderes públicos]].",
"[[Mix,y,la legalidad|la jerarquía normativa|la publicidad de las normas|la irretroactividad de las disposiciones sancionadoras no favorables o restrictivas de derechos individuales|la seguridad jurídica|la responsabilidad|la arbitrariedad de los poderes públicos]].",
"[[Mix,y,la legalidad|la jerarquía normativa|la publicidad de las normas|la irretroactividad de las disposiciones sancionadoras no favorables o restrictivas de derechos individuales|la seguridad jurídica|la irresponsabilidad|la interdicción de la arbitrariedad de los poderes públicos]]."
]
}]
}]

View File

@ -0,0 +1,123 @@
[{
"origin" : "Paco Barbié",
"title" : "Constitución - Articulado del Título Preliminar",
"source" : "https://www.youtube.com/watch?v=saHVlJohBTU",
"queries" : [{
"question" : "¿Qué artículo de la Constitución Española regula la soberanía nacional?",
"rights" : ["El artículo 1."],
"wrongs" : ["El artículo [[range,2-9]]."]
}, {
"question" : "¿Qué artículo de la Constitución Española regula la forma política del Estado?",
"rights" : ["El artículo 1."],
"wrongs" : ["El artículo [[range,2-9]]."]
}, {
"question" : "¿Qué regular el artículo 1 de la Constitución Española?",
"rights" : ["[[Mix,y,la soberanía nacional|la forma política del Estado]]."],
"wrongs" : ["La unidad de España y las lenguas españolas.", "La bandera de España y la capital de España.", "Los partidos políticos y los sindicatos."]
}, {
"question" : "¿Qué artículo de la Constitución Española regula la unidad de España?",
"rights" : ["El artículo 2."],
"wrongs" : ["El artículo [[range,1|3-9]]."]
}, {
"question" : "¿Qué regula el artículo 2 de la Constitución Española?",
"rights" : ["La unidad de España."],
"wrongs" : ["La soberanía nacional y la forma política del Estado.", "Las lenguas españolas y la bandera de España.", "La capital de España y los partidos políticos."]
}, {
"question" : "¿En qué artículo de la Constitución Española se regulan las lenguas españolas?",
"rights" : ["En el artículo 3."],
"wrongs" : ["En el artículo [[range,1-2|4-9]]."]
}, {
"question" : "¿Qué regula el artículo 3 de la Constitución Española?",
"rights" : ["Las lenguas españolas."],
"wrongs" : ["La unidad de España y la soberanía nacional.", "La forma política del Estado y la bandera de España.", "La capital de España y los partidos políticos."]
}, {
"question" : "¿Qué ley regula la bandera de España y las demás banderas y enseñas?",
"rights" : ["La Ley 39/1981, de 28 de octubre, de la bandera de España y del escudo de España y otras banderas y enseñas."],
"wrongs" : ["La Ley 1/1978, de 6 de enero, de la Constitución Española.", "La Ley 2/1981, de 28 de octubre, de la bandera de España y del escudo de España y otras banderas y enseñas.", "La Ley 39/1978, de 6 de enero, de la Constitución Española."]
}, {
"question" : "¿Qué ley regular la bandera de España y las demás banderas y enseñas?",
"rights" : ["La Ley 39/1981, de 28 de octubre."],
"wrongs" : ["La Ley 1/1978, de 6 de enero.", "La Ley 2/1981, de 28 de octubre.", "La Ley 39/1978, de 6 de enero."]
}, {
"question" : "¿En qué artículo de la Constitución Española se establece la bandera de España?",
"rights" : ["En el artículo 4."],
"wrongs" : ["En el artículo [[range,1-3|5-9]]."]
}, {
"question" : "¿Qué establece el artículo 4 de la Constitución Española?",
"rights" : ["La bandera de España y las demás banderas y enseñas."],
"wrongs" : ["La unidad de España y las lenguas españolas.", "La soberanía nacional y la forma política del Estado.", "La capital de España y los partidos políticos."]
}, {
"question" : "¿En qué artículo de la Constitución Española se establece la capital de España?",
"rights" : ["En el artículo 5."],
"wrongs" : ["En el artículo [[range,1-4|6-9]]."]
}, {
"question" : "¿Qué establece el artículo 5 de la Constitución Española?",
"rights" : ["La capital de España."],
"wrongs" : ["La unidad de España y las lenguas españolas.", "La soberanía nacional y la forma política del Estado.", "La bandera de España y los partidos políticos."]
}, {
"question" : "¿Qué artículo de la Constitución Española regula los partidos políticos?",
"rights" : ["El artículo 6."],
"wrongs" : ["El artículo [[range,1-5|7-9]]."]
}, {
"question" : "¿Qué regula el artículo 6 de la Constitución Española?",
"rights" : ["Los partidos políticos."],
"wrongs" : ["La unidad de España y las lenguas españolas.", "La soberanía nacional y la forma política del Estado.", "La bandera de España y la capital de España."]
}, {
"question" : "¿Qué artículo de la Constitución Española regula [mix,y,los sindicatos|las asociaciones empresariales]]?",
"rights" : ["El artículo 7."],
"wrongs" : ["El artículo [[range,1-6|8-9]]."]
}, {
"question" : "¿Qué regular el artículo 7 de la Constitución Española?",
"rights" : ["[[Mix,y,los sindicatos|las asociaciones empresariales]]."],
"wrongs" : ["La unidad de España y las lenguas españolas.", "La soberanía nacional y la forma política del Estado.", "La bandera de España y la capital de España."]
}, {
"question" : "¿Qué artículo de la Constitucioón Española se refiere a las Fuerzas Armadas?",
"rights" : ["El artículo 8."],
"wrongs" : ["El artículo [[range,1-7|9]]."]
}, {
"question" : "¿Qué regula el artículo 8 de la Constitución Española?",
"rights" : ["Las Fuerzas Armadas."],
"wrongs" : ["La unidad de España y las lenguas españolas.", "La soberanía nacional y la forma política del Estado.", "La bandera de España y la capital de España."]
}, {
"question" : "¿Qué Ley Orgánica regula las Fuerzas Armadas?",
"rights" : ["La Ley Orgánica 5/2005, de 17 de noviembre, de la Defensa Nacional."],
"wrongs" : ["La Ley Orgánica 1/2005, de 17 de noviembre, de la Defensa Nacional.", "La Ley Orgánica 6/2005, de 17 de noviembre, de la Defensa Nacional.", "La Ley Orgánica 5/2006, de 17 de noviembre, de la Defensa Nacional."]
}, {
"question" : "¿Qué regular la Ley Orgánica 5/2005, de 17 de noviembre?",
"rights" : ["Las Fuerzas Armadas.", "[[Mix,y,el Ejército de Tierra|la Armada|el Ejército del Aire]]."],
"wrongs" : ["La unidad de España y las lenguas españolas.", "La soberanía nacional y la forma política del Estado.", "La bandera de España y la capital de España."]
}, {
"question" : "¿En qué artículo se habla sobre los principios que garantiza la Constitución Española?",
"rights" : ["En el artículo 9."],
"wrongs" : ["En el artículo [[range,1-8]]."]
}, {
"question" : "¿Qué principios garantiza la Constitución Española según el artículo 9?",
"rights" : ["[[Mix,y,la legalidad|la jerarquía normativa|la publicidad de las normas|la irretroactividad de las disposiciones sancionadoras no favorables o restrictivas de derechos individuales|la seguridad jurídica|la responsabilidad|la interdicción de la arbitrariedad de los poderes públicos.]]"],
"wrongs" : [
"[[Mix,y,la legalidad|la jerarquía normativa|la publicidad de las normas|la irretroactividad de las disposiciones sancionadoras favorables o restrictivas de derechos individuales|la seguridad jurídica|la responsabilidad|la arbitrariedad de los poderes públicos.]]",
"[[Mix,y,la legalidad|la jerarquía normativa|la publicidad de las normas|la irretroactividad de las disposiciones sancionadoras no favorables o restrictivas de derechos individuales|la seguridad jurídica|la irresponsabilidad|la interdicción de la arbitrariedad de los poderes públicos.]]",
"[[Mix,y,la ilegalidad|la jerarquía normativa|la publicidad de las normas|la irretroactividad de las disposiciones sancionadoras no favorables o restrictivas de derechos individuales|la seguridad jurídica|la responsabilidad|la interdicción de la arbitrariedad de los poderes públicos.]]",
"[[Mix,y,la legalidad|la jerarquía normativa|la publicidad de las normas|la irretroactividad de las disposiciones sancionadoras no favorables o restrictivas de derechos individuales|la inseguridad jurídica|la responsabilidad|la interdicción de la arbitrariedad de los poderes públicos.]]"
]
}, {
"question" : "¿A quiénes sujetan el artículo 9 de la Constitución Española?",
"rights" : ["[[Mix,y,a los poderes públicos|a los ciudadanos]]."],
"wrongs" : ["A los poderes públicos.", "A los ciudadanos.", "A ninguno de los anteriores."]
}, {
"question" : "¿Qué determina el Artículo 9 con respecto a los Poderes Públicos?",
"rights" : ["Que deben actuar conforme a la Constitución y al resto del ordenamiento jurídico."],
"wrongs" : ["Que tienen libertad total para actuar sin restricciones.", "Que solo deben rendir cuentas ante el Rey.", "Que su actuación no está sujeta a control judicial."]
}, {
"question" : "¿En qué artículo se establece el principio constitucional de [[rand,legalidad|jerarquía normativa|publicidad de las normas|irretroactividad de las disposiciones sancionadoras no favorables o restrictivas de derechos individuales|seguridad jurídica|responsabilidad|interdicción de la arbitrariedad de los poderes públicos]] en la Constitución Española?",
"rights" : ["En el artículo 9."],
"wrongs" : ["En el artículo [[range,1-8]]."]
}, {
"question" : "¿En qué artículo se encuentra regulado el principio de publicidad?",
"rights" : ["En el artículo 9.3."],
"wrongs" : ["En el artículo [[range,1-170]].[[range,1-3]]."]
}, {
"question" : "¿En qué artículo se encuentra regulado el principio de mérito y capacidad?",
"rights" : ["En el artículo 103.3."],
"wrongs" : ["En el artículo [[range,1-170]].[[range,1-3]]."]
}]
}]

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,244 @@
[{
"origin" : "Paco Barbié",
"title" : "Constitución - Articulado del Título I - Derechos y Deberes Fundamentales",
"group" : "paco_constitucion_i_articulado",
"sources" : ["https://www.youtube.com/watch?v=saHVlJohBTU"],
"queries" : [{
"question" : "¿En qué artículo de la Constitución Española se regula que los tratados y acuerdos internacionales formarán parte del ordenamiento jurídico interno si éstos están publicados oficialmente en España?",
"rights" : ["En el artículo 96."],
"wrongs" : ["En el artículo [[range,1-95|97-169]]."]
}, {
"question" : "¿Qué artículo de la Constitución Española nos habla de la igualdad ante la ley?",
"rights" : ["El artículo 14."],
"wrongs" : ["El artículo [[range,1-13|15-169]]."]
}, {
"question" : "¿Qué artículo de la Constitución Española nos dice que los Derechos y Libertades reconocidos en el Título [[rand,I|de los Derechos y Deberes Fundamentales]] de la Constitución son vinculantes a todos los poderes públicos?",
"rights" : ["El artículo 53."],
"wrongs" : ["El artículo [[range,1-52|54-169]]."]
}, {
"question" : "¿En qué artículo de la Constitución Española se regulan las Leyes Orgánicas en la Constitución Española?",
"rights" : ["En el artículo 81."],
"wrongs" : ["En el artículo [[range,1-80|82-169]]."]
}, {
"question" : "¿Qué artículo de la Constitución Española de la constitución regula las reformas esenciales de la Constitución?",
"rights" : ["El artículo 168."],
"wrongs" : ["El artículo [[range,1-167|169]]."]
}, {
"question" : [
"¿Qué artículo de la Constitución se determina el derecho [[mix,y,a la intimidad personal y familiar|al honor|a la propia imagen]]?",
"¿En qué artículo de la Constitución Española se reconoce al domicilio como inviolable?"
],
"rights" : ["El artículo 18."],
"wrongs" : ["El artículo [[range,1-17|19-169]]."]
}, {
"question" : "¿Qué artículo de la Constitución Española de la Constitución regular el derecho de reunión?",
"rights" : ["El artículo 21."],
"wrongs" : ["El artículo [[range,1-20|22-169]]."]
}, {
"question" : "¿Qué artículo de la Constitución Española de la Constutución regula el derecho de asociación?",
"rights" : ["El artículo 22."],
"wrongs" : ["El artículo [[range,1-21|23-169]]."]
}, {
"question" : "¿En qué artículos de la Constitución Española se habla sobre el las asociaciones?",
"rights" : ["En los artículos 7 y 22."],
"wrongs" : [
"En el artículo [[range,1-6|8-21|23-169]].",
"En los artículos [[serie,1-6|8-21|23-100]] y [[serie,8-21|23-169]].",
"En los artículos [[serie,1-6|8-21|23-100]], [[serie,8-21|23-160]] y [[serie,23-169]].",
"En los artículos [[serie,1-6|8-21|23-100]], [[serie,8-21|23-160]], [[serie,8-21|23-165]] y [[serie,23-169]]."
]
}, {
"question" : "¿En qué artículo de la Constitución Española se habla del derecho de participación?",
"rights" : ["En el artículo 23."],
"wrongs" : ["En el artículo [[range,1-22|24-169]]."]
}, {
"question" : "¿Qué artículo de la Constitución Española [[rand,genera más recursos de amparo|regula la Protección Judicial de los Derechos]]?",
"rights" : ["El artículo 24."],
"wrongs" : ["El artículo [[range,1-23|25-169]]."]
}, {
"question" : "¿Qué artículos de la Constitución Española hablan de la retroactividad de la Ley?",
"__COMMENTS__" : "Los artículos 9.3 y 25.1.",
"rights" : ["Los artículos 9 y 25."],
"wrongs" : [
"El artículo [[range,1-9|10-24|26-169]].",
"Los artículos [[serie,1-9|10-24|26-100]] y [[serie,26-169]].",
"Los artículos [[serie,1-9|10-24|26-100]], [[serie,10-24|26-160]] y [[serie,26-169]].",
"Los artículos [[serie,1-9|10-24|26-100]], [[serie,10-24|26-160]], [[serie,10-24|26-165]] y [[serie,26-169]]."
]
}, {
"question" : "¿Qué artículo habla sobre [[select,1-2,y,la educación|la libertad en la enseñanza]]?",
"rights" : ["El artículo 27."],
"wrongs" : ["El artículo [[range,1-26|28-169]]."]
}, {
"question" : "¿Qué artículos de la Constitución Española habla de los sindicatos?",
"rights" : ["Los artículos 7 y 28."],
"wrongs" : [
"El artículo [[range,1-6|8-27|29-169]].",
"Los artículos [[serie,1-6|8-27|29-100]] y [[serie,29-169]].",
"Los artículos [[serie,1-6|8-27|29-100]], [[serie,8-27|29-160]] y [[serie,29-169]].",
"Los artículos [[serie,1-6|8-27|29-100]], [[serie,8-27|29-160]], [[serie,8-27|29-165]] y [[serie,29-169]]."
]
}, {
"question" : "¿Qué artículo de la Constitución Española habla del derecho [[rand,a sindicarse|a la huelga]]?",
"rights" : ["El artículo 28."],
"wrongs" : [
"El artículo [[range,1-27|29-169]]."
]
}, {
"question" : "¿Qué artículo de la Constitución Española regula el derecho de Petición?",
"rights" : ["El artículo 29."],
"wrongs" : ["El artículo [[range,1-28|30-169]]."]
}, {
"question" : "¿Qué artículo de la Constitución Española regula las peticiones a las Cámaras?",
"rights" : ["El artículo 77."],
"wrongs" : ["El artículo [[range,1-76|78-169]]."]
}, {
"question" : "¿Qué artículo de la Constitución Española regula [[mix,y,el servicio militar|la objeción de conciencia]]?",
"rights" : ["El artículo 30."],
"wrongs" : ["El artículo [[range,1-29|31-169]]."]
}, {
"question" : "¿Qué artículo de la Constitución Española nos habla sobre el sistema tributario?",
"rights" : ["El artículo 31."],
"wrongs" : ["El artículo [[range,1-30|32-169]]."]
}, {
"question" : "¿Qué artículo de la Constitución Española regula el derecho al matrimonio?",
"rights" : ["El artículo 32."],
"wrongs" : ["El artículo [[range,1-31|33-169]]."]
}, {
"question" : "¿Qué artículo de la Constitución Española regula el derecho a [[mix,y,la propiedad privada|a la herencia]]?",
"rights" : ["El artículo 33."],
"wrongs" : ["El artículo [[range,1-32|34-169]]."]
}, {
"question" : "¿Qué artículo de la Constitución Española regula el derecho de fundación?",
"rights" : ["El artículo 34."],
"wrongs" : ["El artículo [[range,1-33|35-169]]."]
}, {
"question" : "¿Qué artículo de la Constitución Española regula el derecho y deber de trabajar?",
"rights" : ["El artículo 35."],
"wrongs" : ["El artículo [[range,1-34|36-169]]."]
}, {
"question" : "¿Qué artículo de la Constitución Española regula el régimen jurídico de los Colegios Profesionales?",
"rights" : ["El artículo 36."],
"wrongs" : ["El artículo [[range,1-35|37-169]]."]
}, {
"question" : "¿Qué artículo de la Constitución Española regula los [[mix,y,convenios|conflictos]] laborales?",
"rights" : ["El artículo 37."],
"wrongs" : ["El artículo [[range,1-36|38-169]]."]
}, {
"question" : "¿Qué artículo de la Constitución Española regula la [[mix,y,libertad de empresa|economía del mercado]]?",
"rights" : ["El artículo 38."],
"wrongs" : ["El artículo [[range,1-37|39-169]]."]
}]
}, {
"origin" : "Paco Barbié",
"title" : "Constitución - Articulado del Título I - Derechos y Deberes Fundamentales II",
"group" : "paco_constitucion_i_articulado",
"sources" : ["https://www.youtube.com/watch?v=saHVlJohBTU"],
"queries" : [{
"question" : "¿Qué nos dice el artículo 96 de la Constitución Española?",
"rights" : ["Los tratados y acuerdos internacionales formarán parte del ordenamiento jurídico interno si éstos están publicados oficialmente en España."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué nos dice el artículo 14 de la Constitución Española?",
"rights" : [
"Los Españoles somos iguales ante la ley.",
"Los Españoles no tenemos discriminación por razón de [[mix,ni,nacimiento|sexo|raza|religión|opinión]] ni ninguna otra condición o circunstancia [[mix,o,personal|social]].",
"Los Españoles no tenemos discriminación por ninguna condición o circunstancia [[mix,o,personal|social]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué nos dice el artículo 53 de la Constitución Española?",
"rights" : [
"Los Derechos y Libertades reconocidos en el Título [[rand,I|de los Derechos y Deberes Fundamentales]] de la Constitución son vinculantes a todos los poderes públicos.",
"Sólo por ley podrá regularse el ejercicio de los Derechos y Libertades reconocidos en el Título [[rand,I|de los Derechos y Deberes Fundamentales]] de la Constitución, respetando su contenido esencial[[rand,|, de acuerdo con lo previsto en el artículo 161.1a|, de acuerdo con lo previsto por el Recursos de Inconstitucionalidad]]."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿De qué trata el artículo 81 de la Constitución Española?",
"rights" : ["Determinan que son las Leyes Orgánicas"],
"brothers_are_wrongs" : true
}, {
"question" : "¿De qué trata el artículo 168 de la Constitución Española?",
"rights" : ["Regula las reformas esenciales de la Constitución."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué derechos salen recogidos en el artículo 18 de la Constitución Española?",
"rights" : ["Derecho [[mix,y,a la intimidad personal y familiar|al honor|a la propia imagen]]."],
"wrongs" : [
"Derecho [[mix,y,a la intimidad personal y familiar|a la propia imagen|a la libertad de expresión|a la libertad religiosa|a la libertad de prensa]].",
"Derecho [[mix,y,a la intimidad personal y familiar|al honor|a la libertad de expresión|a la libertad religiosa|a la libertad de prensa]]."
]
}, {
"question" : "¿Qué regula el artículo 21 de la Constitución Española?",
"rights" : ["El derecho de reunión."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula el artículo 22 de la Constitución Española?",
"rights" : ["El derecho de asociación."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula el artículo 23 de la Constitución Española?",
"rights" : ["El derecho de participación."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué es propio del artículo 24 de la Constitución Española?",
"rights" : [
"Es el artículo que genera más recursos de amparo.",
"Genera muchos recursos de amparo.",
"La regulación de la Protección Judicial de los Derechos."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿De qué trata el artículo 27 de la Constitución Española?",
"rights" : ["Habla sobre [[select,1-2,y,la educación|la libertad en la enseñanza]]."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula el artículo 28 de la Constitución Española?",
"rights" : ["El derecho [[rand,a sindicarse|a la huelga]]."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula el artículo 29 de la Constitución Española?",
"rights" : ["El derecho de Petición."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula el artículo 77 de la Constitución Española?",
"rights" : ["Las peticiones a las Cámaras."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula el artículo 30 de la Constitución Española?",
"rights" : ["El derecho [[mix,y,el servicio militar|la objeción de conciencia]]."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula el artículo 31 de la Constitución Española?",
"rights" : ["El sistema tributario."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula el artículo 32 de la Constitución Española?",
"rights" : ["El derecho al matrimonio."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula el artículo 33 de la Constitución Española?",
"rights" : ["El derecho a [[mix,y,la propiedad privada|a la herencia]]."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula el artículo 34 de la Constitución Española?",
"rights" : ["El derecho de fundación."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula el artículo 35 de la Constitución Española?",
"rights" : ["El derecho y deber de trabajar."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula el artículo 36 de la Constitución Española?",
"rights" : ["El régimen jurídico de los Colegios Profesionales."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula el artículo 37 de la Constitución Española?",
"rights" : ["Los [[mix,y,convenios|conflictos]] laborales."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula el artículo 38 de la Constitución Española?",
"rights" : ["La [[mix,y,libertad de empresa|economía del mercado]]."],
"brothers_are_wrongs" : true
}]
}]

View File

@ -0,0 +1,148 @@
[{
"origin" : "Paco Barbié",
"title" : "Constitución - Título I - Derechos y Deberes Fundamentales - Leyes",
"group" : "paco_constitucion_i_leyes",
"source" : "https://www.youtube.com/watch?v=saHVlJohBTU",
"queries" : [{
"question" : "Por generalización sobre la igualdad de todos los Españoles, según el artículo 14 de la Constitución Española. ¿Qué [[rand,normativa|ley]] ayuda a [[rand,determinar|darle valor a]] esta igualdad?",
"rights" : [
"La Ley Orgánica 3/2007[[rand,|, de 22 de Marzo]][[rand,|, para la igualdad efectiva de mujeres y hombres]].",
"La Ley 15/2022[[rand,|, de 12 de Julio]][[rand,|, integral para la igualdad de trato y la no discriminación]].",
"La Ley Zorolo[[rand,|, de 12 de Julio]][[rand,| del 2022]][[rand,|, integral para la igualdad de trato y la no discriminación]].",
"La Ley Orgánica 6/1985[[rand,|, de 1 de Julio]][[rand,|, del Poder Judicial]].",
"La Ley 50/1981[[rand,|, de 30 de Diciembre]][[rand,|, de medidas fiscales, administrativas y del orden social]].",
"La Ley 29/1998[[rand,|, de 13 de Julio]][[rand,|, reguladora de la Jurisdicción Social]].",
"El Real Decreto Legislativo 2/2015,[[rand,|, de 23 de Octubre]][[rand,|, por el que se aprueba el texto refundido de la Ley del Estatuto de los Trabajadores]].",
"La Ley 7/2007[[rand,|, de 12 de Abril]][[rand,|, del Estatuto Básico del Empleado Público]].",
"La Ley 2/2015[[rand,|, de 29 de Abril]][[rand,|, del Empleo Público de Galicia]]."
],
"wrongs" : [
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1-90]]/[[range,1960-2025]].",
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1-90]]/[[range,1960-2025]], de [[range,1-30]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]].",
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1-90]]/[[range,1960-2025]], [[rand,para la igualdad de género|contra la violencia de género|contra el machismo en las instituciones públicas|para la igualdad real y efectiva con los extranjeros|que regula la discriminación positiva entre los Españoles|para regular la igualdad y derechos de los trabajadores]].",
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1-90]]/[[range,1960-2025]], de [[range,1-30]] de [[rand,Enero|Febrera entre los Españoles|para regular la igualdad y derechos de los trabajadores]]."
]
}, {
"question" : "¿Qué Ley regula el procedimiento del Habeas Corpus en España?",
"rights" : ["La Ley Orgánica 6/1984[[rand,|, de 24 de Mayo]]."],
"wrongs" : [
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1-5|7-90]]/[[range,1960-2025]], de [[range,1-30]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]].",
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1-90]]/[[range,1960-1983|1985-2025]], de [[range,1-30]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]]."
]
}, {
"question" : "¿Qué Ley regula el tiempo máximo de duración de la prisión provisional?",
"rights" : ["La Ley Orgánica 13/2003[[rand,|, de 24 de Octubre]]."],
"wrongs" : [
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1-12|15-90]]/[[range,1960-2025]], de [[range,1-30]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]].",
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1-90]]/[[range,1960-2002|2004-2025]], de [[range,1-30]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]]."
]
}, {
"question" : "¿Qué Ley regula la Libertad de Expresión en España?",
"rights" : ["La Ley Orgánica 2/1997[[rand,|, de 19 de junio]]."],
"wrongs" : [
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1-90]]/[[range,1960-1997|1999-2025]], de [[range,1-30]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]].",
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1|3-90]]/[[range,1960-2025]], de [[range,1-30]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]]."
]
}, {
"question" : "¿Qué ley establece que quedan prohibidos los Tribunales de Honor?",
"rights" : ["La Ley Orgánica 5/2005[[rand,|, de 17 de Noviembre]][[rand,|, de la Defensa Nacional]]."],
"wrongs" : [
"[[rand,La Ley[1rand,::: Orgánica1]|El Real Decreto[1rand,::: Legislativo1]]] [[range,1-90]]/[[range,1960-2004|2006-2025]], de [[range,1-30]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]][[rand,|, de la Defensa Nacional]].",
"[[rand,La Ley[1rand,::: Orgánica1]|El Real Decreto[1rand,::: Legislativo1]]] [[range,1-5|7-90]]/[[range,1960-2025]], de [[range,1-30]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]][[rand,|, de la Defensa Nacional]]."
]
}, {
"question" : "¿En qué artículos se les reconoce a los funcionarios públicos el derecho a sindicarse?",
"rights" : ["Entre los artículos 31 al 46 del [[rand,TREBEP|EBEP|[1rand,:::Texto Refundido 1]Estatuto Básico del Empleado Público|Real Decreto Legislativo 5/2015]]."],
"wrongs" : [
"Sólo en el artículo [[range,1-90]] del [[rand,TREBEP|EBEP|[1rand,:::Texto Refundido 1]Estatuto Básico del Empleado Público|Real Decreto Legislativo 5/2015]].",
"En o|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]], [[rand,para la igualdad de género|contra la violencia de género|contra el machismo en las instituciones públicas|para la igualdad real y efectiva con los extranjeros|que regula la discriminación positivel artículo 28 de la Constitución Española.",
"Entre los artículos [[serie,1-30|32-90]] y [[serie,1-30|32-90]] del [[rand,TREBEP|EBEP|[1rand,:::Texto Refundido 1]Estatuto Básico del Empleado Público|Real Decreto Legislativo 5/2015]].",
"Entre los artículos [[serie,1-45|47-90]] y [[serie,1-45|47-90]] del [[rand,TREBEP|EBEP|[1rand,:::Texto Refundido 1]Estatuto Básico del Empleado Público|Real Decreto Legislativo 5/2015]].",
"Los funcionarios entran dentro del grupo de los militares y por tanto, no tienen derecho a sindicarse.",
"Los funcionarios no tienen derecho a sindicarse."
]
}, {
"question" : "¿En qué artículos se les reconoce a los funcionarios públicos el derecho a la huelga?",
"rights" : ["Entre los artículos 15 al 30 del [[rand,TREBEP|EBEP|[1rand,:::Texto Refundido 1]Estatuto Básico del Empleado Público|Real Decreto Legislativo 5/2015]]."],
"wrongs" : [
"Sólo en el artículo [[range,1-90]] del [[rand,TREBEP|EBEP|[1rand,:::Texto Refundido 1]Estatuto Básico del Empleado Público|Real Decreto Legislativo 5/2015]].",
"En el artículo 28 de la Constitución Española.",
"Entre los artículos [[serie,1-14|16-90]] y [[serie,1-14|16-90]] del [[rand,TREBEP|EBEP|[1rand,:::Texto Refundido 1]Estatuto Básico del Empleado Público|Real Decreto Legislativo 5/2015]].",
"Entre los artículos [[serie,1-29|31-90]] y [[serie,1-29|31-90]] del [[rand,TREBEP|EBEP|[1rand,:::Texto Refundido 1]Estatuto Básico del Empleado Público|Real Decreto Legislativo 5/2015]].",
"Los funcionarios entran dentro del grupo de los militares y por tanto, no tienen derecho a sindicarse.",
"Los funcionarios no tienen derecho a sindicarse."
]
}, {
"question" : "¿Qué Ley regula los derechos y deberes de las Fuerzas Armadas?",
"rights" : ["La Ley Orgánica 9/2011[[rand,|, de 27 de Julio]][[rand,|, de Derechos y Deberes de los miembros de las Fuerzas Armadas]]."],
"wrongs" : [
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1-90]]/[[range,1960-2010|2012-2025]], de [[range,1-30]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]][[rand,|, de Derechos y Deberes de los miembros de las Fuerzas Armadas]].",
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1-6|8-90]]/[[range,1960-2025]], de [[range,1-30]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]][[rand,|, de Derechos y Deberes de los miembros de las Fuerzas Armadas]]."
]
}, {
"question" : "¿Qué Ley regula el derecho de Petición en España?",
"rights" : ["La Ley Orgánica 4/2001[[rand,|, de 12 de Noviembre]][[rand,|, reguladora del Derecho de Petición]]."],
"wrongs" : [
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1-90]]/[[range,1960-2000|2002-2025]], de [[range,1-30]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]][[rand,|, reguladora del Derecho de Petición]].",
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1-5|7-90]]/[[range,1960-2025]], de [[range,1-30]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]][[rand,|, reguladora del Derecho de Petición]]."
]
}, {
"question" : "¿Cuál es la Ley que regula el Procedimiento Administrativo Común de las Administraciones Públicas?",
"rights" : ["La Ley 39/2015[[rand,|, de 1 de Octubre]][[rand,|, del Procedimiento Administrativo Común de las Administraciones Públicas]]."],
"wrongs" : [
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1-90]]/[[range,1960-2014|2016-2025]], de [[range,1-30]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]][[rand,|, del Procedimiento Administrativo Común de las Administraciones Públicas]].",
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1-38|40-90]]/[[range,1960-2025]], de [[range,1-30]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]][[rand,|, del Procedimiento Administrativo Común de las Administraciones Públicas]]."
]
}, {
"question" : "¿Qué Ley regula los Colegios Profesionales en España?",
"rights" : ["La Ley 2/1974[[rand,|, de 13 de Febrero]][[rand,|, sobre Colegios Profesionales]]."],
"wrongs" : [
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1-90]]/[[range,1960-1973|1975-2025]], de [[range,1-30]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]][[rand,|, sobre Colegios Profesionales]].",
"[[rand,La Ley|La Ley Orgánica|El Real Decreto|El Real Decreto Legislativo]] [[range,1|3-90]]/[[range,1960-2025]], de [[range,1-30]] de [[rand,Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Diciembre]][[rand,|, sobre Colegios Profesionales]]."
]
}]
}, {
"origin" : "Paco Barbié",
"title" : "Constitución - Título I - Derechos y Deberes Fundamentales - Leyes II",
"group" : "paco_constitucion_i_leyes",
"source" : "https://www.youtube.com/watch?v=saHVlJohBTU",
"queries" : [{
"question" : "¿Qué regula la Ley Orgánica 6/1984[[rand,|, de 24 de Mayo]]?",
"rights" : ["El procedimiento del Habeas Corpus."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula la Ley Orgánica 13/2003[[rand,|, de 24 de Octubre]]?",
"rights" : ["La reforma de la Ley de Enjuiciamiento Criminal en materia de prisión provisional."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula la Ley Orgánica 2/1997[[rand,|, de 19 de junio]]?",
"rights" : [
"La Libertad de Expresión en España.",
"La cláusula de conciencia de los profesionales de la información."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula la Ley Orgánica 5/2005[[rand,|, de 17 de Noviembre]]?",
"rights" : [
"Establece que quedan prohibidos los Tribunales de Honor.",
"La Defensa Nacional."
],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula la Ley Orgánica 9/2011[[rand,|, de 27 de Julio]]?",
"rights" : ["Los Derechos y Deberes de los miembros de las Fuerzas Armadas."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula la Ley Orgánica 4/2001[[rand,|, de 12 de Noviembre]]?",
"rights" : ["El Derecho de Petición."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula la Ley 39/2015[[rand,|, de 1 de Octubre]]?",
"rights" : ["El Procedimiento Administrativo Común de las Administraciones Públicas."],
"brothers_are_wrongs" : true
}, {
"question" : "¿Qué regula la Ley 2/1974[[rand,|, de 13 de Febrero]]?",
"rights" : ["Los Colegios Profesionales en España."],
"brothers_are_wrongs" : true
}]
}]

View File

@ -0,0 +1,28 @@
[{
"title" : "Random - Constitución",
"queries" : [{
"question" : "¿En qué año fue aprobada la Constitución Española?",
"rights" : ["1978"],
"wrongs" : ["1975", "1980", "1982", "1976", "1977", "1979", "1981", "1983", "1984", "1985", "1986", "1987", "1988", "1989", "1990", "1991", "1992", "1993", "1994", "1995", "1996", "1997", "1998", "1999", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020"]
}, {
"question" : "¿Cuál es el título del primer capítulo de la Constitución Española?",
"rights" : ["De los derechos y deberes fundamentales"],
"wrongs" : ["De la Corona y la sucesión al trono", "De las Cortes Generales y su funcionamiento", "De la organización territorial del Estado"]
}, {
"question" : "¿Qué artículo establece la soberanía nacional en España?",
"rights" : ["Artículo 1"],
"wrongs" : ["Artículo 2", "Artículo 3", "Artículo 4"]
}, {
"question" : "¿Qué principio fundamental se menciona en el artículo 1 de la Constitución?",
"rights" : ["La soberanía nacional reside en el pueblo español"],
"wrongs" : ["La soberanía reside en el rey o reina de España", "La soberanía reside en las comunidades autónomas de España"]
}, {
"question" : "¿Qué forma política adopta el Estado español según la Constitución?",
"rights" : ["Monarquía parlamentaria"],
"wrongs" : ["República presidencialista"]
}, {
"question" : "¿Qué artículo establece la igualdad de todos los españoles ante la ley?",
"rights" : ["Artículo 14"],
"wrongs" : ["Artículo 13"]
}]
}]

380
Public/scss/OpoTests.css Normal file
View File

@ -0,0 +1,380 @@
@charset "UTF-8";
.opo-tests {
position: relative;
top: 0em;
left: 0em;
width: 100%;
height: 100%;
overflow: hidden; }
.opo-tests, .opo-tests input, .opo-tests button {
font-family: Arial, Helvetica, sans-serif;
font-size: 1em; }
.opo-tests a[href] {
text-decoration: none; }
.opo-tests a[href], .opo-tests button {
cursor: pointer;
transition-duration: 1s;
transition-property: color; }
.opo-tests a[href]:hover, .opo-tests button:hover {
transition-duration: 0.15s; }
.opo-tests button, .opo-tests input {
border-width: 0.1em;
border-style: solid;
border-radius: 0.3em; }
.opo-tests a[href], .opo-tests button, .opo-tests input {
outline: none; }
.opo-tests button {
transition-property: color,background-color,border-color,box-shadow; }
.opo-tests input {
transition-property: border-color,box-shadow;
transition-duration: 1s; }
.opo-tests input:focus {
transition-duration: 0.15s; }
.opo-tests [data-icon]::before {
margin-right: .4em;
font-family: "FA6FS"; }
.opo-tests [data-visible=false] {
display: none; }
.opo-tests fieldset {
margin: 1em 0em;
border: none; }
.opo-tests legend {
font-weight: 900;
font-size: 1.2em; }
.opo-tests .form fieldset {
width: 100%;
box-sizing: border-box; }
.opo-tests .form .structure {
display: table;
width: 92%;
max-width: 92%;
margin-left: 3%;
table-layout: fixed;
box-sizing: border-box; }
.opo-tests .form .structure > div {
display: table-row; }
.opo-tests .form .structure > div > * {
display: table-cell;
padding: .2em .5em;
vertical-align: top; }
.opo-tests .form .structure > div > span {
max-width: 80%; }
.opo-tests .form .structure > div > label {
width: 20em; }
.opo-tests .form .structure > div > ul {
width: 0em; }
.opo-tests .form [data-i] > label {
text-align: right; }
.opo-tests .form [data-i] > label > span {
display: block; }
.opo-tests .form [data-i] > label > span:first-child {
font-weight: 900;
white-space: nowrap; }
.opo-tests .form [data-i] > label > span:first-child::after {
content: ":"; }
.opo-tests .form [data-i] > label > span + span {
font-size: .85em; }
.opo-tests .form [type=number], .opo-tests .form [type=text] {
width: 100%; }
.opo-tests .buttons, .opo-tests .group {
display: block;
text-align: center; }
.opo-tests .buttons > *, .opo-tests .group > * {
border-radius: 0em; }
.opo-tests .buttons > :first-child, .opo-tests .group > :first-child {
border-top-left-radius: 0.3em;
border-bottom-left-radius: 0.3em; }
.opo-tests .buttons > :last-child, .opo-tests .group > :last-child {
border-top-right-radius: 0.3em;
border-bottom-right-radius: 0.3em; }
.opo-tests[data-gui-mode=light] {
background-color: #EFEFEF; }
.opo-tests[data-gui-mode=light], .opo-tests[data-gui-mode=light] input {
color: #222; }
.opo-tests[data-gui-mode=light] header, .opo-tests[data-gui-mode=light] footer {
box-shadow: 0em 0em 1em #EFEFEF; }
.opo-tests[data-gui-mode=light], .opo-tests[data-gui-mode=light] input, .opo-tests[data-gui-mode=light] button {
color: #222; }
.opo-tests[data-gui-mode=light] a, .opo-tests[data-gui-mode=light] button {
color: #2272D4; }
.opo-tests[data-gui-mode=light] a:hover, .opo-tests[data-gui-mode=light] button:hover {
color: #D47222; }
.opo-tests[data-gui-mode=light] button {
border-color: #2272D4;
background-color: #e5e9ee;
box-shadow: 0em 0em 0.2em inset #2272D4; }
.opo-tests[data-gui-mode=light] button:hover {
border-color: #D47222;
background-color: #eee9e5;
box-shadow: 0em 0em 0.2em inset #D47222; }
.opo-tests[data-gui-mode=light] input {
color: #222;
border-color: #222;
background-color: #dbdbdb;
box-shadow: 0em 0em 0.2em inset #222; }
.opo-tests[data-gui-mode=light] input:focus {
border-color: #2272D4;
box-shadow: 0em 0em 0.2em inset #2272D4; }
.opo-tests[data-gui-mode=light] .graphic [data-status=unanswered] {
background-color: #dadada; }
.opo-tests[data-gui-mode=light] .graphic [data-status=answered] {
background-color: #bcbcbc; }
.opo-tests[data-gui-mode=light] .graphic [data-status=right] {
background-color: #119111; }
.opo-tests[data-gui-mode=light] .graphic [data-status=wrong] {
background-color: #911111; }
.opo-tests[data-gui-mode=light] .graphic [data-status=partially] {
background-color: #919111; }
.opo-tests[data-gui-mode=dark] {
background-color: #222; }
.opo-tests[data-gui-mode=dark], .opo-tests[data-gui-mode=dark] input {
color: #EFEFEF; }
.opo-tests[data-gui-mode=dark] header, .opo-tests[data-gui-mode=dark] footer {
box-shadow: 0em 0em 1em #222; }
.opo-tests[data-gui-mode=dark], .opo-tests[data-gui-mode=dark] input, .opo-tests[data-gui-mode=dark] button {
color: #EFEFEF; }
.opo-tests[data-gui-mode=dark] a, .opo-tests[data-gui-mode=dark] button {
color: #649ce1; }
.opo-tests[data-gui-mode=dark] a:hover, .opo-tests[data-gui-mode=dark] button:hover {
color: #e19c64; }
.opo-tests[data-gui-mode=dark] button {
border-color: #649ce1;
background-color: #25282c;
box-shadow: 0em 0em 0.2em inset #649ce1; }
.opo-tests[data-gui-mode=dark] button:hover {
border-color: #e19c64;
background-color: #2c2825;
box-shadow: 0em 0em 0.2em inset #e19c64; }
.opo-tests[data-gui-mode=dark] input {
color: #EFEFEF;
border-color: #EFEFEF;
background-color: #373737;
box-shadow: 0em 0em 0.2em inset #EFEFEF; }
.opo-tests[data-gui-mode=dark] input:focus {
border-color: #649ce1;
box-shadow: 0em 0em 0.2em inset #649ce1; }
.opo-tests[data-gui-mode=dark] .graphic [data-status=unanswered] {
background-color: #363636; }
.opo-tests[data-gui-mode=dark] .graphic [data-status=answered] {
background-color: #555555; }
.opo-tests[data-gui-mode=dark] .graphic [data-status=right] {
background-color: #78f778; }
.opo-tests[data-gui-mode=dark] .graphic [data-status=wrong] {
background-color: #f77878; }
.opo-tests[data-gui-mode=dark] .graphic [data-status=partially] {
background-color: #f7f778; }
.opo-tests header, .opo-tests main, .opo-tests footer {
position: absolute;
left: 0em;
width: 100%; }
.opo-tests header {
display: flex;
flex-wrap: nowrap;
align-items: flex-end;
top: 0em;
height: 4em; }
.opo-tests header > * {
flex: 0 0 auto; }
.opo-tests main {
top: 4em;
bottom: 2em;
overflow: auto; }
.opo-tests footer {
display: flex;
flex-wrap: nowrap;
align-items: center;
bottom: 0em;
height: 2em; }
.opo-tests footer > * {
flex: 1 1 auto; }
.opo-tests h1 {
font-size: 1em; }
.opo-tests h1 span, .opo-tests h1 img {
vertical-align: middle; }
.opo-tests h1 .image {
display: inline-block;
margin: .2em 1em; }
.opo-tests h1 img {
width: auto;
height: 3.6em; }
.opo-tests h1 [data-status=loading], .opo-tests h1 [data-status=error] {
display: none; }
.opo-tests h1 span + span {
margin-left: .2em;
font-size: 2.4em;
font-weight: 900; }
.opo-tests .header-menu {
flex: 1 1 0;
margin-bottom: .3em; }
.opo-tests .header-menu ul {
list-style-type: none;
margin: 0em;
padding: 0em;
text-align: center; }
.opo-tests .header-menu li {
display: inline-block;
margin: 0em 1em; }
.opo-tests .licenses {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
margin: 0em;
text-align: center; }
.opo-tests .licenses > * {
flex: 0 0 auto;
margin: 0em 1em; }
.opo-tests .cc-by-nc-sa-4 {
display: flex;
align-items: center; }
.opo-tests .cc-by-nc-sa-4 > [data-i18n] {
flex: 1 1 auto; }
.opo-tests .cc-by-nc-sa-4 > .image {
margin-left: .3em;
flex: 0 0 auto; }
.opo-tests .cc-by-nc-sa-4 img {
width: auto;
height: 1.6em; }
.opo-tests .group[data-i18n=search] {
display: flex;
flex-direction: row;
flex-wrap: nowrap; }
.opo-tests .group[data-i18n=search] > :first-child::after {
content: ": "; }
.opo-tests .group[data-i18n=search] > * {
flex: 0 0 auto; }
.opo-tests .group[data-i18n=search] > .input-text {
flex: 1 1 auto; }
.opo-tests .group[data-i18n=search] [for=show_selected] [data-icon=checkbox]::before {
content: "\f070";
font-family: "FA6FS"; }
.opo-tests .group[data-i18n=search] [for=show_selected] [type=checkbox]:checked + [data-icon=checkbox]::before {
content: "\f06e";
font-family: "FA6FS"; }
.opo-tests .group[data-i18n=search] [for=show_selected] span + span {
display: none; }
.opo-tests label > [data-i18n='blocks[]'] > :first-child {
margin-right: .4em; }
.opo-tests label > [data-i18n='blocks[]'] > :first-child::before {
content: "[ "; }
.opo-tests label > [data-i18n='blocks[]'] > :first-child::after {
content: " ] - "; }
.opo-tests label > [data-i18n='blocks[]'] > span {
display: inline-block; }
.opo-tests label > [data-i18n='blocks[]'] > span[title=undefined] {
display: none; }
.opo-tests label > [data-i18n='blocks[]'] > span + :not([title=undefined]) + span::before {
content: "-";
margin: 0em .5em; }
.opo-tests [data-i][data-i18n=blocks] [data-show-selected] {
width: 100%; }
.opo-tests [data-i][data-i18n=blocks] nav {
width: 100%;
max-height: 20em;
overflow: auto; }
.opo-tests [data-i][data-i18n=blocks] ul {
list-style-type: none; }
.opo-tests [data-i][data-i18n=blocks] ul li {
white-space: nowrap;
text-overflow: ellipsis; }
.opo-tests [data-i18n=test] {
font-size: 1.5em; }
.opo-tests [data-i18n=test_text] {
display: none; }
.opo-tests section, .opo-tests .graphic {
position: absolute;
top: 4em;
bottom: 2em; }
.opo-tests section {
left: 0em;
right: 1em;
overflow: auto; }
.opo-tests .graphic {
display: flex;
flex-direction: column;
right: 0em;
width: 1em;
margin: 0em;
padding: 0em;
list-style-type: none;
overflow: hidden; }
.opo-tests .graphic li {
flex: 1 1 auto; }
.opo-tests .block-info {
margin: 0em;
padding: 0em;
list-style-type: none;
font-size: .85em; }
.opo-tests .block-info li {
display: inline; }
.opo-tests .block-info li + li::before {
content: " - "; }
.opo-tests .block-info strong {
display: none; }
.opo-tests .block-info strong::after {
content: ": "; }
.opo-tests .answers {
list-style-type: none; }
.opo-tests [data-show-selected=true] [data-selected=true] {
display: list-item; }
.opo-tests [data-show-rights=false] [data-is-ok] {
display: none; }
.opo-tests [data-show-results=false] [data-right] {
display: none; }
.opo-tests [data-is-ok=true]::before {
content: " ✔";
color: green; }
.opo-tests [data-is-ok=false]::before {
content: " ✖";
color: red; }
.opo-tests [data-is-ok=null]::before {
content: " ❓";
color: orange; }
.opo-tests [data-right=true]::before {
content: " ✔";
color: green; }
.opo-tests [data-right=false]::before {
content: " ✖";
color: red; }
.opo-tests [data-right=null]::before {
content: " ❓";
color: orange; }
.opo-tests [type=checkbox] {
display: none; }
.opo-tests [type=checkbox] + [data-icon=checkbox]::before {
content: "\f0c8";
font-family: "FA6FR"; }
.opo-tests [type=checkbox]:checked + [data-icon=checkbox]::before {
content: "\f14a";
font-family: "FA6FR"; }
.opo-tests [type=radio] {
display: none; }
.opo-tests [type=radio] + [data-icon=radio]::before {
content: "\f111";
font-family: "FA6FR"; }
.opo-tests [type=radio]:checked + [data-icon=radio]::before {
content: "\f192";
font-family: "FA6FR"; }
.opo-tests [data-icon=select_all_visible]::before {
content: "\f0ae";
font-family: "FA6FS"; }
.opo-tests [data-icon=unselect_all_visible]::before {
content: "\f03a";
font-family: "FA6FS"; }
.opo-tests [data-icon=home]::before {
content: "\f015";
font-family: "FA6FS"; }
.opo-tests [data-icon=git]::before {
content: "\f841";
font-family: "FA6FB"; }
.opo-tests [data-icon=clean]::before {
content: "\f51a";
font-family: "FA6FS"; }
.opo-tests [data-icon=submit]::before {
content: "\f1d8";
font-family: "FA6FS"; }
.opo-tests [data-icon=search]::before {
content: "\f002";
font-family: "FA6FS"; }
/*# sourceMappingURL=OpoTests.css.map */

File diff suppressed because one or more lines are too long

421
Public/scss/OpoTests.scss Normal file
View File

@ -0,0 +1,421 @@
// Settings
$color-light-fore : #222;
$color-light-back : #EFEFEF;
$color-light-primary : #2272D4;
$color-light-secondary : #D47222;
$color-dark-fore : #EFEFEF;
$color-dark-back : #222;
$color-dark-primary : mix(#FFF, #2272D4, 30%);
$color-dark-secondary : mix(#FFF, #D47222, 30%);
$color-grey : mix($color-light-fore, $color-light-back ,50%);
$header-height : 4em;
$footer-height : 2em;
$radius-item : .3em;
$border-size : .1em;
$box-shadow-item-inset : .2em;
$transition-in : .15s;
$transition-out : 1s;
$transition : .5s;
// Common
@function unicode($code){
@return unquote("\"") + unquote(str-insert($code, "\\", 1)) + unquote("\"");
}
// Styles
.opo-tests{
position : relative;
top : 0em;
left : 0em;
width : 100%;
height : 100%;
overflow : hidden;
&,input,button{
font-family : Arial, Helvetica, sans-serif;
font-size : 1em;
}
a[href]{text-decoration : none;}
a[href],button{
cursor : pointer;
transition-duration : $transition-out;
transition-property : color;
&:hover{transition-duration : $transition-in;}
}
button,input{
border-width : $border-size;
border-style : solid;
border-radius : $radius-item;
}
a[href],button,input{outline : none;}
button{transition-property : color,background-color,border-color,box-shadow;}
input{
transition-property : border-color,box-shadow;
transition-duration : $transition-out;
&:focus{transition-duration : $transition-in;}
}
[data-icon]::before{
margin-right : .4em;
font-family : "FA6FS";
}
[data-visible=false]{display : none;}
fieldset{
margin : 1em 0em;
border : none;
}
legend{
font-weight : 900;
font-size : 1.2em;
}
.form{
fieldset{
width : 100%;
box-sizing : border-box;
}
.structure{
display : table;
width : 92%;
max-width : 92%;
margin-left : 3%;
table-layout : fixed;
box-sizing : border-box;
&>div{
display : table-row;
&>*{
display : table-cell;
padding : .2em .5em;
vertical-align : top;
}
&>span{max-width : 80%;}
&>label{width : 20em;}
&>ul{width : 0em;}
}
}
[data-i]>label{
text-align : right;
&>span{
display : block;
&:first-child{
font-weight : 900;
white-space : nowrap;
&::after{content : ":";}
}
&+span{font-size : .85em;}
}
}
[type=number],[type=text]{width : 100%;}
}
.buttons,.group{
display : block;
text-align : center;
&>*{border-radius : 0em;}
&>:first-child{border-top-left-radius : $radius-item; border-bottom-left-radius : $radius-item;}
&>:last-child{border-top-right-radius : $radius-item; border-bottom-right-radius : $radius-item;}
}
&[data-gui-mode=light]{
&,input{color : $color-light-fore;}
background-color : $color-light-back;
header,footer{box-shadow : 0em 0em 1em $color-light-back;}
&,input,button{color : $color-light-fore;}
a,button{
color : $color-light-primary;
&:hover{
color : $color-light-secondary;
}
}
button{
border-color : $color-light-primary;
background-color : mix($color-light-back, $color-light-primary, 95%);
box-shadow : 0em 0em $box-shadow-item-inset inset $color-light-primary;
&:hover{
border-color : $color-light-secondary;
background-color : mix($color-light-back, $color-light-secondary, 95%);
box-shadow : 0em 0em $box-shadow-item-inset inset $color-light-secondary;
}
}
input{
color : $color-light-fore;
border-color : $color-light-fore;
background-color : mix($color-light-back, $color-light-fore, 90%);
box-shadow : 0em 0em $box-shadow-item-inset inset $color-light-fore;
&:focus{
border-color : $color-light-primary;
box-shadow : 0em 0em $box-shadow-item-inset inset $color-light-primary;
}
}
.graphic{
[data-status=unanswered]{background-color : mix($color-light-back, #888, 80%);}
[data-status=answered]{background-color : mix($color-light-back, #888, 50%);}
[data-status=right]{background-color : mix($color-light-fore, #0F0, 50%);}
[data-status=wrong]{background-color : mix($color-light-fore, #F00, 50%);}
[data-status=partially]{background-color : mix($color-light-fore, #FF0, 50%);}
}
}
&[data-gui-mode=dark]{
&,input{color : $color-dark-fore;}
background-color : $color-dark-back;
header,footer{box-shadow : 0em 0em 1em $color-dark-back;}
&,input,button{color : $color-dark-fore;}
a,button{
color : $color-dark-primary;
&:hover{
color : $color-dark-secondary;
}
}
button{
border-color : $color-dark-primary;
background-color : mix($color-dark-back, $color-dark-primary, 95%);
box-shadow : 0em 0em $box-shadow-item-inset inset $color-dark-primary;
&:hover{
border-color : $color-dark-secondary;
background-color : mix($color-dark-back, $color-dark-secondary, 95%);
box-shadow : 0em 0em $box-shadow-item-inset inset $color-dark-secondary;
}
}
input{
color : $color-dark-fore;
border-color : $color-dark-fore;
background-color : mix($color-dark-back, $color-dark-fore, 90%);
box-shadow : 0em 0em $box-shadow-item-inset inset $color-dark-fore;
&:focus{
border-color : $color-dark-primary;
box-shadow : 0em 0em $box-shadow-item-inset inset $color-dark-primary;
}
}
.graphic{
[data-status=unanswered]{background-color : mix($color-dark-back, #888, 80%);}
[data-status=answered]{background-color : mix($color-dark-back, #888, 50%);}
[data-status=right]{background-color : mix($color-dark-fore, #0F0, 50%);}
[data-status=wrong]{background-color : mix($color-dark-fore, #F00, 50%);}
[data-status=partially]{background-color : mix($color-dark-fore, #FF0, 50%);}
}
}
header,main,footer{
position : absolute;
left : 0em;
width : 100%;
}
header{
display : flex;
flex-wrap : nowrap;
align-items : flex-end;
top : 0em;
height : $header-height;
&>*{flex: 0 0 auto;}
}
main{
top : $header-height;
bottom : $footer-height;
overflow : auto;
}
footer{
display : flex;
flex-wrap : nowrap;
align-items : center;
bottom : 0em;
height : $footer-height;
&>*{flex: 1 1 auto;}
}
h1{
font-size : 1em;
span,img{vertical-align : middle;}
.image{
display : inline-block;
margin : .2em 1em;
}
img{
width : auto;
height : $header-height - .4em;
}
[data-status=loading],[data-status=error]{display : none;}
span+span{
margin-left : .2em;
font-size : $header-height * .6;
font-weight : 900;
}
}
.header-menu{
flex : 1 1 0;
margin-bottom : .3em;
ul{
list-style-type : none;
margin : 0em;
padding : 0em;
text-align : center;
}
li{
display : inline-block;
margin : 0em 1em;
}
}
.licenses{
display : flex;
flex-direction : row;
justify-content : center;
align-items : center;
margin : 0em;
text-align : center;
&>*{
flex : 0 0 auto;
margin : 0em 1em;
}
}
.cc-by-nc-sa-4{
display : flex;
align-items : center;
&>[data-i18n]{flex : 1 1 auto;}
&>.image{
margin-left : .3em;
flex : 0 0 auto;
}
img{
width : auto;
height : $footer-height * .8;
}
}
.group[data-i18n=search]{
display : flex;
flex-direction : row;
flex-wrap : nowrap;
&>:first-child::after{content : ": ";}
&>*{flex : 0 0 auto;}
&>.input-text{flex : 1 1 auto;}
[for=show_selected]{
[data-icon=checkbox]::before{content : unicode("f070");font-family : "FA6FS";}
[type=checkbox]:checked+[data-icon=checkbox]::before{content : unicode("f06e");font-family : "FA6FS";}
span+span{display : none;}
}
}
label>[data-i18n='blocks[]']{
&>:first-child{
margin-right : .4em;
&::before{content : "[ ";}
&::after{content : " ] - ";}
}
&>span{
display : inline-block;
&[title=undefined]{display : none;}
&+:not([title=undefined])+span::before{
content : "-";
margin : 0em .5em;
}
}
}
[data-i][data-i18n=blocks]{
[data-show-selected]{width : 100%;}
nav{
width : 100%;
max-height : 20em;
overflow : auto;
}
ul{
list-style-type : none;
li{
white-space : nowrap;
text-overflow : ellipsis;
}
}
}
[data-i18n=test]{font-size : 1.5em;}
[data-i18n=test_text]{display : none;}
section,.graphic{
position : absolute;
top : 4em;
bottom : 2em;
}
section{
left : 0em;
right : 1em;
overflow : auto;
}
.graphic{
display : flex;
flex-direction : column;
right : 0em;
width : 1em;
margin : 0em;
padding : 0em;
list-style-type : none;
overflow : hidden;
li{flex : 1 1 auto;}
}
.block-info{
margin : 0em;
padding : 0em;
list-style-type : none;
font-size : .85em;
li{
display : inline;
&+li::before{content : " - ";}
}
strong{
display : none;
&::after{content : ": ";}
}
}
.answers{list-style-type : none;}
[data-show-selected=true] [data-selected=true]{display : list-item;}
[data-show-rights=false] [data-is-ok]{display : none;}
[data-show-results=false] [data-right]{display : none;}
[data-is-ok=true]::before{
content : "";
color : green;
}
[data-is-ok=false]::before{
content : "";
color : red;
}
[data-is-ok=null]::before{
content : "";
color : orange;
}
[data-right=true]::before{
content : "";
color : green;
}
[data-right=false]::before{
content : "";
color : red;
}
[data-right=null]::before{
content : "";
color : orange;
}
[type=checkbox]{
display : none;
&+[data-icon=checkbox]::before{content : unicode("f0c8");font-family : "FA6FR";}
&:checked+[data-icon=checkbox]::before{content : unicode("f14a");font-family : "FA6FR";}
}
[type=radio]{
display : none;
&+[data-icon=radio]::before{content : unicode("f111");font-family : "FA6FR";}
&:checked+[data-icon=radio]::before{content : unicode("f192");font-family : "FA6FR";}
}
[data-icon=select_all_visible]::before{content : unicode("f0ae");font-family : "FA6FS";}
[data-icon=unselect_all_visible]::before{content : unicode("f03a");font-family : "FA6FS";}
[data-icon=home]::before{content : unicode("f015");font-family : "FA6FS";}
[data-icon=git]::before{content : unicode("f841");font-family : "FA6FB";}
[data-icon=clean]::before{content : unicode("f51a");font-family : "FA6FS";}
[data-icon=submit]::before{content : unicode("f1d8");font-family : "FA6FS";}
[data-icon=search]::before{content : unicode("f002");font-family : "FA6FS";}
}

View File

@ -0,0 +1,87 @@
#!/usr/bin/env python3
from typing import Self, Any, Optional
from Managers.SettingsManager import SettingsManager
from Managers.I18NManager import I18NManager
from Drivers.HTTPSocketDriver import HTTPSocketDriver
from Drivers.FilesDriver import FilesDriver
from traceback import format_stack as trace_format_stack
from traceback import extract_tb as extract_traceback
from Utils.Patterns import RE
from Utils.Utils import Utils
from datetime import datetime
from re import Match as REMatch
class OpoTests:
def __init__(self:Self, inputs:Optional[dict[str, Any|None]|list[Any|None]|tuple[Any|None]] = None) -> None:
self.__print_format:str = "[{type}] {yyyy}{mm}{dd} {hh}{ii}{ss} [{line}]{file}({method}): {message}"
self.__exception_format:str = " '{file}({method})[{line}]'{lines}\n\n{exception_message}"
self.settings:SettingsManager = SettingsManager(self, inputs)
self.__print_format = self.settings.get("print_format", None, self.__print_format)
self.__exception_format = self.settings.get("exception_format", None, self.__exception_format)
self.i18n:I18NManager = I18NManager(self)
self.files:FilesDriver = FilesDriver(self)
self.http_server:HTTPSocketDriver = HTTPSocketDriver(self)
self.http_server.start()
def print(self:Self, _type:str, string:str, inputs:Optional[dict[str, Any|None]|list[Any|None]|tuple[Any|None]] = None, default_message:str = None, i:int = 0) -> None:
date:datetime = datetime.now()
own:dict[str, Any|None] = {
"raw_type" : _type,
"type" : _type.upper()[:4],
"i18n" : Utils.get_strings(string)[0],
"message" : self.i18n.get(string, inputs, default_message),
**Utils.get_action_data(i + 1),
**Utils.get_dictionary(inputs)
}
while len(own["type"]) < 4:
own["type"] = " " + own["type"] if len(own["type"]) % 2 else own["type"] + " "
for key in ("year", "month", "day", "hour", "minute", "second"):
k:str = key[0] if key != "minute" else "i"
own[k] = own[key] = getattr(date, key)
own[k + k] = ("00" + str(own[key] % 100))[-2:]
own["yyyy"] = ("0000" + str(own["year"]))[-4:]
print(Utils.string_variables(self.__print_format, own))
def exception(self,
exception:Exception,
message:Optional[str|list|tuple] = None,
variables:Optional[dict[str, Any]|list|tuple] = None,
i:Optional[int] = 1
) -> None:
lines:list[str]|None = extract_traceback(exception.__traceback__).format()
line_matches:REMatch[str]|None = RE.EXCEPTION.match(lines[-1])
key:str
value:Any|None
block:str|None
data:dict[str, Any|None] = {
**{key : value for subset in (variables if isinstance(variables, (list, tuple)) else (variables,)) for key, value in (subset if isinstance(subset, dict) else {}).items()},
**Utils.get_action_data(1),
"lines" : "",
"exception_message" : str(exception),
"method" : line_matches.group(3),
"line" : line_matches.group(2),
"file" : line_matches.group(1)
}
for block in trace_format_stack()[:-2] + lines:
if block:
data["lines"] += "\n " + RE.BREAK_LINES.split(block.strip())[0]
data["end"] = Utils.string_variables(self.__exception_format, data)
message and self.print("exception", message, data, i + 1)

View File

@ -0,0 +1,61 @@
#!/usr/bin/env python3
from typing import Self
from Interfaces.OpoTestsInterface import OpoTestsInterface
from os.path import dirname as directory_name
from os.path import abspath as path_absolute
from os.path import exists as path_exists
from os.path import isfile as is_file
from Utils.Patterns import RE
import mimetypes
class FilesDriver:
def __init__(self:Self, ot:OpoTestsInterface) -> None:
self.ot:OpoTestsInterface = ot
self.__root_paths:tuple[str] = ("", directory_name(path_absolute(__file__)))
self.__slash:str = "/" if "/" in self.__root_paths[1] else "\\"
for _ in range(3):
self.__root_paths += (self.__root_paths[-1] + self.__slash + "..",)
mimetypes.init()
def fix_path(self:Self, path:str) -> str:
return RE.SLASHES.sub(self.__slash, path)
def get_absolute_path(self:Self, path:str) -> str|None:
root:str
path = self.fix_path(path)
for root in self.__root_paths:
absolute_path:str = self.fix_path(root + self.__slash + path)
if path_exists(absolute_path):
return absolute_path
return None
def load(self:Self, path:str) -> bytes|None:
absolute:str = self.get_absolute_path(path)
if absolute and is_file(absolute):
try:
with open(absolute, "rb") as file:
return file.read()
except Exception as exception:
print(["files_load", exception])
return None
def get_mime(self:Self, path:str) -> str|None:
absolute:str|None = self.get_absolute_path(path) or path
mime:str|None = None
if absolute and is_file(absolute):
mime = mimetypes.guess_type(absolute)[0]
if mime is None:
mime = "application/octet-stream"
return mime

View File

@ -0,0 +1,94 @@
#!/usr/bin/env python3
from threading import Thread
from typing import Any, Self, Optional
from Interfaces.OpoTestsInterface import OpoTestsInterface
from socket import socket as Socket
from socket import AF_INET as ADDRESS_FAMILY_IPV4
from socket import SOCK_STREAM as SOCKET_STREAM
from socket import SOL_SOCKET as SOCKET_LAYER
from socket import SO_REUSEADDR as SOCKET_REUSE_ADDRESS
from Utils.Patterns import RE
class HTTPSocketDriver:
def __init__(self:Self, ot:OpoTestsInterface, inputs:Optional[dict[str, Any|None]|tuple[Any|None]|list] = None) -> None:
self.ot:OpoTestsInterface = ot
self.__socket:Socket|None = None
self.__address:str = self.ot.settings.get(("address", "http_address"), inputs, "localhost")
self.__port:int = self.ot.settings.get(("port", "http_port"), inputs, 8080)
self.__maximum_connections:int = self.ot.settings.get(("maximum_connections", "http_maximum_connections"), inputs, 5)
self.__cache_size:int = self.ot.settings.get(("cache_size", "http_cache_size"), inputs, 1024)
self.__public_path:str = self.ot.settings.get(("public_path", "http_public_path"), inputs, "/Public")
self.__working:bool = False
def __listen(self:Self) -> None:
while self.__working:
try:
client:Socket
address:str
port:int
data:bytes = b""
client, (address, port) = self.__socket.accept()
while True:
buffer:bytes = client.recv(self.__cache_size)
data += buffer
if len(buffer) < self.__cache_size:
break
file_data:bytes|None
for index in ("", "/index.html", "/index.htm"):
path:str = self.__public_path + RE.LINE.match(data.decode("utf-8")).group(1).split(" ")[1] + index
file_data = self.ot.files.load(path)
if file_data is not None:
break
if not file_data:
client.sendall(b"HTTP/1.1 404 Not Found\r\nContent-Type: text/plain\r\n\r\n404 Not Found")
else:
client.sendall(b"HTTP/1.1 200 OK\r\nContent-Type: " + self.ot.files.get_mime(path).encode("utf-8") + b"\r\n\r\n" + file_data)
client.close()
except Exception as exception:
self.ot.exception(exception, "opo_tests_http_error_listen", {
"address" : self.__address,
"port" : self.__port
})
def start(self:Self) -> None:
self.__working = True
self.__socket = Socket(ADDRESS_FAMILY_IPV4, SOCKET_STREAM)
try:
self.__socket.setsockopt(SOCKET_LAYER, SOCKET_REUSE_ADDRESS, 1)
self.__socket.bind((self.__address, self.__port))
self.__socket.listen(self.__maximum_connections)
Thread(target=self.__listen).start()
self.ot.print("info", "opo_tests_http_started", {
"address" : self.__address,
"port" : self.__port,
}, "HTTP server started on '{address}:{port}'.")
except Exception as exception:
self.close()
self.ot.exception(exception, "opo_tests_http_error_start", {
"address" : self.__address,
"port" : self.__port
})
def close(self:Self) -> None:
self.__working = False

View File

@ -0,0 +1,13 @@
#!/usr/bin/env python3
from typing import Self
class FilesDriverInterface:
def fix_path(self:Self, path:str) -> str:pass
def get_absolute_path(self:Self, path:str) -> str|None:pass
def load(self:Self, path:str) -> bytes|None:pass
def get_mime(self:Self, path:str) -> str|None:pass

View File

@ -0,0 +1,4 @@
#!/usr/bin/env python3
class HTTPSocketDriverInterface:
pass

View File

@ -0,0 +1,7 @@
#!/usr/bin/env python3
from typing import Any, Optional
class I18NManagerInterface:
def get(self, texts:str|list|tuple, inputs:Optional[dict[str, Any|None]|list[Any|None]|tuple[Any|None]] = None, _default:Optional[Any] = None) -> str|None:pass

View File

@ -0,0 +1,24 @@
#!/usr/bin/env python3
from typing import Self, Any, Optional
from Interfaces.SettingsManagerInterface import SettingsManagerInterface
from Interfaces.I18NManagerInterface import I18NManagerInterface
from Interfaces.HTTPSocketDriverInterface import HTTPSocketDriverInterface
from Interfaces.FilesDriverInterface import FilesDriverInterface
class OpoTestsInterface:
def __init__(self:Self, inputs:Optional[dict[str, Any|None]|list[Any|None]|tuple[Any|None]] = None) -> None:
self.settings:SettingsManagerInterface = None
self.i18n:I18NManagerInterface = None
self.http_server:HTTPSocketDriverInterface = None
self.files:FilesDriverInterface = None
def print(self:Self, _type:str, string:str, inputs:Optional[dict[str, Any|None]|list[Any|None]|tuple[Any|None]] = None, i:int = 0) -> None:pass
def exception(self,
exception:Exception,
message:Optional[str|list|tuple] = None,
variables:Optional[dict[str, Any]|list|tuple] = None,
i:Optional[int] = 1
) -> None:pass

View File

@ -0,0 +1,7 @@
#!/usr/bin/env python3
from typing import Any, Optional
class SettingsManagerInterface:
def get(self, keys:str|list|tuple, inputs:Optional[dict[str, Any|None]|list[Any|None]|tuple[Any|None]] = None, _default:Optional[Any] = None) -> Any|None:pass

View File

@ -0,0 +1,47 @@
#!/usr/bin/env python3
from Interfaces.OpoTestsInterface import OpoTestsInterface
from typing import Any, Optional, Self
from Utils.Check import Check
from Utils.Utils import Utils
class I18NManager:
DEFAULT_SETTINGS:dict[str, Any|None] = {}
def __init__(self:Self, ot:OpoTestsInterface) -> None:
self.ot:OpoTestsInterface = ot
self.__sentences:dict[str, dict[str, str|list[str]|tuple[str]]] = {}
self.__default_language:str = "espanol"
self.__language_selected:str = "espanol"
def get(self:Self, texts:str|list|tuple, inputs:Optional[dict[str, Any|None]|list[Any|None]|tuple[Any|None]] = None, _default:Optional[Any] = None) -> str|None:
keys:list[str] = Utils.get_keys(texts)
text:str|tuple[str]|list[str]|None = None
if len(keys):
used:tuple[str] = tuple()
language:str
for language in [self.__language_selected, self.__default_language] + list(self.__sentences.keys()):
if language not in used:
used += (language,)
if language in self.__sentences:
for key in keys:
if key in self.__sentences[language] and self.__sentences[language][key] is not None:
text = self.__sentences[language][key]
break
if text is not None:
break
if text is None:
strings:list[str] = Utils.get_strings(texts)
text = strings[0] if _default == None and len(strings) else _default
return Utils.string_variables((
"".join(text) if Check.is_array(text) else
text), inputs, _default) if text else text

View File

@ -0,0 +1,18 @@
#!/usr/bin/env python3
from Interfaces.OpoTestsInterface import OpoTestsInterface
from typing import Any, Optional, Self
from Utils.Utils import Utils
class SettingsManager:
DEFAULT_SETTINGS:dict[str, Any|None] = {}
def __init__(self:Self, ot:OpoTestsInterface, inputs:Optional[dict[str, Any|None]|list[Any|None]|tuple[Any|None]] = None) -> None:
self.ot:OpoTestsInterface = ot
self.__customs:dict[str, Any|None] = Utils.get_dictionary(inputs)
self.__settings:dict[str, Any|None] = {}
self.__secrets:dict[str, Any|None] = {}
def get(self:Self, keys:str|list|tuple, inputs:Optional[dict[str, Any|None]|list[Any|None]|tuple[Any|None]] = None, _default:Optional[Any] = None) -> Any|None:
return Utils.get_values(keys, (inputs, self.__customs, self.__secrets, self.__settings, self.DEFAULT_SETTINGS), _default)

22
Python/Utils/Check.py Normal file
View File

@ -0,0 +1,22 @@
#!/usr/bin/env python3
from Utils.Patterns import RE
from typing import Any, Optional, Self
class Check:
@staticmethod
def is_string(item:Optional[Any]) -> bool:
return isinstance(item, str) and not isinstance(item, bytes)
@classmethod
def is_key(cls:type[Self], item:Optional[Any]) -> bool:
return cls.is_string(item) and RE.KEY.match(item) is not None
@staticmethod
def is_dictionary(item:Optional[Any]) -> bool:
return isinstance(item, dict)
@staticmethod
def is_array(item:Optional[Any]) -> bool:
return isinstance(item, (list, tuple))

13
Python/Utils/Patterns.py Normal file
View File

@ -0,0 +1,13 @@
#!/usr/bin/env python3
from re import Pattern as REPattern
from re import compile as re_compile
from re import IGNORECASE as RE_IGNORE_CASE
class RE:
KEY:REPattern = re_compile(r'^[a-z_][a-z0-9_]*$', RE_IGNORE_CASE)
STRING_VARIABLES:REPattern = re_compile(r'\{([a-z_][a-z0-9_]*)\}', RE_IGNORE_CASE)
LINE:REPattern = re_compile(r'^([^\r\n]*)')
SLASHES:REPattern = re_compile(r'[\\/]+')
EXCEPTION:REPattern = re_compile(r'^\s*File "([^"]+)", line ([0-9]+), in ([^\n]+)(.*|[\r\n]*)*$')
BREAK_LINES:REPattern = re_compile(r'\r\n|[\r\n]')

83
Python/Utils/Utils.py Normal file
View File

@ -0,0 +1,83 @@
#!/usr/bin/env python3
from Utils.Check import Check
from typing import Any, Self, Optional
from Utils.Patterns import RE
from re import Match as REMatch
from inspect import stack as get_stack
from inspect import FrameInfo
class Utils:
@classmethod
def get_keys(cls:type[Self], *items:list[Any|None]) -> list[str]:
return [key for item in items for key in (
(item,) if Check.is_key(item) else
cls.get_keys(*item) if Check.is_array(item) else
tuple())]
@classmethod
def get_dictionaries(cls:type[Self], *items:list[Any|None]) -> list[dict[str, Any|None]]:
return [dictionary for item in items for dictionary in (
(item,) if Check.is_dictionary(item) else
cls.get_dictionaries(*item) if Check.is_array(item) else
tuple())]
@classmethod
def get_dictionary(cls:type[Self], *items:list[Any|None]) -> dict[str, Any|None]:
return {key : value for item in items for key, value in (
item if Check.is_dictionary(item) else
cls.get_dictionary(*item) if Check.is_array(item) else
{}).items()}
@classmethod
def get_values(cls:type[Self], keys:str|list|tuple, inputs:dict[str, Any|None]|list[Any|None]|tuple[Any|None], _default:Optional[Any] = None) -> Any|None:
keys = cls.get_keys(keys)
if len(keys):
subinputs:dict[str, Any|None]
for subinputs in cls.get_dictionaries(inputs):
key:str
for key in keys:
if key in subinputs:
return subinputs[key]
return _default
@classmethod
def string_variables(cls:type[Self], string:str, variables:dict[str, Any|None], _default:Optional[str] = None) -> str|None:
variables = cls.get_dictionary(variables)
def callback(matches:REMatch) -> str:
key:str = matches.group(1)
return (
str(variables[key]) if key in variables else
str(_default) if _default is not None else
matches.group(0))
return RE.STRING_VARIABLES.sub(callback, str(string))
@staticmethod
def get_action_data(i:int = 0) -> dict[str, str|int]:
stack:FrameInfo = get_stack()[1 + i]
return {
"file" : stack.filename,
"method" : stack.function,
"line" : stack.lineno
}
@classmethod
def get_strings(cls:type[Self], *items:list[Any|None]) -> list[str]:
return [string for item in items for string in (
cls.get_strings(*item) if Check.is_array(item) else (item,)
) if Check.is_string(string)]

5
Python/server.py Normal file
View File

@ -0,0 +1,5 @@
#!/usr/bin/env python3
from Application.OpoTests import OpoTests
opo_test:OpoTests = OpoTests()

View File

@ -1,3 +1,12 @@
# OpoTests
# OpoTest
Tests para la Opo.
Tests para la Opo.
## Objetivos
- [ ] **Anidamientos unificados**: Permitir el anidamiento unificado sin expresión de nivel de anidamiento en base al método *TestsView.reformat_string*.
- [ ] **Variables en los Tests**: Hacer uso de un sistema unificado y global de variables y claves para integrar en los Tests y facilitar la implementación de los mismos.
- [ ] **Análisis de Mix y Select**: Hacer un análisis Wrong de que éstos no pertenezcan al Right y así flexibilizar las opciones.
- [ ] **Montar vista de Log In**.
- [ ] **Montar patrón funcional con Sharing de memoria**: Montar un patrón que permita operar sobre una función interna y persistir la memoria sobre todo el procedimiento.
- [ ] **Montar patrón de persistencia sobre la pregunta**: Montar un patrón de persistencia funcional sobre la pregunta para poder hacer Sharing sobre las respuestas.

8
Tools/run.server.bat Normal file
View File

@ -0,0 +1,8 @@
@echo off
:: Run the OpoTest server on Windows (cmd)
:: Author: Copilot
:: Project Organizer: Kyman (OpoTest)
set PYTHON=%PYTHON%
if "%PYTHON%"=="" set PYTHON=python
for %%I in ("%~dp0\..") do set SCRIPT_DIR=%%~fI
"%PYTHON%" "%SCRIPT_DIR%\Python\server.py" %*

8
Tools/run.server.ps1 Normal file
View File

@ -0,0 +1,8 @@
# Run the OpoTest server on Windows PowerShell
# Author: Copilot
# Project Organizer: Kyman (OpoTest)
param([string[]] $Args)
$here = Split-Path -Parent $MyInvocation.MyCommand.Definition
$scriptDir = Resolve-Path "$here\.."
$python = $env:PYTHON -ne $null ? $env:PYTHON : 'python'
& $python "$scriptDir\Python\server.py" @Args

3
Tools/run.server.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
directory=`dirname $(readlink -f "$0")`
python3 "$directory/../Python/server.py"

3
Tools/sass.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
directory=`dirname $(readlink -f "$0")`
sass $directory/../Public/scss/OpoTests.scss ../Public/scss/OpoTests.css;

1
version Normal file
View File

@ -0,0 +1 @@
0.0.8