Scripting Front/Back Flashcards
¿Cuál es el estandard de Javascript?
ECMA-262
Paradigmas que implementa JavaScript
- Funcional –> se pueden asignar funciones a variables
- Imperativo –> Bucles, if
- Procedural –>
- ‘Orientado a objetos’ –> Basado en objetos/prototipos
Caracteristicas Javascript (ES5)
- Interpretado –> lo interpreta el cliente, no se compila
- Funciones de primera clase –>
- Poder pasar funciones como argumentos a otras funciones.
- Que el valor de retorno de una función sea otra función.
- Asignar funciones a variables o almacenarlas en estructuras de datos.
- Basado en prototipos
- Dinamico
- Orientado a eventos
- Clausuras
- ES6 añadió nuevas caracteristicas –>
- Promesas
- Clases
- Array functions (foreach, map, filter)
- Arrow functions (=lambda)
Motores Javascript en los principales navegadores
- Edge –> Chakra
- Chrome –> V8
- Firefox –> SpiderMonkey
- Safari –> Nitro
- Opera –> V8
Leguajes basados en Javascript. Trasnpilers
- TypeScript (MS)
- CoffeScript
- Trasnpiladores –> De fuente a fuente
- Babel
- Traceur
- TSC
Si hablamos de un runtime enviroment Javascript, hablamos de ….
NodeJS (interprete V8)
NOTA: Necesitamos tener instalado NodeJs si pretendenmos usar los gestores de paquetes escritos en JS (npm, Yarn)
Aplicaciones para gestión Paqueteria/Dependencias ‘mundo’ Front
- nodeJS –> maquina virtual de javascript. Motor V8(igual que Google Chrome) lo necesitamos para correr los gestores de dependencias.
- npm –> escrito en javascript. Gestión de paquetes
- Yarn –> escrito en javascript
- Bower–> Dependencias
- Ficheros de configuración –> packet.json
Aplicaciones para automatización de tareas
- Grunt –> viejuna
- Gulp –> viejuna
- Empaquetadores (Packet bundle)–> nuevos. Pruebas, limpieza y empaquetado
- Webpack
- Parcel
- Rollup
- Browserify
- ESBuild
Frameworks Javascript
- VUE (Chino)
- React (libreria, Facebook)
- Angular (Google)
- Ember
- Express para Back
Si decimos ‘JavaScript Vanilla’, ¿A qué nos referimos?
A Javascript puro.
¿Qué es JQuery?
Es una libreria. No confundir con los frameworks (Angular, React)
Como creo una app Angular desde cero
- Intalamos o tenemos ya instalado NodeJS
- Instalamos Angular –>
npm install -g @angular/cli
- Creamos un proyecto –>
ng new my-angular
- Creamos componentes –> ver imagen
ng g c home
- Empaquetamos –>
ng build
Versiones de ECMAScript y sus años
- ES5 –> 2011
- ES6 –> 2015
- ES7 –> 2016
Tres manera de definir variables en Javascript
- const –> valor constante
- var –> variable con mucho ambito/alcance (desaconsejado)
- let –> variable con ambito/alcance local
¿Para que sirve ‘call’ en JS?
Con ‘call’ podemos invocar una función. Imaginemos que tenemos contenida la funcion en una variable/parametro de otra función, y queremos ejecutarla:
function f1(){ console.log('Texto F1'); } function f2(){ console.log('Texto F2'); } function invocadora (f) { f.call } invocadora(f2);
Mostrará en pantalla el texto ‘Texto F2’
NOTA: Se prodria ejecutar como ‘f.call()’ o como ‘f()’
Programación orientada a prototipos. Ejemplo
//Funcion constructora o generadora function Person(edad, nombre){ this.edad = edad; this.nombre = nombre; } Person.prototype.saluda=function(){ console.log('Hola, soy ' + this.nombre + ' y tengo ' + this.edad + ' años' ); } let p1 = new Person(30, 'Luis'); let p2 = new Person(40, 'Maria'); p1.saluda(); p2.saluda();
Consola:
Hola, soy Luis y tengo 30 años Hola, soy Maria y tengo 40 años
NOTA: si metiesemos la función dentro de Person, al crear objetos nos la duplicaría por cada objeto pero al hacerlo a través de ‘prototype’ solo la crea una vez
Tipos de datos en Js
- Number
- String
- Boolean
- Array
- Object
- null
- undefined
Operadores en JS
- Asignación –> =
- Aritmeticos –> +, -, *, /, %, **
- Logicos –> !, &&, ||
- Relacionales –> >, <, >=, >=, ==, !=, === (valor y tipo)
- Operador flecha –> =>
- typeof, instanceof, delete, void,
- A nivel de bits -> |, &, ^, ~, <<, >>, >>>
Manejo del objeto Arrays en Js
let colors = ['red', 'green', 'blue']; console.log('tercer elemento: ' + colors.at(2)) ; //Sacar el último elemento eliminandolo console.log(colors.pop()) ; //blue --> colors = ['red', 'green']; console.log(colors.pop()) ; //green --> colors = ['red']; //Meter por el final y retorna el nuevo número de elementos console.log(colors.push('violet')) ; //2 --> colors = ['red', 'violet']; console.log(colors.push('purple')) ; //2 --> colors = ['red', 'violet', 'purple']; //Sacar el primer elemento eliminandolo console.log(colors.shift()) ; //red --> colors = ['violet', 'purple']; console.log(colors.shift()) ; //violet --> colors = ['purple']; // color.sort() // Array.prototype.length (propiedad) --> color.length // color.forEach( (element) => console.log(element)); --> ejecuta la función // por cada elemento // * color.splice(start, num.Borrados, itemInsert, ....)
Funcion ‘splice()’ de los arrays en JS
Función ‘navaja suiza’. En el lugar del índice dado, borra tantos elementos como se indique y añade en esa posición los elementos listados.
splice(start) splice(start, deleteCount) splice(start, deleteCount, item1) splice(start, deleteCount, item1, item2) splice(start, deleteCount, item1, item2, /* …, */ itemN) //******************* //Remove 0 (zero) elements before index 2, and insert "drum" const myFish = ["angel", "clown", "mandarin", "sturgeon"]; const removed = myFish.splice(2, 0, "drum"); // myFish is ["angel", "clown", "drum", "mandarin", "sturgeon"] //******************** //Remove 1 element at index 2, and insert "trumpet" const myFish = ["angel", "clown", "drum", "sturgeon"]; const removed = myFish.splice(2, 1, "trumpet"); // myFish is ["angel", "clown", "trumpet", "sturgeon"] // removed is ["drum"] //********************** //Remove 2 elements from index 0, and insert "parrot", "anemone" and "blue" const myFish = ["angel", "clown", "trumpet", "sturgeon"]; const removed = myFish.splice(0, 2, "parrot", "anemone", "blue"); // myFish is ["parrot", "anemone", "blue", "trumpet", "sturgeon"] // removed is ["angel", "clown"]
Manejo del objeto JSON en Js
- El método JSON.stringify() convierte un objeto o valor de JavaScript en una cadena de texto JSON, opcionalmente reemplaza valores si se indica una función de reemplazo, o si se especifican las propiedades mediante un array de reemplazo.
- El método JSON.parse() analiza una cadena de texto como JSON, transformando opcionalmente el valor producido por el análisis.
JSON.stringify(value) JSON.stringify(value, replacer) JSON.stringify(value, replacer, space) //********************** let person = { firstName: 'John', lastName: 'Doe'; age: 30 }; console.log(JSON.stringify(person)); //{"firstName": "John", "lastName": "Doe", "age": 30}; //************************** JSON.parse(text[, reviver]) //************************** const personJson = {"firstName": "John", "lastName": "Doe", "age": 30}; let personObj = JSON.parse(personJson); console.log(personObj.firstName); // John
Cómo hariamos herencia en Javascript
Encadenando prototypes.
funcion Persona(){ } Persona.prototype.saluda = function() { console.log('Hola mundo');} function Empleado(){ } Empleado.prototype = Persona.prototype //Habriamos heredado de Persona
Producto para calidad de código en JS
ESLint
Expresiones regulares en JS
- test(text) –> Comprueba si la expresión regular «casa» con el texto text pasado por parámetro.
- exec(text) –> Ejecuta una búsqueda en el texto text. Devuelve un array con capturas de lo que coincide.
- texto.match(regex) –> como test pero se usa de otra manera, con el regex por parametro
NOTA: Estas funciones son de patron, seria algo asi como:
var myRe = /d(b+)d/g; var myArray = myRe.exec("cdbbdbsbz");
Funcionamiento de AJAX
- API AJAX –> XMLHttpRequest
- open (URL servicio REST. Ej.: GET/empleados)
- send (Lanzamos realmente la petición)
- Properties
- readyState –> valores entre el 0-4. 4 es que los datos ya están cargados
- status –> código http (200 es bien)
- onreadystatechange –> tu tienes que codificar tu funcion de tratamiento que se lanzará cuando cambie readyState. Manejador de eventos
- responseText –> Información de vuelta tipo JSON
- responseXML –> Información de vuelta tipo XML
- Librerias de terceros AXIOS
Funcionamiento de Fech
- Promesas –> Al ser JS mono-hilo hacemos promesas que son funciones que pueden ir ‘bien’ o ‘mal’, y se pasan otras dos funciones para manejarlo.
let promise = new Promise(function(resolve, reject) { // la función se ejecuta automáticamente cuando se construye la promesa // después de 1 segundo, indica que la tarea está hecha con el resultado "hecho" setTimeout(() => resolve("hecho"), 1000); }); promise('/empleados').then( function(result) { /* manejar un resultado exitoso */ }, function(error) { /* manejar un error */ } ); // .catch(f) es lo mismo que promise.then(null, f) promise.catch(alert);
Funcionamiento de async/await
async function f() { let promise = new Promise((resolve, reject) => { setTimeout(() => resolve("¡Hecho!"), 1000) }); let result = await promise; // espera hasta que la promesa se resuelva (*) alert(result); // "¡Hecho!" } f();
APIS de HTML5
- WebStorage
- WebSocket / Server-Sent Events
- Geolocation
- Canva
- IndexedDB
- File
- WebWorker
- Drag&Drop
- Selector
- SVG
Eventos y manejadores de eventos en JS
<!-- Antiguamente --> <a href="..." onclick="funcion()" /> // Ahora --> En el fichero Js sin 'ensuciar' el HTML const a = document.querySelector("a"); a.addEventListener("click", function(e) { e.preventDefault(); e.stopPropagation(); logEvent(e); });
NOTA: Hay eventos que burbujean. Se puede parar si no nos interesa con la funcion ‘stopPropagation()’
Librerias para pruebas Js
- Jasmine
- Jest
- Mocha
- Karma
Consideraciones Javascript
- Nació como lenguaje para scripting en el cliente pero se ha extendido al mundo servidor
- Paqueteria –> npm (package.json)
- Frameworks –> Express
- Runtime –> NodeJS (V8)
Consideraciones PHP
- No nació como lenguaje para el mundo web
- Paqueteria –> Composer (composer.json)
- Frameworks –> Symphony, Laravel, CakePHP, Yii
- Runtime –> Zend
Consideraciones Ruby
- Paqueteria –> Gems (gemfile)
- Framework –> Ruby on Rails
Consideraciones Pyton
- Paqueteria –> Pip (setup.py)
- Frameworks –> Django, Flask
Consideraciones Javascript en servidor
- Paqueteria –> npm (package.json)
- Frameworks –> Express (backend servicio rest)
Orden para bajarse un paquete en PHP
composer require vendor/package:version
composer require tecnickcom/tcpdf
Qué es MEAN
- MongoDB
- Express.js
- Angular
- Node.js
Qué es MERN
- MongoDB
- Express.js
- React
- Node.js
Qué es MEVN
- MongoDB
- Express.js
- VUE
- Node.js
Entorno de ejecución PHP
- Capa 1) Necesita siempre un ‘Frontal web’, Servidor Web o Servidor HTTP (Apache HTTP o NGINX)
-
Capa 2) Runtime
- Módulo PHP de Apache –> Se ejecuta en el mismo ‘proceso’ que el propio Apache
- Módulo php-fpm –> Se ejecuta el interprete en un proceso independiente
- Capa 3) BBDD
NOTA: Pensemos que PHP no nació para el mundo web
Infraestructura para probar/ejecutar PHP
- WAMP –> Windows, Apache, MySQL, PHP (Perl, Python)
- LAMP –> Linux, Apache, MySQL, PHP (Perl, Python)
- MAMP –> Mac, Apache, MySQL, PHP (Perl, Python)
- XAMPP –> SO, Apache, MySQL/MariaDB, PHP (Perl, Python). Es el generíco de los otros
- LEMP –> Linux, NGINX, MySQL, PHP (Perl, Python)
Qué es LMS / CMS en PHP y que gestores tenemos. Productos comerciales
- LMS -> Learnign Manage System eLearning –> Moodle
- CMS –> Content Manage System Generalista (Gestor de contenido)–> Drupal / Wordpress / Joomla
- Gestor de contenido orientado a comercio electronico/tienda on-line –> Magento, Prestashop, Oscommerce
- Gestor de contenidos para foros –> phpBB
- Gestor de contenido para wiki –> DocuWiki y MediaWiki
- Gestores documentales –> NO gestionan contenido, gestionan documetos (pdf), Metadatos + ACLS acceso + Versionado –> Alfresco y Documentum
Que es Deno
Runtime competencia de Node.js
PHP. Importar paquetes
- include/include_once (si no existe Warning y sigue)
- require/require_once (si no existe error y para)
EJ.: include ‘/Path/To/File.php’;
PHP. Tipos de datos
- Integer
- Float
- String
- Array
- Object
- Resource –>
- Boolean
- NULL
PHP. Variables y constantes
- Constantes:
- const PI = 3.14; –> Sin ‘$’ se resuelven en tiempo de ejecucíon
- define(‘MAX’,200); –> se resuelve en tiempo de ejecucion (no se puede usar en clases). Se puede definir condicionalmente. Se usa sin ‘$’
- Existen una serie de constantes magicas que tienen el formato __CONSTANTE__ como son: DIR, LINE, CLASS, METHOD, FUNCTION, TRAIT, NAMESPACE –> echo ‘Valor de __DIR__: ‘.__DIR__.PHP_EOL; // Dir actual
- Variables
- $variable1 = 10; –> Siempre con ‘$’
- isset($variable4) –> para saber si esta inicializada
PHP. Operadores
- = –> para asignar una variable –> $a=6;
- . –> Para concatenar cadenas de caractares –> $variable3 = $variable2.$variable1;
- .= –> Concatenación y asignación
- == –> Si es Igual en valor / En arrays si son iguales los valores
- === –> Si son el mismo valor-tipo / En arrays si son el mismo valor-tipo
- != –> Distinto valor/ En arrays que no sean iguales
- !== –> Distinto valor-tipo / En arrays si son distintos valor-tipo
- <> –> Distinto / En arrays que no sean iguales
- < –> Menor que
- <= –> Menor o igual
- > –> Mayor que
- > = –> Mayor o igual
- <=> –> Spaceship operator. A <=> B –> 1 si A>B; 0 si A=B; -1 si A<B
- ’+’ –> Suma / En arrays Union
- ’-‘ –> Resta
- ‘*’ –> Multiplicacion
- / –> Division
- % –> Modulo
- ** –> Exponente
- ++ –> Operador de incremento
- – –> Operador de decremento
- && –> And
- || –> Or
- ! –> Not
- and –> And
- xor –> Xor
- or –> Or
- ?: = Ternary operator. (Condition) ? (Statement1) : (Statement2); print ($marks>=40) ? “pass” : “Fail”;
- ?? –> echo $variable4 ?? ‘$variable4 sin valor’.PHP_EOL; // output –> $variable4 sin valor (porque $variable4 es NULL)
PHP. Cadenas de caracteres
- Concatenación –> ‘.’ –> $variable3 = $variable2.$variable1;
- ’ –> Las cadenas con comillas simples NO son parseadas. $cad1=’Hola Que tal $var1’;// output –> Hola Que tal $var1
- ” –> Las cadenas con dobles comillas son parseadas/evaluadas. $cad2=”Hola Que tal $var1”; // output –> Hola Que tal 300
- $cad1[0]; –> Referencia los caracteres por posicion en la cadena
- SUBSTR
- substr(“abcdef”, 2); // output –> cdef
- substr(“abcdef”, -2) ; // output –> ef (con “start” negativo empieza por el final)
- substr(“abcdef”, 0, 2); // output –> ab (toma los primeros 2)
- substr(“abcdef”, 0, -2); // output –> abcd (con “length” negativo, quita los ultimos dos)
- echo “Valor de PI:”.PI;
printf(“Hay %u minutos en una %s”, $minutos, $unidadTiempo); // Impresion con formato - echo preg_replace($pattern, $replacement, $string); // Remplaza en la cadena $string lo que coincida con $pattern por $replacement
- $array = preg_split( “/[\s,]+/”, $texto );// Guardo en un array todas las palabras separadas por comas o espacios.
- preg_match( $patron, $texto ); // Encuentra el patron $patron en el texto $texto
PHP. Arrays
- $arr1 = array(10, ‘abc’, 30); //Se crea con datos heterogeneos
- $arr2 = array(3 => 66, 5 => ‘abc’, 7 => 99 ); // indice numerico explicito
- $arr3 = array(‘name’ => ‘foo’, ‘age’ => 20);// asociativo (el indice no es numerico)
- $arr4 = [‘name’ => ‘foo’, ‘age’ => 20];// forma corta con [ ]
- $arr5 = explode(‘,’, $cadena1); // crea un array a base de trocear $cadena con el delimitadorj. implode(“,”, $arr6); crea una cadena a partir de una array $arr6 con el delimitador ‘,’
- $arr7 = str_split($cadena2, 3); // trocea la cadena de 3 en 3 caracteres
- array_fill(10, 5, ‘five’); // Crear un array que comienza en el indice 10, de 5 elementos y con valor ‘five’ en todas las entradas
- range(0, 100, 10); // Crea un array mediante la definicion de un rango(inicio, fin, paso/incremento)
- array_shift($stack); // Desplaza los elmentos hacia la izquierda, eliminando y retornando el primero. Desencolar
- array_pop($stack); //Saca y elimina el último elemento. Pila
- array_push($stack,”five”); // añade un elemento por el final. Pila
- array_map(“funcion”, $datos1); // Ejecuta sobre todos los elementos de $datos1 la función “funcion” y devuelve el array resultado. $datos1 no queda modificado.
- list($a, $b, $c) = $array; //Inicializa las variables $a, $b, $c con el contenido de $array.
- sort($datos4); //Ordena los datos, rsort(al revés), ksort(por clave)
- count($datos5); //Devuelve el numero de elementos del array
PHP. Bucles y sentencias de control
- IF / ELSE / ELSE IF/ELSEIF / SWITCH
if ($a > $b) { echo "a is bigger than b"; } elseif ($a == $b) { echo "a is equal to b"; } else { echo "a is smaller than b"; } switch ($i) { case 0: echo "i equals 0"; break; case 1: echo "i equals 1"; break; case 2: echo "i equals 2"; break; }
- FOR
for ($i = 1; $i <= 10; $i++) { echo $i; }
- FOREACH (en arrays)
$arr = [ '111' => 'daniel', '222' => 'pedro', '333' => 'ana' ]; // de esta forma, obtenemos por referencia los elementos del array y podemos modificarlos con la variable de iteracion foreach($arr as $value) { $value += 1; } foreach($arr as $key => $value) { echo $key . ' = ' . $value . PHP_EOL; }
- WHILE
/* example 1 */ $i = 1; while ($i <= 10) { echo $i++; /* the printed value would be $i before the increment (post-increment) */ } /* example 2 */ $i = 1; while ($i <= 10): echo $i; $i++; endwhile;
- DO-WHILE
$i = 0; do { echo $i; } while ($i > 0);
PHP. Funciones
- function funcion1(int $param) //
- function funcion2(?Producto $param) //Admite null en la llamada
- function myFunc(){…} …. myFunc(‘variable’, 3, ‘parametros’); // Se puede llamar con parametros a funciones sin parametros. Dentro con un for se recorre la entrada.
- function sumarUno(&$arg) // Parametros por referencia
- function funcion3() …. $var = “funcion3”; // Asignacion de funciones (tipico de la prog. funcional)
PHP. Programación orientada a objetos
- $this->atributo –> se hace referencia con ‘->’ y no con ‘.’
- static –> define métodos estaticos
- self::metodo() –> Desde dentro de la clase llamada a métodos estaticos.
- Clase::metodo() –> Desde fuera de la clase llamada a métodos estaticos.
- parent:: –> como super en Java
- $objeto->metodo() –> Llamada a método de clase normal
- class Cliente extends Persona –> Igual que Java
- __construct($nombre,$email) –> Con doble ‘__’
- __call($name_of_function, $arguments) –> Sobrecarga. Si llamamos a un método que no existe en nuestra clase pero tenemos definido el __call entrára por ahí
- Magic Method Get/Set –> necesitan establecer los valores en un array de properties asociativo con los nombres de los atributos.
- __get –> Getter
- __set –> Setter
- final –> Igual que Java
- public / potected / private –> Igual que Java
PHP. Superglobals
Le dan a PHP ojos en el mundo web. Si no existieran estas variables PHP no podria usar nada del mundo web. Son Arrays ASOCIATIVOS (clave-valor)
- $GLOBALS
- $_SERVER –> Datos del servidor
- $_GET –> Tenemos todo lo que haya en la queryString (/empleado?usr=1234)
- $_POST –> Datos pasados por un formulario
- $_FILES –> Si nos mandan ficheros
- $_COOKIE –> Datos de las cookies
- $_SESSION
- $_REQUEST –> Array asociativo con: $_GET, $_POST and $_COOKIE.
- $_ENV
PHP. Tratos
El orden de ejecución siempre será :
Class members > trait methods > inherited methods
trait Dog { public function makeNoise() { echo "Woof".PHP_EOL; } public function wantWalkies() { echo "Yes please!".PHP_EOL; } } trait Cat { public function makeNoise() { echo "Purr".PHP_EOL; } public function wantWalkies() { echo "No thanks!".PHP_EOL; } } class Animal { function wantWalkies () { echo "Animal".PHP_EOL; } } class DomesticPet extends Animal { use Dog, Cat { Cat::makeNoise insteadof Dog; Cat::wantWalkies as kittyWalk; Dog::wantWalkies insteadof Cat; } } $obj = new DomesticPet(); $obj->makeNoise(); // Purr $obj->wantWalkies(); // Yes please! $obj->kittyWalk(); // No thanks!
PHP. MySQL
- PROCEDURAL
- mysqli_connect(“localhost”, “root”, “root”, “rrhh”);
- mysqli_prepare($link, $sql))
- mysqli_stmt_bind_param($stmt, “s”, $param_term);
- mysqli_stmt_execute($stmt))
- mysqli_stmt_get_result($stmt);
- PDO
- $pdo = new PDO(“mysql:host=localhost;dbname=rrhh”, “root”, “root”);
- $stmt = $pdo->prepare($sql);
- $stmt->bindParam(“:term”, $term);
- $stmt->execute();
- $stmt->fetch()
- OBJETOS
- $mysqli = new mysqli(“localhost”, “root”, “root”, “rrhh”);
- $stmt = $mysqli->prepare($sql)
- $stmt->bind_param(“s”, $param_term);
- $result = $stmt->execute()
- $row = $result->fetch_array(MYSQLI_ASSOC)
PHP. JSON
- json_encode($row); –> Pasa a JSON el objecto PHP
$stack = array("one", "two", "three", "four"); echo json_encode($stack);
- json_decode($json); –> Pasa a un objeto PHP la cadena JSON
$json = '{"foo-bar": 12345}'; $obj = json_decode($json); print $obj->{'foo-bar'}; // 12345
PHP. Laravel
- PRINCIPALES COMPONENTES
- FACTORY
- SEEDER
- MODEL
- MIGRATION
- CONTROLLER (RUTAS y MIDDLEWARE)
- JOBS
- GATES y POLICIES
- Elocuent –> ORM de Laravel.
- Doctrine –> ORM de Symfoy
¿Cuál de los siguientes NO es un framework para javascript?
a) Angular
b) Bootstrap
c) React
d) JDBC
d) JDBC
¿Cuál de los siguientes lenguajes está relacionado con el desarrollo en backend?
a) GO
b) SASS
c) XML
d) ANGULAR
a) GO
En JSON, ¿qué valor mostraria la consola si ejecutamos este código: console.log(4 * 3 ** 2)?
a) 36
b) -1
c) 24
d) Null
a) 36
En PHP, señale qué variable de entorno se puede usar para almacenar datos del inicio de sesión de un usuario:
a) $_SESSION
b) $SESSION
c) $_GLOBAL
d) $GLOBAL
a) $_SESSION
¿Qué conjunto de herramientas de presentación y comportamiento ofrece componentes para trabajar en la parte dinámica del frontal web HTML?
a) NumPy
b) ActiveMQ
c) Bootstrap
d) TensorFlow
c) Bootstrap
¿Qué método estático usaria para convertir una cadena JSON en un valor u objeto javascript?:
a) JSON.parse()
b) JSON.stringify()
c) let obj = JSON
d) let obj= New JSON
a) JSON.parse()
Indique, de entre las siguientes afirmaciones, cuál es relativa a Ruby on Rails (RoR):
a) Es un lenguaje de programación creado por G. Ruby.
b) Es un framework de control de versiones escrito en el lenguaje Ruby.
c) Es un framework de desarrollo de aplicaciones web basado en el patrón MVC.
d) Es un servicio de .NET.
c) Es un framework de desarrollo de aplicaciones web basado en el patrón MVC.
En una sentencia “if” en el lenguaje de programación Python, ¿cómo se identifica el bloque de código a ejecutar si la condición se cumple?
a) El bloque debe estar delimitado por llaves {}
b) El bloque debe estar delimitado por corchetes []
c) El bloque debe estar delimitado por corchetes ()
d) Cada línea del bloque debe estar precedida por el mismo número de espacios en blanco, con la misma sangría.
d) Cada línea del bloque debe estar precedida por el mismo número de espacios en blanco, con la misma sangría.
Indique cuál de las siguientes característica de JavaScript es INCORRECTA:
a) Es imperativo y dinámico.
b) Proporciona funciones de segunda clase.
c) Es débilmente tipado.
d) Está basado en prototipos.
b) Proporciona funciones de segunda clase.
Dentro de las tecnologías para el desarrollo web utilizadas en su unidad, se contempla utilizar javascript. ¿Qué valor devuelve la siguiente función javascript?
function prueba(){ var i = 1; var j = 0; while (i<7) { j+=i; i+=2; } return j; }
a) 2
b) 9
c) 6
d) 0
b) 9
Utilizando el lenguaje Python, a continuación se muestra la variable opositor, en la que se almacena el nombre y las puntuaciones de tres ejercicios por orden:
opositor = {‘nombre’: ‘Sandra Gomez”, ‘notas’: [27, 36, 12]}
¿Cómo asignaría a una variable llamada notaSegundoEjercicio el valor 36?
a) notaSegundoEjercicio = opositor.notas.Value.ltem2
b) notaSegundoEjercicio = opositor[‘notas’][1]
c) notaSegundoEjercicio = opositor.Key[notas].Value[1]
d) notaSegundoEjercicio = opositor(notas(2))
b) notaSegundoEjercicio = opositor[‘notas’][1]
Se está valorando la realización de otros desarrollos de Machine Learning para Python y le preguntan cuál de las siguientes podría ser una libreria válida para ello.
a) Keras
b) Yum
c) Mahotas
d) Openpyd
a) Keras
Dentro del código de la página web a la que acceden los opositores, se encuentra el siquiente codigo HTML:
< html>< body><h1 id="titulo">Primer ejercicio TAI</ h1></ body></ html>
¿Cuál es el código javascript para obtener la cadena “Primer ejercicio TAI”?
a) var titulo = document.getElementByld(‘titulo”).firstChild.nodeValue;
b) var titulo = document.titulo.InnerHTML;
c) var titulo = document.getElement(“h1”).InnerText;
d) var titulo = document.children[0].getValue();
a) var titulo = document.getElementByld(‘titulo”).firstChild.nodeValue;
Entre los lenguajes contemplados para el nuevo sistema de información se encuentra Python, De entre los siguientes, ¿cuál es un framework para desarrollo web en Python?
a) Django
b) Keras
c) Pip
d) Numpy
a) Django
Se plantea la necesidad de incluir un campo de tipo select de tal manera que, si se elige la opción “SI” se habilite la entrada de datos en un campo tipo fecha, estando deshabilitado en caso contrario. ¿Qué evento del campo de tipo select utilizaría para recoger este comportamiento?
a) El evento onClick
b) El evento onSelection
c) El evento onChange
d) El evento onValue
c) El evento onChange
El núcleo del desarrollo se pretende realizar en PHP, mediante el framework Laravel, ¿qué motor de persistencia de datos utiliza dicho framework?
a) Eloquent
b) SQLAIchemy
c) iBATIS
d) Web2py
a) Eloquent
Indique qué realiza el siguiente fragmento de código PHP
<?php $psswd = substr(str_shuffle("0123abcd"), 0, Slength=5); echo $psswd; ?>
a) Genera y muestra una contraseña aleatoria formada por 8 caracteres donde los caracteres pueden repatirse.
b) Genera y muestra una contraseña aleatoria formada por 8 caracteres donde los caracteres no pueden repetirse.
c) Genera y muestra una contraseña aleatoria formada por 5 caracteres donde los caracteres pueden repetirse.
d) Genera y muestra una contraseña aleatoria formada por 5 caracteres donde los caracteres no pueden repetirse.
d) Genera y muestra una contraseña aleatoria formada por 5 caracteres dondo los caracteres no pueden repetirso.
Durante el diseño del código PHP se encuentra declarado un array con valores. Se precisa almacenar la longitud del mismo. ¿Cómo lo haría?
a) $longitud = long($array):
b) $longitud = calculate($array);
c) $longitud = count($array):
d) $longitud = range($array):
c) $longitud = count($array):
Si además está recorriendo un array y quiere mostrar los valores, ¿cuál sería la instrucción correcta?
a) echo “Posición “ + $i +”:” + Sarray[$i) . “;
b) echo “Posición “ & $1 &”: * & Sarray($]] & “\n’;
c) echo “Posición “. $i.”:”. $array[$i] . “\n”;
d) echo “Posición “.concat($i).concat(“: “) concat($array[$]) concat(“\n”);
c) echo “Posición “. $i.”:”. $array[$i] . “\n”;
Se está planteando sustituir el framework de desarrollo. ¿Qué otro framework de PHP se podría utilizar?
a) Flask
b) Symfony
e) Django
d) Vaadin
b) Symfony
Como requisito de seguridad, se desea que el campo contraseña esté formado por 6 o más caracteres y tenga al menos un numero, una letra en minúscula y una letra en mayúscula, sin tener un orden establecido. ¿Qué tipo de validación implementaría para soportario?
a) pattern=”([0-9]+[a-z])+[A-Z]).{6,}”
b) pattern=”([0-9][a-z][A-Z]).{6}”
c) pattern=”(0-9a-zA-Z).{6}”
d) pattern=”(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}”
d) pattern=”(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}”
¿Qué comando utilizaría para crear un proyecto llamado ‘agencia’ con el framework Laravel?
a) new project agencia
b) php-composer create-project agencia
c) composer create-project prefer-dist laravel/laravel agencia
d) php archetype:create project agencia
c) composer create-project prefer-dist laravel/laravel agencia
Indique la afirmación verdadera, ECMAScript 7 (también llamado ECMAScript 2016) añade:
a) Try/catch
b) Soporte para JSON.
c) Operador exponencial (**).
d) Expresiones regulares.
c) Operador exponencial (**).
En PHP 7, dado el siguiente array: $monedas = array(“bitcoin”, “ada”, “ripple”), ¿qué sentencia permite mostrar el número de elementos que tiene?
a) echo str_len($monedas);
b) echo count($monedas);
c) echo size($monedas);
d) echo length($monedas);
b) echo count($monedas);
Se ha adaptado el código PHP de la aplicación antigua (versión 5.4) a una versión actual. Observe el código PHP siguiente que se corresponde ya con el nuevo sistema:
<?php trait Peticion ( public function mostrarPeticion() ( $descripcion = 'informal'; echo "La petición es $descripcion."; ) class Reivindicacion ( use Peticion; public function mostrarPeticion() { S$descripcion = 'formal'; echo "La petición es $descripcion."; ) } $o = new Reivindicacio(n) ; $o->mostrarPeticion () ; ?>
¿Qué resultado se obtendrá de su ejecución?
a) La petición es formal.
b) La petición es informal.
c) La petición es $descripcion.
d) Da un error de ejecución.
a) La petición es formal.
JS. DOM. Selectores de elementos
- document.getElementById(‘nodeType1’);
- document.getElementsByTagName(‘section’);
- document.querySelector(“#cols”); –> a través de un selector CSS, el primero que cumpla
- document.querySelectorAll(“#cols”); –> a través de un selector CSS, todos los que cumplan
- document.forms[0].nombre.value; –> Acceso directamente a formularios
JS. Eventos
- button.addEventListener(“click”, function()); –> Se añade el evento al elemento.
- event.stopPropagation(); –> para el burbujeo cuando se puede aplicar al evento
- Eventos
- change –> Cuando el elemento cambia
- select –> Cuando un texto que contiene el elemento es seleccionado
- blur –> Cuando se pierde el foco sobre el elemento
- focus –> Cuando se pone el foco sobre el elemento
- click –> Cuando se clicka sobre el elemento
- keypress –> Cuando se presiona una tecla del teclado. Devuelve caracter
- keydown –> Código ascii de tecla presionada
- keyup –> Código ascii de tecla soltada
- input –> Se dispara cuando el valor (value) de un elemento < input>, < select>, o < textarea> ha sido cambiado.
¿Cuales son los metodos del objeto Array en javascript para añadir y extraer elementos?
Sobre todo push y pop
¿Cómo se transforma en javascript una cadena json a un objeto y con que funcion se hace lo contrario?
a. JSON.parse(cadena) –> paso a Objeto JS
b. JSON.stringify(objeto) –> paso a cadena JSON
En Javascript/DOM, ¿Conoces algun metodo para obtener un elemento(s) del DOM en base a su Id? ¿Y en base a un valor de algun atributo dado?
- document.getElementById(id)
- document.querySelector(selector de tipo atributo) y document.querySelectorAll(selector de tipo atributo)
Dos formas de realizar peticiones HTTP asincronas desde el cliente en Javascript
- API AJAX (objeto XMLHttpRequest)
- API Fetch
NOTA: Las promesas o el async/await nos pueden servir para “envolver” estas llamadas asincronas
Utilidad del metodo preventDefault sobre un DOMEvent
Metodo que usamos si queremos “cancelar” el comportamiento de ese evento (siempre que el evento sea CANCELABLE)
NOTA: stopPropagation es para evitar el burbujeo a los “padres”
Utilidad de la libreria Jasmine
Pruebas unitarias de codigo Javascript
¿En que consiste el operador “nave espacial” en PHP?
Operador de comparacion (<=>)
A <=> B
- 1 Si A es mayor que B
- 0 Si A y B son iguales
- -1 Si A es menor que B
¿Cual es el gestor de dependencias en PHP?
composer
ej. composer require <nombre-paquete></nombre-paquete>
En php, ¿en que consisten los traits?
Elementos de programacion que nos permiten reutilizar codigo sin tener que usar MAL la HERENCIA
¿Como se llama al ORM de PHP/Laravel?
Eloquent
¿Como se define un constructor en PHP y en Python?
- __construct (esto es un magic method)
- def __init__(self): …
¿Que representan las siglas del stack MEVN?
- MongoDB (BBDD NoSQL Documental/JSON)
- Express (Framework Web para Javascript)
- Vue (Framework “MVC” Javascript de Front)
- Node (Runtime de Javascript)
ORM en Javascript
- Sequelize
- Bookshelf
- Objection.js
- TypeORM
- Mongoose