diff --git a/.claude/plans/concurrent-splashing-nest.md b/.claude/plans/concurrent-splashing-nest.md new file mode 100644 index 0000000..8d2fc3c --- /dev/null +++ b/.claude/plans/concurrent-splashing-nest.md @@ -0,0 +1,45 @@ +# Plan: Simplificar layout EvaluacionEntrevistaPage — quitar columna competencia + +## Context + +La EvaluacionEntrevistaPage ya tiene la grilla alumnos×competencias con selects de profesor, periodo, nivel y retroalimentación. El usuario quiere simplificar el layout: +- **Quitar** la columna izquierda del row header (periodo badge, nombre competencia, nivel, descripción, descriptores de nivel) — ocupa demasiado espacio +- **Agregar** solo el nombre de la competencia como título dentro de cada card/celda, para saber cuál se evalúa + +## Archivos a modificar + +| Archivo | Cambio | +|---------|--------| +| `EvaluacionEntrevistaPage.tsx` | Quitar `` row header + `Competencia`, agregar nombre competencia dentro del `.cell` | +| `EvaluacionEntrevistaPage.module.css` | Quitar estilos de row header (`compLabel`, `compNivel`, `compDescripcion`, `levelDescriptors`, `periodoBadge`, sticky first-child), agregar `.cellCompName` | + +## Cambios en TSX + +1. **Eliminar** el `Competencia` del `` +2. **Eliminar** todo el primer `` del `` de cada competencia (el que contiene periodoMap badge, compLabel, compNivel, compDescripcion, details/levelDescriptors) +3. **Agregar** dentro de cada `.cell` (antes del label "Profesor") el nombre de la competencia como título: + ```tsx +
{comp.competencia}
+ ``` + +## Cambios en CSS + +1. **Quitar** las reglas de sticky en `.grid th:first-child` y `.grid td:first-child` (ya no hay columna fija) +2. **Quitar** `.compLabel`, `.compNivel`, `.compDescripcion`, `.levelDescriptors` y sub-reglas, `.periodoBadge` — ya no se usan +3. **Agregar** `.cellCompName`: + ```css + .cellCompName { + font-size: 0.8125rem; + font-weight: 600; + color: var(--color-text, #333); + margin-bottom: 0.5rem; + padding-bottom: 0.5rem; + border-bottom: 1px solid var(--color-border, #eee); + } + ``` + +## Verificación + +1. `cd packages/web && npx tsc --noEmit` — sin errores +2. Cada card muestra: nombre competencia (título) → profesor → periodo → nivel → retroalimentación → guardar +3. No hay columna izquierda redundante diff --git a/.gitignore b/.gitignore index b24d71e..7fba776 100644 --- a/.gitignore +++ b/.gitignore @@ -1,50 +1,40 @@ -# These are some examples of commonly ignored file patterns. -# You should customize this list as applicable to your project. -# Learn more about .gitignore: -# https://www.atlassian.com/git/tutorials/saving-changes/gitignore - -# Node artifact files +# Dependencies node_modules/ + +# Build outputs dist/ +packages/web/dist/ +packages/docusaurus/build/ +packages/docusaurus/.docusaurus/ +packages/api/dist/ -# Compiled Java class files -*.class +# TypeScript +*.tsbuildinfo -# Compiled Python bytecode -*.py[cod] +# Vite +*.local -# Log files +# Logs *.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* -# Package files -*.jar - -# Maven -target/ -dist/ - -# JetBrains IDE +# Editor / IDE .idea/ +.vscode/ +*.swp +*.swo +*~ -# Unit test reports -TEST*.xml - -# Generated by MacOS +# OS generated .DS_Store - -# Generated by Windows Thumbs.db -# Applications -*.app -*.exe -*.war - -# Large media files -*.mp4 -*.tiff -*.avi -*.flv -*.mov -*.wmv +# Environment variables +.env +.env.local +.env.*.local +# Deprecated backup directory +deprecated/backup/ diff --git a/CLAUDE.md b/CLAUDE.md index 83805e9..4f7b782 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,38 +4,57 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## Project Overview -Static course website for **TC2005B - Construcción de Software y Toma de Decisiones** at Tecnológico de Monterrey, Campus Querétaro. Hosted via GitHub Pages. - -## Commands - -- **Run tests:** `npm test` (uses Vitest with `--globals` flag) -- **Serve locally:** Open `index.html` in a browser or use any static file server (e.g., `npx serve .`) +Course website for **TC2005B - Construcción de Software y Toma de Decisiones** at Tecnológico de Monterrey, Campus Querétaro. Hosted via GitHub Pages. ## Architecture -- **Static HTML site** — no build step, no static site generator. Pages are plain `.html` files. -- **UI Framework:** Materialize CSS (`css/materialize.min.css`, `js/materialize.min.js`) with Google Material Icons. -- **Custom styles:** `css/daw.css` -- **Language:** Spanish (es-mx). All page content, labels, and calendar entries are in Spanish. +**Monorepo** with npm workspaces containing two packages: -### Key Pages +- `packages/web/` — React 19 + Vite 6 + TypeScript SPA (main site: calendar, labs, avances, policies) +- `packages/docusaurus/` — Docusaurus 3.9.2 documentation site (served under `/docs/`) -- `index.html` — Landing page with group selection links -- `grupo1.html`, `grupo2.html` — Class schedule/calendar per group (table-based calendars) -- `code_reviews.html` — Team work policies +Legacy static HTML content (ejercicios, laboratorios, lecturas, documentos) lives in `static-legacy/` and is copied to the build output. -### Content Directories - -- `labs/` — Web development labs (HTML, CSS, JS, Node, Express, MVC, sessions, auth, AJAX, REST, deployment) -- `laboratorios/` — Database labs (SQL, stored procedures, transactions, optimization) -- `ejercicios/` — Database exercises (ER models, relational algebra, SQL, normalization) -- `lecturas/` — Reading materials on databases, SQL, usability, application design -- `avances/` — Project milestone/deliverable descriptions -- `documentos/` — Course documents, presentations (.pptx), and supplementary files -- `archived/` — Deprecated content from prior semesters - -### Conventions +## Commands -- All HTML pages use the same Materialize boilerplate: navbar, main container, footer with important links. -- Calendar pages (`grupo*.html`) use `` with weekly rows. -- Links to labs/exercises use relative paths from the root. +- **Dev servers:** `npm run dev` — starts Vite (port 5173) and Docusaurus (port 3001) concurrently +- **Build:** `npm run build` — builds web + docs + merges into `dist/` +- **Preview:** `npm run preview` — serves the built `dist/` directory +- **Run tests:** `npm test` (uses Vitest with `--globals` flag) +- **Type check:** `cd packages/web && npx tsc --noEmit` + +## Key Directories + +### `packages/web/src/` +- `components/` — React components organized by feature (layout, home, calendar, labs, avances, policies) +- `data/` — Migrated data files as typed ES modules (labs, avances, calendario) +- `types/` — TypeScript interfaces (Lab, Avance, Calendario, Actividad, etc.) +- `hooks/` — Custom hooks (useCalendarFilter, useWeekNavigation) +- `styles/` — CSS variables and global styles + +### Routing (React Router 7) +| Route | Component | +|-------|-----------| +| `/` | HomePage | +| `/calendario/:grupoId` | CalendarPage | +| `/labs/:labId` | LabPage | +| `/avances/:avanceId` | AvancePage | +| `/politicas` | CodeReviewsPage | + +### Data Sources +- `data-source/labs/` — Original JS lab data files (34 files, source of truth) +- `data-source/avances/` — Original JS avance data files (6 files) +- `data-source/calendario/` — Original JS calendario data file +- Migrated to TypeScript via `scripts/migrate-data.mjs` + +### Legacy Content +- `static-legacy/` — ejercicios, laboratorios, lecturas, documentos, imagenes (copied to build) +- `deprecated/` — All legacy HTML pages, viewers, assets, and content duplicates (not used at runtime) + +## Conventions + +- **Language:** Spanish (es-mx). All content, labels, and calendar entries are in Spanish. +- **Styling:** CSS Modules with design tokens in `variables.css`. No Tailwind. +- **Fonts:** Inter (Google Fonts) + Material Icons. +- **Data pattern:** Each lab/avance is a separate TS file with typed `export default`. Barrel exports use dynamic imports for code splitting. +- **Links:** Internal links use React Router paths (`/labs/lab1`, `/avances/av1`). External links use full URLs. diff --git a/backup/Proyecto1AplicacionesWeb.html b/backup/Proyecto1AplicacionesWeb.html deleted file mode 100644 index 6401ae8..0000000 --- a/backup/Proyecto1AplicacionesWeb.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - Actividad - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Actividad: Proyecto 1: Consultora de - aplicaciones web
- Mdulo: Aplicaciones cliente-servidor
Descripcin
-
    -
  • El espritu emprendedor por fin rindi frutos y ahora eres - el CEO de tu propia empresa. Tu gran idea de un nuevo producto - de software ya la ests desarrollando, pero necesitas - capitalizar un poco ms tu empresa para reunir los recursos - necesarios para terminar tu gran proyecto. Para capitalizarte, - haz decidido prestar servicios de consultora de aplicaciones - web para adems contribuir con la mejora de procesos de las - PYMES de la regin.
  • -
-
Modalidad
-
    -
  • Colaborativa.
  • -
-
Objetivos de la - actividad
-
    -
  • Que conozcas a profundidad aplicaciones web que puedan ser - utilizadas por organizaciones para que mejoren sus procesos
  • -
  • Que te enfrentes con los retos de instalar y configurar una - aplicacin web open source
  • -
  • Desarrollar tu competencias de anlisis de la informacin
  • -
  • Desarrollar tus competencias de trabajo colaborativo
  • -
  • Desarrollar tu competencia de administracin del tiempo
  • -
  • Desarrollar tus competencias de comunicacin oral y escrita
  • -
  • Desarrollar tu competencia para proponer soluciones - tecnolgicas para mejorar los procesos de negocio de una - organizacin
  • -
  • Desarrollar tu competencia de aprendizaje por cuenta propia - de nuevas tecnologas y herramientas
  • -
  • Desarrollar tu competencia de de anlisis de impacto de las - herramientas tecnolgicas en los individuos, organizaciones, y - la sociedad para prestar servicios profesionales de manera - tica y responsable
  • -
-
Instrucciones
-
    -
  • Dedicaremos 10 minutos a buscar aplicaciones web que con su - uso puedan resolver problemas de organizaciones y contribuyan - a la mejora de sus procesos. Las aplicaciones web deben ser - open source o deben poderse utilizar como servicio.
  • -
  • Dedicaremos algunos minutos de la sesin para elaborar un - lista de las aplicaciones encontradas, y las agruparemos por - la problemtica que abordan.
  • -
  • Seleccionaremos la problemtica de mayor inters para el - grupo.
  • -
  • Elaboraremos los equipos de trabajo para el desarrollo del - proyecto.
  • -
  • Con tu equipo, selecciona 3 aplicaciones que abroden la - problemtica seleccionada. Al menos 1 aplicacin debe ser open - source.
  • -
  • Definan los criterios de evaluacin de sus aplicaciones. - Presenten argumentos slidos sobre las razones por las cuales - escogieron o definieron esos criterios. Algunos lineamientos - pueden ser: facilidad de uso, facilidad de - instalacin/configuracin, relevancia del problema que - resuelven, soporte, comunidad de usuarios, etc.
  • -
  • Descarguen la aplicacin open source, y lleven a cabo su - instalacin y configuracin, incluyendo el servidor que - requiere. Documenten este proceso.
  • -
  • Familiarcense con las 3 aplicaciones.
  • -
  • Hagan una revisin sobre los criterios de evaluacin. - Documenten los cambios y presenten argumentos.
  • -
  • Evalen las 3 aplicaciones.
  • -
  • Emitan recomendaciones sobre cada una de las aplicaciones - analizadas.
  • -
  • Presenten los resultados (y todo lo anterior que se les - pide) a travs de un sitio HTML5. El sitio deben presentarlo - al saln de clases y deben llegar preparados para ello (no - llegar a prepararse). La presentacin debe iniciar y terminar - a tiempo, y posteriormente habr un espacio para preguntas y - respuestas.
  • -
  • Parte de la evaluacin la realizar el profesor, otra parte - la realizar toda la clase.
  • -
-

Criterios de evaluacin

-
    -
  • Evaluacin del profesor:
  • -
      -
    • Instalacin y configuracin de la aplicacin open source - (20%)
    • -
    • Documento HTML5 siguiendo buenas prcticas (10%)
    • -
    • CSS siguiendo buenas prcticas (10%)
    • -
    -
-
    -
  • Evaluacin del grupo:
  • -
      -
    • Seleccin de los criterios de evaluacin (10%)
    • -
    • Evaluacin de las aplicaciones (15%)
    • -
    • Argumentacin de las recomendaciones (15%)
    • -
    • Navegacin general del sitio (10%)
    • -
    • Presentacin ante el grupo (10%)
    • -
        -
      -
    -
-
-
    -
-
-
Recursos
- -
Especificaciones de - entrega
-
    -
  • Presentacin en la sesin de clase y a travs de Blackboard
  • -
-
DR Tecnolgico de Monterrey Campus Quertaro| - Departamento de Desarrollo Acadmico| Mxico, 2012
- - - diff --git a/backup/Proyecto2php.html b/backup/Proyecto2php.html deleted file mode 100644 index 6923d4c..0000000 --- a/backup/Proyecto2php.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - Actividad - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Actividad: Proyecto 2: Aplicacin php
- Mdulo: Aplicaciones cliente-servidor
Descripcin
-
    -
  • Despus de haber sido consultor de aplicaciones web, te haz - dado cuenta que si bien hay una gran variedad, no hay una que - resuelva exactamente las necesidades de las empresas de la - regin. Es por ello que ahora haz decidido desarrollar tu - propia aplicacin web.
  • -
-
Modalidad
-
    -
  • Colaborativa.
  • -
-
Objetivos de la - actividad
-
    -
  • Que desarrolles tu competencia de programacin en un - apradigma cliente-servidor
  • -
  • Que desarrolles tu comepetencia de programacin en un - paradigma orientado a eventos
  • -
  • Que desarrolles tus competencias para desarrollar - aplicaciones bajo una arquitectura modelo, vista, controlador
  • -
  • Que desarrolles tus competencias de diseo de bases de datos
  • -
  • Que desarrolles tus competencias para disear y desarrollar - servicios web
  • -
  • Que desarrolles tus competencias para disear aplicaciones - amigables para el usuario, y que seas capaz de evaluar de - manera formal la usabilidad de una aplicacin por medio de heursticas
  • -
  • Que te enfrentes con el reto de desplegar una aplicacin web - php
  • -
  • Desarrollar tus competencias de trabajo colaborativo
  • -
  • Desarrollar tu competencia de administracin del tiempo
  • -
  • Desarrollar tu competencia de comunicacin oral
  • -
  • Desarrollar tu competencia para proponer soluciones - tecnolgicas para mejorar los procesos de negocio, sociales, - ambientales y educativos
  • -
  • Desarrollar tu competencia de aprendizaje por cuenta propia - de nuevas tecnologas y herramientas
  • -
  • Desarrollar tu competencia de de anlisis de impacto de las - herramientas tecnolgicas en los individuos, organizaciones, y - la sociedad para prestar servicios profesionales de manera - tica y responsable
  • -
-
Instrucciones
-
    -
  • En equipo desarrolla una aplicacin web utilizando php como - lenguaje de programacin del lado del servidor. La aplicacin - debe resolver una problemtica propia de las ciencias - computacionales, o bien debe tener un impacto social, - ambiental, o educativo.
  • -
      -
    • La funcionalidad de la aplicacin debe incluir al menos - una consulta para listar elementos de una base datos, una - insercin de un registro (a travs de una forma html), una - modificacin de un registro, y una eliminacin de un - registro.
    • -
    • Una vez que tengas la idea de tu proyecto, durante las - sesiones de clase, disctela con tu profesor. Posteriormente - por medio de diagramas de casos de uso, acuerda el alcance - de la aplicacin con tu profesor. Para la entrega del - proyecto, incluye los diagramas de casos de uso dentro de - una pgina de tu aplicacin.
    • -
    • Cada miembro del equipo debe implementar al menos 1 - componente AJAX. Pueden hacer uso de alguna librera - predefinada como jQuery, Dojo, entre otros.
    • -
    • Disea un servicio web que provea una parte de la - funcionalidad de tu aplicacin. Cada miembro del equipo debe - implementar al menos una operacin del servicio web. El - servicio web puede ser basado en REST o SOAP. Consume el - servicio dentro de tu aplicacin.
    • -
    • Del lado del cliente, debes utilizar tecnologas HTML5, - CSS, JavaScript, y AJAX. Asegrate que tu aplicacin sea - fcil de usar y agradable a la vista. Toma en cuenta la - evaluacin heurstica de tu aplicacin realizada por tus - compaeros. Implementa al menos una de las recomendaciones. - Durante la presentacin, debes presentar el estado previo a - la evaluacin heurstica de tu aplicacin y compararlo con - el estado actual. Presenta tambin las recomendaciones que - se hicieron que no se implementaron.
    • -
    • La aplicacin debe estar disponible en un servidor - accesible a travs de la www
    • -
    -
-
    -
      -
    -
      -
    -
-
    -
-
Recursos
- -
Especificaciones de - entrega
-
    -
  • Presentacin en la sesin de clase y a travs de Blackboard
  • -
-
DR Tecnolgico de Monterrey Campus Quertaro| - Departamento de Desarrollo Acadmico| Mxico, 2012
-
- - diff --git a/backup/Proyecto3JEE.html b/backup/Proyecto3JEE.html deleted file mode 100644 index cfac968..0000000 --- a/backup/Proyecto3JEE.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - - Actividad - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Actividad: Proyecto 3: Aplicaci�n web - avanzada
- M�dulo: Aplicaciones cliente-servidor
Descripci�n
Modalidad
-
    -
  • Colaborativa.
  • -
-
Objetivos de la - actividad
-
    -
  • Desarrollar tus competencias de trabajo COLABORATIVO
  • -
  • Que desarrolles tu competencia de programaci�n en un - paradigma cliente-servidor
  • -
  • Que desarrolles tu comepetencia de programaci�n en un - paradigma orientado a eventos
  • -
  • Que desarrolles tus competencias para desarrollar - aplicaciones bajo una arquitectura modelo, vista, controlador
  • -
  • Que desarrolles tus competencias de dise�o de bases de datos
  • -
  • Que desarrolles tus competencias para dise�ar y desarrollar - servicios web
  • -
  • Que desarrolles tus competencias para integrar servicios web - en aplicaciones
  • -
  • Desarrollar tu competencia de administraci�n del tiempo
  • -
  • Desarrollar tu competencia de comunicaci�n oral
  • -
  • Desarrollar tu competencia para proponer soluciones - tecnol�gicas para mejorar los procesos de negocio, sociales, - ambientales y educativos
  • -
  • Desarrollar tu competencia de aprendizaje por cuenta propia - de nuevas tecnolog�as y herramientas
  • -
  • Desarrollar tu competencia de de an�lisis de impacto de las - herramientas tecnol�gicas en los individuos, organizaciones, y - la sociedad para prestar servicios profesionales de manera - �tica y responsable
  • -
-
Instrucciones
-
    -
  • En equipo desarrolla una aplicaci�n web que resuelva una - problem�tica propia de las ciencias computacionales, o bien - que tenga un impacto social, ambiental, o educativo.
  • -
  • Sobre la plataforma tecnol�gica tienes las siguientes - opciones:
  • -
      -
    • Desarrolla una aplicaci�n web JEE
    • -
    • Desarrolla un servicio web con tecnolog�a JEE y desarrolla - una aplicaci�n php que consuma el servicio
    • -
    • Desarrolla una aplicaci�n web con php que integre al menos - 2 servicios web desarrollados por terceros (facebook, - twitter, google calendar, google maps, entre muchos otros)
    • -
    • Desarrolla una aplicaci�n web con alguna tecnolog�a no - vista en clase (python, - ruby, - perl, - .net, - entre otras)
    • -
    • Desarrolla una aplicaci�n web php o JEE con ayuda de alg�n - framework (symfony, - codeigniter, - phalcon, - cakephp, laravel, struts, - spring, entre - otros)
    • -
    -
  • La funcionalidad de la aplicaci�n debe incluir al menos una - consulta para listar elementos de una base datos, y una - inserci�n de un registro a trav�s de una forma.
  • -
  • Una vez que tengas la idea de tu proyecto, durante las - sesiones de clase, disc�tela con tu profesor. Posteriormente - por medio de diagramas de casos de uso, acuerda el alcance de - la aplicaci�n con tu profesor. Para la entrega del proyecto, - incluye los diagramas de casos de uso dentro de una p�gina de - tu aplicaci�n.
  • -
  • Para el desarrollo debes utilizar un control de versiones y - mostrar evidencia de ello.
  • -
  • Aplica las heur�sticas de usabilidad en tu dise�o.
  • -
  • Tu aplicaci�n debe estar construida bajo una arquitectura - MVC, y debes mostrar evidencia de ello.
  • -
  • Cada miembro del equipo debe implementar al menos 1 - componente AJAX. Pueden hacer uso de alguna librer�a - predefinada como jQuery, Dojo, entre otros.
  • -
      -
    -
-

Criterios de evaluaci�n

- -
    -
-
Recursos
-
    -

  • -
  • -
-
Especificaciones de - entrega
-
    -
  • Presentaci�n en la sesi�n de clase y a trav�s de Blackboard
  • -
-
DR� Tecnol�gico de Monterrey Campus Quer�taro| - Departamento de Desarrollo Acad�mico| M�xico, 2014
-
- - diff --git a/backup/Proyecto4WS.html b/backup/Proyecto4WS.html deleted file mode 100644 index fe6bc00..0000000 --- a/backup/Proyecto4WS.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - Actividad - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Actividad: Proyecto 4: Servicios web
- Mdulo: Servicios web
Descripcin
-
    -
  • Ahora que haz desarrollado tus competencias en el desarrollo - de aplicaciones web con diferentes tecnologas como HTML5, - CSS, JS, PHP, JEE, XML, haz notado una buena oportunidad de - negocio y desarrollo al adentrarte en el mundo de los - servicios web, por lo que tu siguiente proyecto consiste en - comenzar a implementar una infraestructura bajo una - arquitectura orientada a servicios (SOA).
  • -
-
Modalidad
-
    -
  • Colaborativa.
  • -
-
Objetivos de la - actividad
-
    -
  • Desarrollar tus competencias de trabajo COLABORATIVO
  • -
  • Que desarrolles tu competencia de programacin en un - paradigma cliente-servidor
  • -
  • Que desarrolles tu comepetencia de programacin en un - paradigma orientado a eventos
  • -
  • Que desarrolles tus competencias para desarrollar - aplicaciones bajo una arquitectura modelo, vista, controlador
  • -
  • Que desarrolles tus competencias para disear y desarrollar - servicios web
  • -
  • Que desarrolles tus competencias de diseo de bases de datos
  • -
  • Desarrollar tu competencia de administracin del tiempo
  • -
  • Desarrollar tu competencia de comunicacin oral
  • -
  • Desarrollar tu competencia para proponer soluciones - tecnolgicas para mejorar los procesos de negocio, sociales, - ambientales y educativos
  • -
  • Desarrollar tu competencia de aprendizaje por cuenta propia - de nuevas tecnologas y herramientas
  • -
  • Desarrollar tu competencia de anlisis de impacto de las - herramientas tecnolgicas en los individuos, organizaciones, y - la sociedad para prestar servicios profesionales de manera - tica y responsable
  • -
-
Instrucciones
-
    -
  • Revisa las presentaciones SOAP - based Web Services y REST - based Web Services.
  • -
  • Disea un prototipo de aplicacin que resuelva una - problemtica propia de las ciencias computacionales, o bien - que tenga un impacto social, ambiental, o educativo. Puedes - tomar como base, algn laboratorio o proyecto anterior, - siempre y cuando aborde una problemtica aceptable.
  • -
  • Disea y desarrolla un servicio web que le de soporte a la - aplicacin. El servicio web puede ser basado en REST o SOAP, y - debe tener al menos 3 operaciones significativas para la - aplicacin.
  • -
  • La aplicacin web puede estar implementada en cualquier - tecnologa (php, JEE, o cualquier otra).
  • -
      -
    -
  • La funcionalidad del prototipo debe incluir al menos una - consulta para listar elementos de una base datos, una - insercin de un registro (a travs de una forma html), una - modificacin de un registro, y una eliminacin de un registro.
  • -
      -
    -
  • El prototipo debe seguir una arquitectura MVC
  • -
      -
    -
  • El prototipo debe incluir al menos 1 componente AJAX. Puedes - hacer uso de alguna librera predefinada.
  • -
      -
    -
  • El alcance del prototipo debe abarcar una cantidad de casos - de uso equivalente al doble de los integranets del equipo. Se - deben definir los casos de uso y presentar como una pgina web - dentro de la aplicacin. Los casos de uso deben ser - significativos (cerrar sesin no cuenta como un caso de uso - significativo).
  • -
      -
    -
  • Del lado del cliente, debes utilizar tecnologas HTML5, CSS, - JavaScript, y AJAX. Asegrate que tu aplicacin sea fcil de - usar y agradable a la vista.
  • -
      -
    -
-

Criterios de evaluacin

-
    -
  • Evaluacin del profesor:
  • -
  • Evaluacin del grupo:
  • -
  • Servicio web (40%)
  • -
      -
    • Implementacin del servicio web con al menos 3 operaciones - significativas (30%)
    • -
    • Diseo del servicio web (10%)
    • -
    -
  • Aplicacin web (40%)
  • -
      -
    • Arquitectura MVC (10%)
    • -
    • Casos de uso, utilidad y creatividad del proyecto (10%)
    • -
    • Consumo del servicio web (20%)
    • -
    -
  • Cliente (20%)
  • -
      -
    • Documentos HTML5, CSS siguiendo buenas prcticas, - componente AJAX (10%)
    • -
    • Usabilidad general del sitio (10%)
    • -
    -
  • Impacto social, ambiental, educativo (+5%)
  • -
      -
    -
-
    -
-
Recursos
-
    -

  • -
  • -
-
Especificaciones de - entrega
-
    -
  • Presentacin en la sesin de clase y a travs de Blackboard
  • -
-
DR Tecnolgico de Monterrey Campus Quertaro| - Departamento de Desarrollo Acadmico| Mxico, 2014
-
- - diff --git a/backup/_proyecto.html b/backup/_proyecto.html deleted file mode 100644 index 32c2704..0000000 --- a/backup/_proyecto.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - - - - - DAW: Explicación del proyecto - - - -
- -
- - - -
-
- -

Proyecto: Consultoría de aplicaciones web

-
-
- -
- -
-
- - Proyecto: Consultoría de aplicaciones web? -
-

A lo largo del curso desarrollarás un proyecto para potenciar tu aprendizaje. Si estás llevando la materia de Bases de Datos (BD), el proyecto será el mismo para ambas materias. El proyecto deberá ser un sistema web que - proponga una solución para una problemática social, ambiental, educativa, o bien para un problema de las ciencias computacionales. Si como parte de tu servicio social vas a desarrollar una aplicación web, tienes la opción de alinear ese proyecto con el curso.

-

Los proyectos se trabajarán en equipos base de 3 personas que estén tomando esta clase. Si estás llevando BD todos los integrantes de tu equipo deberán estar llevando la materia también y ambos profesores deben aceptar la propuesta. Si no estás cursando BD, tus compañeros de equipo tampoco deberán hacerlo.

-
-
- -
-
- - Modalidad -
-

- Colaborativa.
-

-
-
- -
-
- - Objetivos de aprendizaje
-
    -
  • Que desarrolles tu competencia de programación en un - paradigma cliente-servidor
  • -
  • Que desarrolles tu comepetencia de programación en un - paradigma orientado a eventos
  • -
  • Que desarrolles tus competencias para desarrollar - aplicaciones bajo una arquitectura modelo, vista, controlador
  • -
  • Que desarrolles tus competencias de diseño de bases de datos
  • -
  • Que desarrolles tus competencias para diseñar y desarrollar - servicios web
  • -
  • Que desarrolles tus competencias para diseñar aplicaciones - amigables para el usuario, y que seas capaz de evaluar de - manera formal la usabilidad de una aplicación por medio de heurísticas
  • -
  • Que te enfrentes con el reto de desplegar una aplicación web
  • -
  • Desarrollar tus competencias de trabajo colaborativo
  • -
  • Desarrollar tu competencia de administración del tiempo
  • -
  • Desarrollar tu competencia de comunicación oral
  • -
  • Desarrollar tu competencia para proponer soluciones - tecnológicas para mejorar los procesos de negocio, sociales, - ambientales y educativos
  • -
  • Desarrollar tu competencia de aprendizaje por cuenta propia - de nuevas tecnologías y herramientas
  • -
-
-
- -
-
- - Instrucciones
-
    -
  • - En equipo desarrolla una aplicación web. La aplicación - debe resolver una problemática propia de las ciencias - computacionales, o bien debe tener un impacto social, - ambiental, o educativo. -
  • -
  • Una vez que tengas la idea de tu proyecto, durante las - sesiones de clase, discútela con tu profesor hasta que lleguen a - un acuerdo sobre el proyecto.
  • -
  • Elabora un breve documento sobre la visión del proyecto y - sus características.
  • -
  • Por medio de un diagramas de casos de uso, acuerden el - alcance de la aplicación con tu profesor.
  • -
  • Elaboren un mapa del sitio atienda los aspectos establecidos - en la visión, características y alcance del proyecto.
  • -
  • Para la primera entrega deberás entregar una primera versión - de la interface del usuario. Para ello utiliza tecnologías - HTML5, CSS y JavaScript. Se sugiere que te apoyes de un - framework de front-end.
  • -
  • Tu interface debe procurar ser agradable a la vista, y debe - fomentar la facilidad de uso de tu aplicación.
  • -
  • Incluye la visión del proyecto y sus características, así - como todos los artefactos de ingeniería de software que - estés utilizando dentro de una sección de tu sitio.
  • -
  • Antes de presentar, entreguen al profesor un documento - firmado por todos los integrantes del equipo, con los - porcentajes de trabajo de cada uno.
  • - -
-
-
-
- -
-
- - Recursos
- -
- -
-
- - Especificaciones de entrega -
-

Presentación en la sesión de clase y a por medio de un respositorio en Bitbucket

-
-
- - -
-
- - Preguntas
-
    -
  • -

    ¿Por qué es importante la accesibilidad?

    -

    ¿Cuáles son los lineamientos de accesibilidad que consideras más importantes? ¿Por qué?

    -

    Describe 3 cambios que harás en tu proyecto para hacerlo más accesible.

    -
  • -
-
- -
-
-
- - - - - - - - - \ No newline at end of file diff --git a/backup/av1.html b/backup/av1.html deleted file mode 100644 index 603f417..0000000 --- a/backup/av1.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - - - - - - - Avance del proyecto 1: Propuesta de proyecto - - - -
- -
- - - -
- -
-

Avance de proyecto 1: Propuesta de proyecto

-
- -
-
Avance de proyecto 1: Propuesta de proyecto
-

En este avance de proyecto formarán su equipo de trabajo, crearán una identidad para ustedes como despacho y realizarán la propuesta formal de su proyecto.

-
-
- -
-
- - Modalidad -
-

- Colaborativa. -
-

-
-
- -
-
- - Objetivos de aprendizaje
-
    -
  • Formalizar el equipo de trabajo y establecer las bases para desarrollar el proyecto de la Unidad de Formación
  • -
-
-
- -
-
Instrucciones
-
    -
  • -

    Como respuesta a esta asignación, deberán elaborar un documento para establecer su despacho de consultoría en Construcción de software, y otro(s) documento(s), en el que presentarán la propuesta formal del proyecto.

    -

    El documento del despacho debe contener al menos lo siguiente (1 punto) :

    -
  • -
  • - Conformación del equipo: -
    -
      -
    • Indicar para cada uno de los integrantes del despacho su nombre, matrícula y datos de contacto.  Además deben identificar las fortalezas y áreas de oportunidad de cada uno de ustedes. Así como las expectativas que tienen del curso.
    • -
    • Posteriormente elaborar un breve listado de lo que esperan lograr y obtener como equipo en el presente curso, así como sus compromisos para lograrlo. -
    • -
    -
  • - Identidad corporativa: -
      -
    • Razón social y logotipo, con los que deberán identificar todos los documentos que se generen a lo largo del desarrollo del proyecto. -
    • -
    • Principios y valores, así como los objetivos de su despacho de consultoría en desarrollo de sistemas y bases de datos.  -
    • -
    • ¿Qué ofrece para sus clientes?, ¿Qué compromiso tiene con la sociedad? -
    • - -
    - -
  • - -
  • - La propuesta del proyecto debe considerar (3 puntos): -
  • -
  • - Alcance organizacional: -

    - Deberás describir brevemente la institución o empresa para la que se desarrolla el proyecto, indicando si se trata de un área o departamento específico, así como su misión o propósito general. -

    -
  • -
  • - Descripción del problema o situación actual de la empresa: -

    - Deberás describir a detalle la situación actual de la empresa. Por ejemplo su forma de operar actualmente y los inconvenientes de hacerlo así. En esta sección NO se espera que se incluya una propuesta de solución. -

    -
  • - - -
  • - Requerimientos de información: -

    - Identificarás de manera general los catálogos que le darán soporte al sistema de información. Al respecto se espera que identifiques de manera completa campos y posibles relaciones entre los catálogos. -

    -
  • - -
  • - Plan de trabajo y aprendizaje adquirido (1 punto): -

    - En TODAS sus presentaciones deben incluir el plan de trabajo actualizado y el aprendizaje adquirido como equipo. El plan de trabajo debe incluir al menos:

    -
      -
    • 1) Las actividades pendientes del proyecto y el periodo de tiempo en el que se realizarán.
    • -
    • 2) Para las actividades del siguiente avance los responsables de llevarlas a cabo, la fecha en la que las realizarán y el intervalo de esfuerzo estimado.
    • -
    • 3) Para las actividades que se llevaron a cabo en este avance el tiempo que les tomó realizarlas y la diferencia con su estimación.
    • -
    -
  • -
  • - Canal de comunicación: -
      -
    • 1) Enviar al profesor Alejandro la lista de usuarios de Discord de su equipo para que les prepare su canal personalizado. Este canal será utilizado para la comunicación entre el equipo con los profesores. Adicionalmente, si gustan pueden crear un canal exclusivo para la comunicación entre el equipo.
    • -
    • 2) Todos los miembros del equipo deben estar en el canal.
    • -
    • 3) Sube el documento generado.
    • -
    - -

    -
  • -
  • -

    - Recuerda que toda la documentación que generen en torno al proyecto deberá mostrar la imagen corporativa de tu equipo y mantener consistencia gráfica en aspectos como fuentes tipográficas, colores o sombreados, imágenes, márgenes y alineación. -

    -
  • - - -
-
-
- -
-
- - Especificaciones de entrega -
-

Por medio de Discord en el canal del equipo con los profesores.

-
-
-
-
- - - - - - - - - - diff --git a/backup/av2.html b/backup/av2.html deleted file mode 100644 index 913747a..0000000 --- a/backup/av2.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - - - - Avance del proyecto 2: Propuesta del proyecto - - - -
- -
- - - -
- -
-

Avance del proyecto 2: Propuesta del proyecto e identificación de requisitos

-
- -
-
Avance del proyecto 2: Propuesta del proyecto e identificación de requisitos
-

En este avance de proyecto realizarán la propuesta formal de su proyecto.

-
-
- -
-
- - Modalidad -
-

- Colaborativa. -

-
-
- -
-
Objetivos de aprendizaje
-
    -
  • Desarrollar tus habilidades de trabajo colaborativo
  • -
  • Desarrollar tu capacidad de administración del tiempo
  • -
  • Que apliques lo visto en el curso de Fundamentos de Ingeniería de Software para continuar desarrollando tus habilidades como arquitecto de software.
  • -
-
-
- -
-
Instrucciones
-
    -
  • - Redacten un documento que incluya los siguientes segmentos: -
  • -
  • - Alcance organizacional: -

    - Deberás describir brevemente la institución o empresa para la que se desarrolla el proyecto, indicando si se trata de un área o departamento específico, así como su misión o propósito general. (10 puntos) -

    -
  • -
  • - Descripción del problema o situación actual de la empresa: -

    - Deberás describir a detalle la situación actual de la empresa. Por ejemplo su forma de operar actualmente y los inconvenientes de hacerlo así. En esta sección NO se espera que se incluya una propuesta de solución. (20 puntos) -

    -
  • -
  • - Requerimientos funcionales: -

    - Describirás de manera general los principales requerimientos de la organización que pretenden cubrirse con el sistema. Se espera que se elabore un diagrama de casos de uso que cumpla con los lineamientos descritos en el curso de Fundamentos de Ingeniería de Software. (30 puntos) -

    -
  • -
  • - Requerimientos de información: -

    - Identificarás de manera general los catálogos que le darán soporte al sistema de información. Al respecto se espera que identifiques de manera completa campos y posibles relaciones entre los catálogos. (20 puntos) -

    -
  • -
  • - Bosquejo de la aplicación: -

    - Diseñarán una propuesta de interfaz gráfica (puede ser en papel, usando el editor de ventanas de MS VISIO o si lo prefieren utilizar el editor de formas de .NET, o cualquier otro editor web como Cacoo) que atenderá los aspectos funcionales identificados. Se espera que se muestre la evolución del bosquejo o prototipo con base a las revisiones hechas por el cliente. Podrán crear un proyecto por cada versión y numerarlas consecutivamente. (20 puntos) -

    -
  • -
  • -

    - Recuerda que toda la documentación que generen en torno al proyecto deberá mostrar la imagen corporativa de tu equipo y mantener consistencia gráfica en aspectos como fuentes tipográficas, colores o sombreados, imágenes, márgenes y alineación. -

    -
  • -
-
-
- -
-
- - Especificaciones de entrega -
-

Por medio de su repositorio de equipo en bitbucket. El commit debe contener el mensaje "Avance de proyecto 2".

-
-
-
-
- - - - - - - - - \ No newline at end of file diff --git a/backup/av3.html b/backup/av3.html deleted file mode 100644 index aac5949..0000000 --- a/backup/av3.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - - - - - - - Avance del proyecto 2: Análisis y diseño de la solución. - - - -
- -
- - - -
- -
-

Avance del proyecto 2: Análisis y diseño de la solución.

-
- -
-
Avance del proyecto 2: Análisis y diseño de la solución.
-

En este avance de proyecto comenzarán con el diseño de la base de datos y de la aplicación web. Identificarás los requisitos funcionales, los requisitos no funcionales, y los requisitos de información; así como el diseño de la interacción y primera versión de la interfaz. Posteriormente detallarás los casos de uso y casos de prueba de los requisitos de mayor prioridad.

-
-
- -
-
- - Modalidad -
-

- Colaborativa. -

-
-
- -
-
Objetivos de aprendizaje
-
    -
  • Desarrollar tus habilidades de trabajo colaborativo
  • -
  • Desarrollar tu capacidad de administración del tiempo
  • -
  • Desarrollar tu habilidad de diseño de bases de datos.
  • -
  • Desarrollar tu habilidad de diseño de la información.
  • -
  • Desarrollar tu habilidad de diseño de la interacción.
  • -
  • Desarrollar tu habilidad de diseño e implementación de interfaces HTML5.
  • -
-
-
- -
-
Instrucciones
-
    -
  • - Redacten un documento (o varios) que incluya(n) los siguientes segmentos: -
  • -
  • - Diagrama de contexto (2 puntos): -

    - Haciendo uso formal de la nomenclatura descrita en el curso para la elaboración de este diagrama, elaborar el diagrama de contexto de nivel 0 para identificar a todos los interesados en el sistema de información que dará solución a la problemática descrita anteriormente. Recuerda detallar los flujos de datos entre interesados y sistema a un nivel de campos, ya que este será el punto de entrada para diseñar el modelo de persistencia. -

    -
  • -
  • - Requisitos funcionales (4 puntos): -

    Identificación completa de los requerimientos de la organización que pretenden cubrirse con el sistema. Se espera que se elabore un diagrama de casos de uso que cumpla con los lineamientos descritos en la Unidad de Formación Análisis de Requerimientos de Software.

    -

    - Tabla de priorización de requisitos que considere el riesgo, valor, complejidad y estabilidad. -

    -

    - Detalle de los casos de uso que identificaste en la tabla de alta prioridad, la plantilla a utilizar queda a su criterio pero debe incluir el diagrama de actividad de cada uno. Posteriormente se recomienda que los validen con el cliente y a partir de este momento se procede a definir el modelo de datos del proyecto. -

    -
  • -
  • - Reglas de negocio (1 punto): -

    - Identificar y describir las reglas de negocio definidas por la organización que deben ser atendidas por el sistema. -

    -
  • -
  • - Modelo Entidad-Relación (3 puntos): -

    - Diagrama con entidades, asociaciones y las extensiones necesarias (ISA's, entidades débiles, roles, en caso de ser necesarias) con la cardinalidad explícita, incluyendo posibles cotas de cardinalidad con base en las lecturas sobre la notación básica y/o las extensiones al modelo. Para mayor legibilidad del diagrama, omite en éste los atributos que se detallarán en el siguiente punto. Se espera que el modelo presentado sea "validado" en la medida de lo posible por el cliente, al menos a nivel de atributos. -

    - Diccionario de datos: -

    - Tablas detallando los atributos de cada elemento del modelo, tal como se realizó en el Ejercicio de Modelo Entidad-Relación completo. -

    - Documentación de restricciones adicionales: -

    - Documentarás las restricciones adicionales que deben obedecer los datos de tu modelo. -

    -
  • -
  • - Tablas correspondientes (Modelo Relacional) (1 punto): -

    - Establecerás las tablas con las que tu modelo se instrumentará en una base de datos relacional, aplicando las reglas de traslado. -

    -
  • -
  • - Requisitos no funcionales (1 punto): -

    - Identificar y describir cada uno de los requisitos no funcionales de tu proyecto, recuerden redactarlos de una forma en la que al final puedan medir su logro. -

    -
  • -
  • - Mapa del sitio (1 punto): -

    - El formato del diagrama es libre. Debe permitir identificar la navegación que tiene que realizar el usuario para lograr sus objetivos. -

    -
  • -
  • - Bosquejo de la aplicación (1 punto): -

    - Diseñarán una propuesta de interfaz gráfica por medio de wireframes (puede ser en papel, usando el editor de ventanas de MS VISIO o cualquier otro editor web como Cacoo, Lucid Chart, entre otros) que atenderá los aspectos funcionales identificados. Se espera que se muestre la evolución del bosquejo o prototipo con base a las revisiones hechas por el cliente. Podrán crear un proyecto por cada versión y numerarlas consecutivamente. -

    -
  • -
  • - Plan de comunicación (1 punto): -

    - Esbozo general del plan de comunicación donde determinen la forma en la que se van a comunicar con cada uno de los interesados del proyecto. -

    -
  • -
  • - Plan de trabajo actualizado y aprendizaje adquirido (1 punto): -
  • -
  • -

    - Recuerda que toda la documentación que generen en torno al proyecto deberá mostrar la imagen corporativa de tu equipo y mantener consistencia gráfica en aspectos como fuentes tipográficas, colores o sombreados, imágenes, márgenes y alineación. -

    -
  • -
-
-
- -
-
- - Especificaciones de entrega -
-

Por medio de su repositorio de equipo. Al último commit del avance, asígnenle el tag avance2.

-
-
-
-
- - - - - - - - - - diff --git a/backup/av4.html b/backup/av4.html deleted file mode 100644 index 7a281a9..0000000 --- a/backup/av4.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - - Avance de Proyecto 3: Creación de la Base de Datos - - - -
- - -
-
-

Avance de Proyecto 3: Creación de la Base de Datos

-
-
- -
- -
-
- Modalidad -
-
    -
  • - Colaborativa. -
  • -
-
- -
- -
-
- Objetivos de aprendizaje -
-
    -
  • Aplicar tus conocimientos sobre bases de datos y desarrollo web.
  • -
-
- -
- -
-
- - Instrucciones -
-
    -
  • - Uno de los integrantes del equipo deberá entregar el trabajo indicando las matrículas y nombres de los integrantes. -
    -
    Este documento debe incluir los siguientes elementos: -
    -
    - Tablas Correspondientes (Modelo Relacional Revisado) (1 punto): Establecerás las tablas con las que tu modelo se instrumentará en una base de datos relacional. Como te habrás dado cuenta en este caso solo son mejoras o refinamientos a tu avance anterior. Se espera que el modelo entregado haya sido revisado en compañía del profesor y nuevamente validado por el cliente. (nombre del Mer_Revisado.doc) -
    -
    - Tablas del proyecto (2 puntos): En base al modelo relacional que definiste en la entrega anterior, debes definir el script para crear las tablas, incluyendo los constraints de llaves primarias y foráneas. (nombre del script estructura.sql) -
    -
    - Prototipo de navegación de la aplicación web (2 puntos): Debe presentarse un prototipo completamente navegable que cumpla con las expectativas del cliente relacionadas con la interface, como colores institucionales, secuencia de navegación, mensajes de retroalimentación, layout de reportes. -
    -
    - Carga de datos y su script correspondiente(4 puntos): Las tablas deben contener una muestra representativa de datos que permita consultarlas. Una muestra representativa de datos es aquella que hace referencia a datos que pudieran ser equivalente en extensión, formato y valor a los reales. Por ejemplo, para el registro de un nombre completo, sería un dato representativo: "Juan Manuel González de Cossío". No son datos representativos: "Prueba Prueba Ejemplo Ejemplo2", "Nombre Nombre2 Apellido_paterno, Apellido_materno". -
    -
    1.- En el caso de tablas que representan clasificaciones (Ejemplos: Tipos de producto, Habilidades, Nacionalidad) deben aparecer todos los registros si son menos de 10 o un mínimo de 10. -
    -
    2.- Para tablas que representen entidades con información permanente o de largo plazo (Ejemplos: Clientes, Proveedores, Productos, Alumnos, Empleados) cargar un mínimo de 20 registros. -
    -
    3.- Para tablas que representen asociaciones o entidades con información transaccional (Ejemplos: Préstamos, Compras, Ventas, Unidades producidas.) cargar un mínimo de 50 registros por tabla. Es necesario que el código para la carga de datos, sea también parte del script. - -
  • -
-
- -
- -
-
- - Especificaciones de entrega -
-
    -
  • - Importante: Toda la documentación que generen en torno al proyecto deberá mostrar la imagen corporativa de tu equipo y mantener consistencia gráfica en aspectos como fuentes tipográficas, colores o sombreados, imágenes. márgenes y alineación. -
    -
    Entrega por medio del repositorio de equipo en Bitbucket o GitHub. -
  • -
-
- -
- -
- - - - - - - - - - diff --git a/backup/av5.html b/backup/av5.html deleted file mode 100644 index e3132ff..0000000 --- a/backup/av5.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - - - - - - Avance de Proyecto 4: Prueba de concepto - - - - - -
- - -
-
-

Avance de Proyecto 4: Prueba de concepto

-
-
- -
- -
-
- Modalidad -
-
    -
  • - Colaborativa. -
  • -
-
- -
- -
-
- - Instrucciones -
-
    -
  • -
    Este avance debe incluir: -
    -
    Avance del 30% de la implementación de requisitos funcionales: Para la entrega de esta sección se requiere que envíes el código y los scripts de la base de datos. Se sugiere que se implementen los requisitos de mayor valor y riesgo, considerando el dominio técnico que tienes hasta el momento. (6 puntos) -
    -
    Diseño y ejecución de pruebas: Haciendo uso de la metodología para traducir casos de uso a casos de prueba, se espera que tengan diseñadas el 30% de las pruebas de tu aplicación, las hayan ejecutado, y hayan realizado las correcciones pertinentes. (6 puntos) -
    -
    Usabilidad: La interfaz ofrecida por la aplicación, debe mostrar evidencia de haber sido diseñada con base en los lineamientos descritos en la lectura de las "8 reglas de oro", además de reflejar los ajustes que el cliente haya sugerido (por lo que es necesario presentarle un prototipo funcional con anticipación). La interfaz debe mostrar evidencia de al menos 3 mejoras resultantes de la evaluación heurística realizada por tus compañeros, para ello deben mostrar los reportes de usabilidad y la nueva interfaz. (4 puntos) -
    -
    Reportes: Se espera que tengan identificado el detalle del contenido de cada uno de ellos, es decir, encabezados, detalle, pie de página, gráficos esperados, etc. El detalle debe ser a nivel de campo y basta que "Anexe" una imagen a una forma para verlo desde el prototipo. (2 puntos) - -
    -
    Identificar el ambiente de producción: Se espera una breve descripción donde se identifique de manera breve y precisa el proveedor de alojamiento en el cual quedará desplegado el sistema. Se recomienda que esta información se comparta con el cliente para elaborar un acuerdo sobre la inversión. (2 puntos) -

    Para buscar un proveedor de alojamiento considera que debes asegurarte que soporte tu stack tecnológico (node+mysql). Además si tu aplicación maneja datos personales, para cumplir con la Ley Federal de Protección de Datos Personales es necesario que los datos se comuniquen por medio de un protocolo seguro como HTTPS. Para utilizar HTTPS es necesario contar con un certificado de seguridad SSL proporcionado por una Autoridad Certificadora. Muchos proveedores de alojamiento ofrecen este servicio con un pago extra; o bien puedes generarlo tu mismo si el proveedor de alojamiento ofrece acceso a consola (ssh) con letsencrypt como DigitalOcean, o si el proveedor soporta letsencrypt.

    -
  • -
-
- -
- -
-
- - Recursos -
- -
- -
- -
-
- - Especificaciones de entrega -
-
    -
  • - Importante: Toda la documentación que generen en torno al proyecto deberá mostrar la imagen corporativa de tu equipo y mantener consistencia gráfica en aspectos como fuentes tipográficas, colores o sombreados, imágenes. márgenes y alineación. -
    -
    Recuerden incluir la actualización de su plan de trabajo. -
    -
    Por medio de su repositorio del proyecto con el tag avance4. -
  • -
-
- -
- -
- - - - - - - - - - \ No newline at end of file diff --git a/backup/av6.html b/backup/av6.html deleted file mode 100644 index 4dda930..0000000 --- a/backup/av6.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - Avance de Proyecto 5: Versión Beta del Sistema - - - - - -
- - -
-
-

Avance de Proyecto 5: Versión Beta del Sistema

-
-
- -
- -
-
- Modalidad -
-
    -
  • - Colaborativa. -
  • -
-
- -
- -
-
- - Instrucciones -
-
    -
  • -
    Este avance debe incluir: -
    -
    Avance del 60% de la implementación de requisitos funcionales: Codificación de la aplicación versión Beta: La aplicación debe mostrar evidencia de que se han atendido la funionalidad que le da valor al proceso de negocio del cliente, no sólo mostrar que funciona la gestión de catálogos "ABC de la aplicación". (9 puntos) -
    -
    Diseño y ejecución de pruebas: Haciendo uso de la metodología para traducir casos de uso a casos de prueba, se espera que tengan diseñadas el 60% de las pruebas de tu aplicación, las hayan ejecutado, y hayan realizado las correcciones pertinentes. (9 puntos) -
    -
    Aceptación de requisitos funcionales por parte del cliente: Se espera una evidencia (un documeno firmado) donde el cliente acepte al menos el 30% de los casos de uso implementados y probados. (6 puntos) -
    -
    Descripción de la arquitectura de ejecución: Se espera que elaboren un diagrama de despliegue para describir con claridad el ambiente de ejecución en producción. (3 puntos) -
    -
    Es importante que esta versión refleje los ajustes y recomendaciones hechas por el cliente, así como las que hayan identificado a la largo del semestre. (3 puntos) -
  • -
-
- -
- -
-
- - Especificaciones de entrega -
-
    -
  • - Importante: Toda la documentación que generen en torno al proyecto deberá mostrar la imagen corporativa de tu equipo y mantener consistencia gráfica en aspectos como fuentes tipográficas, colores o sombreados, imágenes. márgenes y alineación. -
    -
    Por medio de su repositorio del proyecto con el tag avance5. -
  • -
-
- -
- -
- - - - - - - - - - diff --git a/backup/av7.html b/backup/av7.html deleted file mode 100644 index 6ec56a9..0000000 --- a/backup/av7.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - Avance de Proyecto 6: Versión 1.0 - - - - -
- - -
-
-

Avance de Proyecto 6: Versión 1.0 del sistema

-
-
- -
- -
-
- Modalidad -
-
    -
  • - Colaborativa. -
  • -
-
- -
- -
-
- - Instrucciones -
-
    -
  • -
    La entrega final debe incluir: -
    -
    Versión 1.0 del sistema: El sistema debe estar implementado en su totalidad, probado, y se debe mostrar evidencia de la corrección de las fallas detectadas durante el desarrollo. (20 puntos) -
    -
    Despliegue del sistema: El sistema debe estar desplegado en el ambiente de producción, además debe existir evidencia de que el cliente aceptó la totalidad de los requisitos comprometidos. Es evidente que el producto funcionando cumple con el acuerdo definido al inicio del curso, por ejemplo, si se comprometió la entrega de un manual o capacitación existe un documento que lo avale. (15 puntos) -
    -
    Presentación final: La presentación final utiliza un lenguaje adecuado para la audiencia. La presentación cuenta con una secuencia y estructura clara, haciendo un uso adecuado del tiempo disponible, así como una adecuada participación de cada uno de los integrantes del equipo. La aplicación se muestra por medio de un video. Al final de la presentación se logra el objetivo de dar por concluido el proyecto, o en su defecto se especifican con claridad los compromisos por cada una de las partes. (15 puntos) -
  • -
-
- -
- -
-
- - Especificaciones de entrega -
-
    -
  • - Importante: Toda la documentación que generen en torno al proyecto deberá mostrar la imagen corporativa de tu equipo y mantener consistencia gráfica en aspectos como fuentes tipográficas, colores o sombreados, imágenes. márgenes y alineación. -
    -
    Por medio de su repositorio del proyecto, en la rama master o main con el tag 1.0 -
  • -
-
- -
- -
- - - - - - - - - - diff --git a/backup/av8.html b/backup/av8.html deleted file mode 100644 index ead4a64..0000000 --- a/backup/av8.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - Entrega final del proyecto: Versión 1.0 - - - - - -
- - -
-
-

Entrega final del proyecto: Versión 1.0 y presenación final ante el cliente.

-
-
- -
- -
-
- Modalidad -
-
    -
  • - Colaborativa. -
  • -
-
- -
- -
-
- - Instrucciones -
-
    -
  • -
    La entrega final debe incluir: -
    -
    Versión 1.0 del sistema: El sistema debe estar implementado en su totalidad, probado, y se debe mostrar evidencia de la corrección de las fallas detectadas durante el desarrollo. (40 puntos) -
    -
    Despliegue del sistema: El sistema debe estar desplegado en el ambiente de producción, además debe existir evidencia de que el cliente aceptó la totalidad de los requisitos comprometidos. Es evidente que el producto funcionando cumple con el acuerdo definido al inicio del curso, por ejemplo, si se comprometió la entrega de un manual o capacitación existe un documento que lo avale. (30 puntos) -
    -
    Presentación final: La presentación final utiliza un lenguaje adecuado para la audiencia. La presentación cuenta con una secuencia y estructura clara, haciendo un uso adecuado del tiempo disponible, así como una adecuada participación de cada uno de los integrantes del equipo. La aplicación se muestra por medio de un video. Al final de la presentación se logra el objetivo de dar por concluido el proyecto, o en su defecto se especifican con claridad los compromisos por cada una de las partes. (30 puntos) -
  • -
-
- -
- -
-
- - Especificaciones de entrega -
-
    -
  • - Importante: Toda la documentación que generen en torno al proyecto deberá mostrar la imagen corporativa de tu equipo y mantener consistencia gráfica en aspectos como fuentes tipográficas, colores o sombreados, imágenes. márgenes y alineación. -
    -
    Por medio de su repositorio de equipo de bitbucket. -
  • -
-
- -
- -
- - - - - - - - - - \ No newline at end of file diff --git a/backup/code_reviews.html b/backup/code_reviews.html deleted file mode 100644 index 03e7471..0000000 --- a/backup/code_reviews.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - Política de trabajo en equipo - - - -
- -
- - - -
-
- -

Política de trabajo en equipo

-
-
- -
- -
-
- - Descripción -
-

Una política es un principio de gobierno, típicamente usado como la base para la definición de procedimientos dentro de una organización. En nuestro caso, la política de trabajo en equipo, tiene como propósito maximizar el desarrollo de habilidades y la efectividad de los miembros del equipo, además de mejorar la calidad del producto final por medio de la detección temprana de defectos.

-

Las revisiones de código y la programación en parejas son buenas prácticas de la industria para remover defectos en el software y al mismo tiempo promueven el desarrollo de habilidades. Es por ello que incorporaremos estas prácticas en nuestro trabajo diario.

-
-
- -
-
- - Modalidad -
-

- En pares. -
-

-
-
- -
-
- Objetivos -
-
    -
  • Encontrar defectos en el código
  • -
  • Desarrollar tus habilidades aprendiendo de los demás
  • -
  • Transmitir tus habilidades
  • -
  • Brindar y recibir retroalimentación de manera oportuna
  • -
  • Crear una comunidad de aprendizaje activo
  • -
-
-
- -
-
- Política de trabajo en equipo -
-
    -
  • -

    Es una buena práctica que vayas creando commits cada vez que avances en tu trabajo, esto permite ver el trabajo realizado y gestionar las versiones de tu código para que puedas modificarlo con confianza.

    -
  • -
  • -

    En la medida de lo posible, procura que todo tu trabajo en el proyecto se realice con la práctica Pair Programming. Incluso, puedes aplicar esta práctica también en los laboratorios.

    -

    La practica de Pair Programming, básicamente consiste en que 2 personas trabajan en 1 tarea, compartiendo 1 sola pantalla y teclado. Esto permite que el observador guíe y encuentre defectos en el momento que se inyectan, además de que ambos mejoran sus habilidades tanto de observar, como de la retroalimentación que reciben.

    -

    Para que esta práctica sea efectiva, traten de trabajar sin distracciones en periodos de alrededor de 45min + 10min de descanso, y ajusten conformen se sienten más cómodos y productivos.

    -

    Es indispensable un ambiente de respecto, confianza y altamente constructivo. El trabajo no debe realizarse para juzgar al compañero, sino para que ambos mejoren sus habilidades y para que mejore la calidad del producto.

    -
  • -
  • -

    Para el trabajo que no se realice en parejas, es posible también transferir habilidades y mejorar su calidad por medio de las revisiones de código.

    -

    Idealmente, antes de integrar a la rama develop, es importante crear un Pull Request y asignar como revisores a 2 miembros de tu equipo.

    -

    Para los revisores, se espera que además de encontrar defectos de claridad en el código, documentación, seguridad, eficiencia, y buenas prácticas, apoyen a los autores en mejorar su práctica o aprendan algo de ellos. Por lo que se pide que en la revisión, hagan comentarios enfocados en lo que sus compañeros pueden mejorar, o en lo que aprendieron del código que revisaron.

    -

    La retroalimentación debe ser constructiva y significativa. Es decir, no se aceptarán comentarios ofensivos hacia la persona, ni que desprecien el trabajo. De ser necesario incluye material de apoyo como un artículo. Describe claramente lo que se puede mejorar y cómo realizarlo, así como lo que potencialmente podría causar problemas. O bien, específicamente las lecciones aprendidas del código que se revisó.

    -
  • -
-
-
- - -
-
- - - - - - - - - - \ No newline at end of file diff --git a/backup/csv/entregan.csv b/backup/csv/entregan.csv deleted file mode 100644 index cc6dd01..0000000 --- a/backup/csv/entregan.csv +++ /dev/null @@ -1,132 +0,0 @@ -1000,AAAA800101,5000,8/7/1998,165 -1010,BBBB800101,5001,3/5/2000,528 -1020,CCCC800101,5002,29/7/2001,582 -1030,DDDD800101,5003,21/2/1998,202 -1040,EEEE800101,5004,11/12/1999,263 -1050,FFFF800101,5005,14/10/2000,503 -1060,GGGG800101,5006,4/5/2000,324 -1070,HHHH800101,5007,23/2/1998,2 -1080,AAAA800101,5008,12/1/1999,86 -1090,BBBB800101,5009,1/8/2000,73 -1100,CCCC800101,5010,10/9/2001,699 -1110,DDDD800101,5011,28/6/2003,368 -1120,EEEE800101,5012,3/4/2001,215 -1130,FFFF800101,5013,4/4/2002,63 -1140,GGGG800101,5014,12/7/2001,219 -1150,HHHH800101,5015,4/3/1999,458 -1160,AAAA800101,5016,1/6/2000,162 -1170,BBBB800101,5017,4/2/1998,180 -1180,CCCC800101,5018,14/6/2002,407 -1190,DDDD800101,5019,12/9/1998,94 -1200,EEEE800101,5000,5/3/2000,177 -1210,FFFF800101,5001,5/11/1999,43 -1220,GGGG800101,5002,1/2/2003,24 -1230,HHHH800101,5003,6/1/2003,530 -1240,AAAA800101,5004,12/1/2003,152 -1250,BBBB800101,5005,8/7/2002,71 -1260,CCCC800101,5006,10/5/1999,460 -1270,DDDD800101,5007,10/3/1999,506 -1280,EEEE800101,5008,29/7/2002,107 -1290,FFFF800101,5009,8/1/1998,132 -1300,GGGG800101,5010,8/1/2003,119 -1310,HHHH800101,5011,12/4/2002,72 -1320,AAAA800101,5012,6/1/2003,698 -1330,BBBB800101,5013,10/12/1998,554 -1340,CCCC800101,5014,2/12/2002,324 -1350,DDDD800101,5015,9/5/1999,272 -1360,EEEE800101,5016,7/11/2000,364 -1370,FFFF800101,5017,12/2/2000,44 -1380,GGGG800101,5018,3/3/2002,302 -1390,HHHH800101,5019,12/1/2003,107 -1400,AAAA800101,5000,12/3/2002,382 -1410,BBBB800101,5001,5/2/2000,601 -1420,CCCC800101,5002,7/4/1998,603 -1430,DDDD800101,5003,2/9/1999,576 -1000,AAAA800101,5019,8/8/1999,254 -1010,BBBB800101,5018,29/3/2002,523 -1020,CCCC800101,5017,4/2/1999,8 -1030,DDDD800101,5016,5/11/2000,295 -1040,EEEE800101,5015,12/7/2002,540 -1050,FFFF800101,5014,7/3/1999,623 -1060,GGGG800101,5013,2/1/2000,692 -1070,HHHH800101,5012,3/12/1999,503 -1080,AAAA800101,5011,7/11/2002,699 -1090,BBBB800101,5010,3/1/1998,421 -1100,CCCC800101,5009,6/8/2000,466 -1110,DDDD800101,5008,10/5/1999,337 -1120,EEEE800101,5007,7/7/2001,692 -1130,FFFF800101,5006,6/7/2002,562 -1140,GGGG800101,5005,2/9/2001,583 -1150,HHHH800101,5004,10/8/2001,453 -1160,AAAA800101,5019,9/6/1999,244 -1170,BBBB800101,5018,12/11/1999,53 -1180,CCCC800101,5017,3/3/2001,334 -1190,DDDD800101,5016,4/2/2000,356 -1200,EEEE800101,5015,6/5/2000,585 -1210,FFFF800101,5014,3/11/2001,70 -1220,GGGG800101,5013,4/7/2002,658 -1230,HHHH800101,5012,9/12/2002,312 -1240,AAAA800101,5011,12/8/2000,366 -1250,BBBB800101,5010,4/4/2002,691 -1260,CCCC800101,5009,9/8/1999,631 -1270,DDDD800101,5008,3/9/1997,546 -1280,EEEE800101,5007,3/2/2000,331 -1290,FFFF800101,5006,8/2/2001,279 -1300,GGGG800101,5005,10/6/2002,521 -1310,HHHH800101,5019,2/10/2002,199 -1320,AAAA800101,5018,7/3/2000,413 -1330,BBBB800101,5017,11/8/2000,93 -1340,CCCC800101,5016,6/11/1998,674 -1350,DDDD800101,5015,2/8/1999,261 -1360,EEEE800101,5014,7/4/2002,265 -1370,FFFF800101,5013,8/4/2000,575 -1380,GGGG800101,5012,8/7/1998,645 -1390,HHHH800101,5011,8/11/2001,697 -1400,AAAA800101,5010,5/6/1998,116 -1410,BBBB800101,5009,3/5/2002,467 -1420,CCCC800101,5008,2/8/2000,278 -1430,DDDD800101,5007,9/1/1998,13 -1000,AAAA800101,5019,6/4/2000,7 -1010,BBBB800101,5018,10/11/2000,667 -1020,CCCC800101,5017,4/5/2001,478 -1030,DDDD800101,5016,9/4/1998,139 -1040,EEEE800101,5015,10/6/2000,546 -1050,FFFF800101,5014,4/6/1999,90 -1060,GGGG800101,5013,10/7/2000,47 -1070,HHHH800101,5012,1/4/2000,516 -1080,AAAA800101,5011,1/6/2003,429 -1090,BBBB800101,5010,6/6/1998,612 -1100,CCCC800101,5009,7/5/2002,523 -1110,DDDD800101,5008,9/2/2000,292 -1120,EEEE800101,5007,12/3/1998,167 -1130,FFFF800101,5006,6/5/1999,673 -1140,GGGG800101,5005,7/2/1998,651 -1150,HHHH800101,5004,1/9/2003,270 -1160,AAAA800101,5019,8/2/2002,665 -1170,BBBB800101,5018,6/8/2001,517 -1180,CCCC800101,5017,1/6/2001,216 -1190,DDDD800101,5016,7/3/2003,622 -1200,EEEE800101,5015,10/7/2000,653 -1210,FFFF800101,5014,6/9/2001,479 -1220,GGGG800101,5013,8/2/2001,653 -1230,HHHH800101,5012,8/3/1999,115 -1240,AAAA800101,5011,5/8/2003,549 -1250,BBBB800101,5010,8/5/1998,690 -1260,CCCC800101,5009,10/2/2003,2 -1270,DDDD800101,5008,12/4/2002,324 -1280,EEEE800101,5007,7/12/2002,448 -1290,FFFF800101,5006,7/1/1999,336 -1300,GGGG800101,5005,2/2/2003,457 -1310,HHHH800101,5019,3/8/2000,463 -1320,AAAA800101,5018,3/12/1999,163 -1330,BBBB800101,5017,12/6/1998,558 -1340,CCCC800101,5016,10/2/1999,11 -1350,DDDD800101,5015,5/6/1999,330 -1360,EEEE800101,5014,6/7/2001,37 -1370,FFFF800101,5013,5/6/2002,423 -1380,GGGG800101,5012,1/2/2001,147 -1390,HHHH800101,5011,6/1/2002,308 -1400,AAAA800101,5010,3/5/2002,441 -1410,BBBB800101,5009,5/11/2002,461 -1420,CCCC800101,5008,12/2/2001,444 -1430,DDDD800101,5007,10/6/2002,506 diff --git a/backup/csv/materiales.csv b/backup/csv/materiales.csv deleted file mode 100644 index 7d4e3b5..0000000 --- a/backup/csv/materiales.csv +++ /dev/null @@ -1,44 +0,0 @@ -1000,Varilla 3/16,100 -1010,Varilla 4/32,115 -1020,Varilla 3/17,130 -1030,Varilla 4/33,145 -1040,Varilla 3/18,160 -1050,Varilla 4/34,175 -1060,Varilla 3/19,190 -1070,Varilla 4/35,205 -1080,Ladrillos rojos,50 -1090,Ladrillos grises,35 -1100,Block,30 -1110,Megablock,40 -1120,Sillar rosa,100 -1130,Sillar gris,110 -1140,Cantera blanca,200 -1150,Cantera gris,1210 -1160,Cantera rosa,1420 -1170,Cantera amarilla,230 -1180,Recubrimiento P1001,200 -1190,Recubrimiento P1010,220 -1200,Recubrimiento P1019,240 -1210,Recubrimiento P1028,250 -1220,Recubrimiento P1037,280 -1230,Cemento ,300 -1240,Arena,200 -1250,Grava,100 -1260,Gravilla,90 -1270,Tezontle,80 -1280,Tepetate,34 -1290,Tubera 3.5,200 -1300,Tubera 4.3,210 -1310,Tubera 3.6,220 -1320,Tubera 4.4,230 -1330,Tubera 3.7,240 -1340,Tubera 4.5,250 -1350,Tubera 3.8,260 -1360,Pintura C1010,125 -1370,Pintura B1020,125 -1380,Pintura C1011,725 -1390,Pintura B1021,125 -1400,Pintura C1011,125 -1410,Pintura B1021,125 -1420,Pintura C1012,125 -1430,Pintura B1022,125 diff --git a/backup/csv/proveedores.csv b/backup/csv/proveedores.csv deleted file mode 100644 index 84432cf..0000000 --- a/backup/csv/proveedores.csv +++ /dev/null @@ -1,8 +0,0 @@ -AAAA800101,La fragua -BBBB800101,Oviedo -CCCC800101,La Ferre -DDDD800101,Cecoferre -EEEE800101,Alvin -FFFF800101,Comex -GGGG800101,Tabiquera del centro -HHHH800101,Tubasa diff --git a/backup/csv/proyectos.csv b/backup/csv/proyectos.csv deleted file mode 100644 index 45f9ad7..0000000 --- a/backup/csv/proyectos.csv +++ /dev/null @@ -1,20 +0,0 @@ -5000,Vamos Mexico -5001,Aztecn -5002,CIT Campeche -5003,Mexico sin ti no estamos completos -5004,Educando en Coahuila -5005,Infonavit Durango -5006,Reconstruccin del templo de Guadalupe -5007,Construccin de plaza Magnolias -5008,Televisa en accin -5009,Disco Atlantic -5010,Construccin de Hospital Infantil -5011,Remodelacin de aulas del IPP -5012,Restauracin de instalaciones del CEA -5013,Reparacin de la plaza Sonora -5014,Remodelacin de Soriana -5015,CIT Yucatan -5016,Ampliacin de la carretera a la huasteca -5017,Reparacin de la carretera del sol -5018,Tu cambio por la educacion -5019,Queretaro limpio diff --git a/backup/cuestionario1.html b/backup/cuestionario1.html deleted file mode 100644 index bd54c11..0000000 --- a/backup/cuestionario1.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - - - - - Cuestionario 1: BD vs DBMS - - - -
- -
- - -
-
-

Cuestionario 1: BD vs DBMS

-
-
- -
- -
-
- - Descripción -
-

En esta actividad se analizarán las diferencias entre BD y DBMS.

-
-
- -
-
- - Modalidad -
-

- Individual. -
-

-
-
- -
-
- - Objetivos de aprendizaje
-
    -
  • Que conozcas la diferencia entre DB y DBMS
  • -
  • Que desarrolles tu comepetencia de comunicación escrita
  • -
  • Que profundices en el dominio de HTLM5 y CSS3
  • -
  • Que desarrolles tus competencias de búsqueda y análisis de información
  • -
  • Desarrollar tu competencia de aprendizaje por cuenta propia
  • -
-
-
- -
-
- - Instrucciones
-
    -
  • Haciendo uso de la bibliografía propuesta para el curso, y accediendo a fuentes formales en línea, genera un documento HTML5 donde contestes las siguientes preguntas: -

    ¿Qué es entonces una base de datos - DB?

    -

    ¿En qué casos es conveniente usar bases de datos?

    -

    ¿Qué es un sistema de gestión de base de datos - DBMS?

    -

    Enlista y explica las funciones/responsabilidades que tienen los DBMS.

    -

    Ejemplifica y justifica en que proyecto de los que has realizado hubiera sido conveniente utilizar una base de datos.

    -
  • -
-
-
-
- -
-
- - Recursos
- -
-
- -
-
- - Especificaciones de entrega -
-

El cuestionario se presentará como una sección/página HTML5. La entrega se realizará por medio de bitbucket con fecha límite el día lunes.

-

Soporta tu trabajo utilizando libros, revistas o sitios WEB. En cualquier caso, cita las fuentes - utilizadas. (utilizar al menos 2 fuentes de referencia distintos. Por ejemplo un libro y una sitio web). NO está permitido hacer un copiado de párrafos a menos que sea citadas adecuadamente.

-

- ·         - - Citar con el siguiente formato:

-

Para revista:   -    Autor, título del artículo, revista y año. -

-

Para libro:           - Autor, título del libro, páginas y año.

-

Para el sitio web: URL

-

Ejemplo de cómo citar:

-

Recientemente se ha acordado una clasificación de los algoritmos con base a la cantidad de memoria que ocupa en la computadora, dicha propuesta fue realizada en el año 2006 por Juan Pérez [1]

-

-  ….a l final del documento

-

[1] Juan Pérez, Software Guru, 215 , 2006.

-

 

-
-
- -
- -
- - - - - - - - - - \ No newline at end of file diff --git a/backup/ejemplo_materialize.html b/backup/ejemplo_materialize.html deleted file mode 100644 index b89190e..0000000 --- a/backup/ejemplo_materialize.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - Ejemplo de Materialize - - - -
- - -
-
¡hola mundo!
-
¿cómo estás?
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
- - -
- - - - - \ No newline at end of file diff --git a/backup/grupo1.html b/backup/grupo1.html deleted file mode 100644 index 14d3296..0000000 --- a/backup/grupo1.html +++ /dev/null @@ -1,713 +0,0 @@ - - - - - - - - - - - - - - - - - Calendario | TC2005B Construcción de Software - - - - - -
- - - -
-
-
-
-

Calendario de actividades

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SemanaLunesMartesJuevesViernes
-

- 1 -
(1 al 5 de abril) -

-
- Sesión plenaria - - - Previo a la sesión: - -
-
- -
- Previo a la sesión: - -
-
- -
- Sesión plenaria - -
-

- 2 -
(8 al 12 de abril) -

-
- Previo a la sesión: - -
-
- -
- Previo a la sesión: - -
-
- -
- - - Sesión plenaria -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
    -
  • free_breakfastInterludio
  • -
    -
  • info_outlinePolíticas de control de versiones del socio formador [55min]
  • -
  • starsValidación de avance proyecto, retroalimentación y corrección / trabajo en proyecto [55min]
  • -
-
-

- 3 -
(15 al 19 de abril) -
-

-
- Previo a la sesión: - -
-
- -
- Previo a la sesión: - -
-
- -
- Previo a la sesión: - -
-
-
    -
  • forumResolución de dudas de la lectura [1h 50min]
  • -
    -
  • free_breakfastInterludio
  • -
    -
  • Revisión de competencias [50min]
  • -
  • Resumen de back-end y pm2 [50min]
  • -
-
- Sesión plenaria -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
    -
  • free_breakfastInterludio
  • -
    -
  • starsPresentación de avance proyecto 2, retroalimentación y corrección [1h 50min]
  • -
-
-

- 4 -
(22 al 26 de abril) -

-
- - - Previo a la sesión: - -
-
- -
- Previo a la sesión: - -
-
- Sesión plenaria - -
- Sesión plenaria -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
  • checkEvaluación de competencias
  • -
    -
  • free_breakfastInterludio
  • -
    -
  • starsEntrega y validación de avance proyecto 3, retroalimentación y corrección [1h 50min]
  • -
-
-

- 5 -
(29 de abril al 3 de mayo) -

-
- Previo a la sesión: - -
-
- -
- Previo a la sesión: - -
-
- -
- - - Sesión plenaria -
    -
  • checkEvaluación de competencias
  • -
    -
  • free_breakfastInterludio
  • -
    -
  • starsValidación de avance proyecto, retroalimentación y corrección [1h 50min]
  • -
  • checkEvaluación de competencias
  • -
-
-

- Semana Tec -
(6 al 10 de mayo) -

-
-
    -
  • event_busySemana Tec
  • -
-
-

- 6 -
(13 al 17 de mayo) -

-
- - - - - - - Sesión plenaria - -
-

- 7 -
(20 al 24 de mayo) -

-
- Previo a la sesión: - -
-
- -
- - - - - Sesión plenaria -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
  • checkEvaluación de competencias
  • -
    -
  • free_breakfastInterludio
  • -
    -
  • starsValidación de avance proyecto, retroalimentación y corrección [1h 50min]
  • - -
-
-

- 8 -
(27 al 31 de mayo) -

-
- - - - -
    -
  • speaker_notesPruebas de pensamiento en voz alta [1h 50min]
  • -
    -
  • free_breakfastInterludio
  • -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
  • checkEvaluación de competencias
  • -
-
- Sesión plenaria -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
  • checkEvaluación de competencias
  • -
  • starsAvance de proyecto 6: Versión 1.0 [20min]
  • -
    -
  • free_breakfastInterludio
  • -
    -
  • starsPresentación de avance proyecto 5, retroalimentación y corrección [1h 30min]
  • -
-
-

- 9 -
(3 al 7 de junio) -
-

-
-
    -
  • workTrabajo en proyecto [1h 30min]
  • -
    -
  • free_breakfastInterludio
  • -
    -
  • speaker_notesAccesibilidad [20min]
  • -
  • checkEvaluación de competencias
  • -
-
- - -
    -
  • speaker_notesThe front-end checklist [20min]
  • -
  • workTrabajo en proyecto [1h 30min]
  • -
    -
  • free_breakfastInterludio
  • -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
  • checkEvaluación de competencias
  • -
-
- Sesión plenaria -
    - -
  • checkEvaluación de competencias
  • -
  • info_outlineAgenda de presentaciones finales [10 min]
  • -
    -
  • free_breakfastInterludio
  • -
    -
  • starsValidación de avance proyecto, retroalimentación y corrección [1h 40min]
  • -
-
-

- 10 -
(10 al 14 de junio) -
-

-
-
    -
  • workTrabajo en proyecto [1h 50min]
  • -
    -
  • free_breakfastInterludio
  • -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
  • checkEvaluación de competencias
  • -
-
-
    -
  • info_outlineLímite para dar de baja el bloque
  • -
  • workTrabajo en proyecto [1h 50min]
  • -
    -
  • free_breakfastInterludio
  • -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
  • checkEvaluación de competencias
  • -
-
-
    -
  • workTrabajo en proyecto [1h 50min]
  • -
    -
  • free_breakfastInterludio
  • -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
  • checkEvaluación de competencias
  • -
-
- Sesión plenaria - -
-

- Semana Tec -
(17 al 21 de junio) -

-
-
    -
  • event_busySemana Tec
  • -
-
-
- - - - \ No newline at end of file diff --git a/backup/grupo2.html b/backup/grupo2.html deleted file mode 100644 index d08f300..0000000 --- a/backup/grupo2.html +++ /dev/null @@ -1,732 +0,0 @@ - - - - - - - - - - - - - - - - - Calendario | TC2005B Construcción de Software - - - - - -
- - - -
-
-
-
-

Calendario de actividades

-
infoLiga de zoom para las sesiones de clase: https://itesm.zoom.us/j/86961658439
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SemanaLunesMartesJuevesViernes
-

- 1 -
(14 al 18 de febrero) -

-
- Sesión plenaria (en https://itesm.zoom.us/j/87940931091) - - - Previo a la sesión: - -
-
- -
- Previo a la sesión: - -
-
- -
- Sesión plenaria (en https://itesm.zoom.us/j/87940931091) -
    -
  • starsConformación de los equipos e interacción con socios formadores [1h 50min]
  • -
    -
  • free_breakfastBreak [30min]
  • -
    -
  • assignmentLab 5: Frameworks de estilo. [50min]
  • -
  • workTrabajo en proyecto [1h]
  • -
-
-

- 2 -
(21 al 25 de febrero) -

-
- Previo a la sesión: - -
-
- -
- Previo a la sesión: - -
-
- -
- - - Sesión plenaria (en https://itesm.zoom.us/j/87940931091) -
    -
  • info_outlinePolíticas de control de versiones del socio formador [55min]
  • -
  • starsValidación de avance proyecto, retroalimentación y corrección / trabajo en proyecto [55min]
  • -
    -
  • free_breakfastBreak [30min]
  • -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
-
-

- 3 -
(28 de febrero al 4 de marzo) -
-

-
- Previo a la sesión: - -
-
- -
- Previo a la sesión: - -
-
- -
- Previo a la sesión: - -
-
- -
- Sesión plenaria (en https://itesm.zoom.us/j/87940931091) -
    -
  • starsPresentación de avance proyecto 2, retroalimentación y corrección [1h 50min]
  • -
    -
  • free_breakfastBreak [30min]
  • -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
-
-

- 4 -
(7 al 11 de marzo) -

-
- - - Previo a la sesión: - -
-
- -
- Previo a la sesión: - -
-
- Sesión plenaria (en https://itesm.zoom.us/j/87940931091) - -
- Sesión plenaria (en https://itesm.zoom.us/j/87940931091) -
    -
  • starsEntrega y validación de avance proyecto 3, retroalimentación y corrección [1h 50min]
  • -
    -
  • free_breakfastBreak [30min]
  • -
    -
  • starsRetroalimentación de la UF [30min]
  • -
  • workTrabajo en proyecto [1h 20min]
  • -
  • checkEvaluación de competencias
  • -
-
-

- 5 -
(14 al 18 de marzo) -

-
- Previo a la sesión: - -
-
- -
- Previo a la sesión: - -
-
- -
- - - Sesión plenaria (en https://itesm.zoom.us/j/87940931091) -
    -
  • starsValidación de avance proyecto, retroalimentación y corrección [1h 50min]
  • -
  • checkEvaluación de competencias
  • -
    -
  • free_breakfastBreak [30min]
  • -
    -
  • starsTaller de toma de decisiones estratégicas en organizaciones [1h 50min]
  • -
-
-

- 6 - Semana Tec -
(21 al 25 de marzo) -

-
-
    -
  • event_busySemana Tec
  • -
-
-

- 7 -
(28 de marzo al 1° de abril) -

-
- - - - - - - Sesión plenaria (en https://itesm.zoom.us/j/87940931091) - -
-

- 8 -
(4 al 8 de abril) -

-
- Previo a la sesión: - -
-
- -
- - - - - Sesión plenaria (en https://itesm.zoom.us/j/87940931091) -
    -
  • starsValidación de avance proyecto, retroalimentación y corrección [1h 50min]
  • -
    -
  • free_breakfastBreak [30min]
  • -
    -
  • starsTaller de seguridad (Cancelado)
  • -
  • workTrabajo en proyecto [1h 50min]
  • - -
  • checkEvaluación de competencias
  • -
-
-

- Vacaciones -
(11 al 15 de abril) -

-
-
    -
  • event_busyVacaciones Semana Santa
  • -
-
-

- 9 -
(18 al 22 de abril) -

-
- - - - -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
  • checkEvaluación de competencias
  • -
    -
  • free_breakfastBreak [30min]
  • -
    -
  • speaker_notesPruebas de pensamiento en voz alta [1h 50min]
  • - -
-
- Sesión plenaria (en https://itesm.zoom.us/j/87940931091) -
    -
  • starsPresentación de avance proyecto 5, retroalimentación y corrección [1h 30min]
  • -
  • starsAvance de proyecto 6: Versión 1.0 [20min]
  • -
    -
  • free_breakfastBreak [30min]
  • -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
  • checkEvaluación de competencias
  • - -
-
-

- 10 -
(25 al 29 de abril) -
-

-
-
    -
  • starsTaller de introducción a Angular [1h 50min]
  • -
    -
  • free_breakfastBreak [30min]
  • -
    -
  • speaker_notesAccesibilidad [20min]
  • -
  • workTrabajo en proyecto [1h 30min]
  • -
  • checkEvaluación de competencias
  • -
-
- - -
    -
  • speaker_notesThe front-end checklist [20min]
  • -
  • workTrabajo en proyecto [1h 30min]
  • -
  • checkEvaluación de competencias
  • -
    -
  • free_breakfastBreak [30min]
  • -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
-
- Sesión plenaria (en https://itesm.zoom.us/j/87940931091) - -
-

- 11 -
(2 al 6 de mayo) -
-

-
-
    -
  • workTrabajo en proyecto [1h 50min]
  • -
  • checkEvaluación de competencias
  • -
    -
  • free_breakfastBreak [30min]
  • -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
-
-
    -
  • info_outlineLímite para dar de baja el bloque
  • -
  • workTrabajo en proyecto [1h 50min]
  • -
  • checkEvaluación de competencias
  • -
    -
  • free_breakfastBreak [30min]
  • -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
-
-
    -
  • workTrabajo en proyecto [1h 50min]
  • -
  • checkEvaluación de competencias
  • -
    -
  • free_breakfastBreak [30min]
  • -
    -
  • workTrabajo en proyecto [1h 50min]
  • -
-
- Sesión plenaria (en https://itesm.zoom.us/j/87940931091) - -
-

- 12 - Semana Tec -
(9 al 13 de mayo) -

-
-
    -
  • event_busySemana Tec
  • -
-
-
- - - - \ No newline at end of file diff --git a/backup/index.html b/backup/index.html deleted file mode 100644 index d18ea9c..0000000 --- a/backup/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - Calendario | TC2005B Construcción de Software - - - - - -
- - - -
-
-
-
-

Selecciona tu grupo para ir al calendario de actividades:

-
-

infoCalendario de Actividades

-
-
-
-
- - -
- - - - \ No newline at end of file diff --git a/backup/index_ad18.html b/backup/index_ad18.html deleted file mode 100644 index 4ac0d24..0000000 --- a/backup/index_ad18.html +++ /dev/null @@ -1,553 +0,0 @@ - - - - - - - - - - - - - - - - - Calendario | TC2005B Construcción de software y toma de decisiones - - - - - -
- - -
-
-

Calendario de actividades

-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Semana1ra sesión2da sesión3ra sesión
-

- 1 -
(6 al 10 de agosto) -

-
- - - - - -
-

- 2 -
(13 al 17 de agosto) -

-
- - - Previo a la sesión: - - Durante la sesión: - - - - -
-

- 3 -
(20 al 24 de agosto) -
-

-
- - - - Durante la sesión: - - - -
-

- 4 -
(27 al 31 de agosto) -

-
- - - Previo a la sesión: - - Durante la sesión: - - - - -
    -
  • workTrabajo en proyecto
  • -
-
-

- 5 -
(3 al 7 de septiembre) -

-
- - - Previo a la sesión: - - Durante la sesión: - - - - -
    -
  • workTrabajo en proyecto
  • -
-
-

- 6 -
(10 al 14 de septiembre) -

-
-
    -
  • assessmentExamen parcial
  • -
-
- Previo a la sesión: - - Durante la sesión: - - - -
    -
  • starsPresentaciones de proyecto
  • -
  • doneRevisión y entrega de calificaciones
  • -
-
-

- 7 -
(17 al 21 de septiembre) -

-
- - - - - - Previo a la sesión: - - Durante la sesión: - -
-

- 8 -
(24 al 28 de septiembre) -

-
- Semana i - - Semana i - - Semana i -
-

- 9 -
(1 al 5 de octubre) -

-
- - - Previo a la sesión: - - - Durante la sesión: - - - - -
-

- 10 -
(8 al 12 de octubre) -

-
- - - Previo a la sesión: - - Durante la sesión: - - - -
-

- 11 -
(15 al 19 de octubre) -
-

-
- - - Durante la sesión: - - - - -
-

- 12 -
(22 al 26 de octubre) -

-
-
    -
  • workTrabajo en proyecto
  • -
-
-
    -
  • starsPresentaciones de proyecto
  • - -
-
-
    -
  • assessmentExamen parcial
  • - -
-
-

- 13 -
(29 de octubre al 2 de noviembre) -
-

-
- - - - - -
-

- 14 -
(5 al 9 de noviembre) -

-
- - - - - - -
-

- 15 -
(12 al 16 de noviembre) -

-
-
    -
  • starsPresentaciones de avance de proyecto
  • -
- -
- - -
    -
  • workTrabajo en proyecto
  • -
-
- -
-

- 16 -
(19 al 23 de noviembre) -
-

-
-
    -
  • workTrabajo en el proyecto
  • - -
-
-
    -
  • question_answerSesión de cierre del curso
  • -
-
-
    -
  • starsPresentaciones finales de proyecto
  • -
-
-
- - - - \ No newline at end of file diff --git a/backup/index_ad20.html b/backup/index_ad20.html deleted file mode 100644 index 63e5190..0000000 --- a/backup/index_ad20.html +++ /dev/null @@ -1,603 +0,0 @@ - - - - - - - - - - - - - - - - - Calendario | TC2005B Construcción de software y toma de decisiones - - - - - -
- - -
-
-

Calendario de actividades

-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Semana1ra sesión2da sesión3ra sesión
-

- 1 -
(10 al 14 de de agosto) -

-
- - - - - -
-

- 2 -
(17 al 21 de agosto) -

-
- - - Previo a la sesión: - - Durante la sesión: - - - - -
-

- 3 -
(24 al 28 de agosto) -
-

-
- - - - Durante la sesión: - - - -
-

- 4 -
(31 de agosto al 4 de septiembre) -

-
- - - Previo a la sesión: - - Durante la sesión: - - - - -
-

- 5 -
(7 al 11 de septiembre) -

-
- - - Previo a la sesión: - - Durante la sesión: - - - - - Previo a la sesión: - - Durante la sesión: - - -
-

- 6 -
(14 al 18 de septiembre) -

-
-
    -
  • assessmentExamen parcial
  • -
-
-
    -
  • event_busyAsueto
  • -
-
-
    -
  • starsPresentaciones de proyecto
  • -
-
-

- 7 -
(21 al 25 de septiembre) -

-
- Previo a la sesión: - - Durante la sesión: - - - - - - Previo a la sesión: - - Durante la sesión: - -
-

- 8 -
(28 de septiembre al 2 de octubre) -

-
- - - Previo a la sesión: - - - Durante la sesión: - - - - -
-

- 9 -
(5 al 9 de octubre) -

-
- Previo a la sesión: - - Durante la sesión: - - - Previo a la sesión: - - Durante la sesión: - - - Previo a la sesión: - - Durante la sesión: -
    -
  • assignmentLab 20: AJAX (Entrega lunes 12 de octubre, revisiones martes 13 [y entrega final miércoles 14])
  • -
-
-

- 10 -
(12 al 16 de octubre) -

-
- - - Durante la sesión: - - -
    -
  • workTrabajo en proyecto
  • -
-
-

- 11 -
(19 al 23 de octubre) -
-

-
-
    -
  • workTrabajo en proyecto
  • -
-
-
    -
  • starsPresentaciones de proyecto
  • -
- -
- -
-

- 12 -
(26 al 30 de octubre) -
-

-
-
    -
  • workTrabajo en proyecto
  • -
-
-
    -
  • assessmentExamen parcial
  • - -
-
- -
-

- 13 -
(2 al 6 de noviembre) -

-
- - - - -
    -
  • workTrabajo en proyecto
  • -
-
-

- 14 -
(9 al 13 de noviembre) -

-
-
    -
  • workTrabajo en proyecto
  • -
-
- Previo a la sesión: - - Durante la sesión: - - - Previo a la sesión: - - Durante la sesión: - -
-

- 15 -
(16 al 20 de noviembre) -
-

-
- - - -
    -
  • workTrabajo en proyecto
  • -
-
- -
-

- 16 -
(23 al 27 de noviembre) -
-

-
- - - - - -
    -
  • starsPresentaciones finales de proyecto
  • -
-
-
- - - - \ No newline at end of file diff --git a/backup/index_em19.html b/backup/index_em19.html deleted file mode 100644 index 5aa8217..0000000 --- a/backup/index_em19.html +++ /dev/null @@ -1,557 +0,0 @@ - - - - - - - - - - - - - - - - - Calendario | TC2005B Construcción de software y toma de decisiones - - - - - -
- - -
-
-

Calendario de actividades

-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Semana1ra sesión2da sesión3ra sesión
-

- 1 -
(14 al 18 de enero) -

-
- - - - - -
-

- 2 -
(21 al 25 de enero) -

-
- - - Previo a la sesión: - - Durante la sesión: - - - - -
-

- 3 -
(28 de enero al 1° de febrero) -
-

-
- - - - Durante la sesión: - - - -
-

- 4 -
(4 al 8 de febrero) -

-
- - - Previo a la sesión: - - Durante la sesión: - - - - -
    -
  • workTrabajo en proyecto
  • -
-
-

- 5 -
(11 al 15 de febrero) -

-
- - - Previo a la sesión: - - Durante la sesión: - - - - -
    -
  • workTrabajo en proyecto
  • -
-
-

- 6 -
(18 al 22 de febrero) -

-
-
    -
  • assessmentExamen parcial
  • -
-
- Previo a la sesión: - - Durante la sesión: - - - -
    -
  • starsPresentaciones de proyecto
  • -
  • doneRevisión y entrega de calificaciones
  • -
-
-

- 7 -
(25 de febrero al 1° de marzo) -

-
- - - - - - Previo a la sesión: - - Durante la sesión: - -
-

- 8 -
(4 al 8 de marzo) -

-
- - - Previo a la sesión: - - - Durante la sesión: - - - - -
-

- 9 -
(11 al 15 de marzo) -

-
- - - Previo a la sesión: - - Durante la sesión: - - - -
-

- 10 -
(18 al 22 de marzo) -

-
- - - Durante la sesión: - - - -
-

- 11 -
(25 al 29 de marzo) -
-

-
-
    -
  • workTrabajo en proyecto
  • -
-
-
    -
  • starsPresentaciones de proyecto
  • -
- -
-
    -
  • assessmentExamen parcial
  • - -
-
-

- 12 -
(1° al 5 de abril) -

-
- - - - - -
-

- 13 -
(8 al 12 de abril) -
-

-
- - - Previo a la sesión: - - Durante la sesión: -
    -
  • workTrabajo en proyecto
  • - -
-
- -
-

-
(15 al 19 de abril) -

-
- Vacaciones -
-

- 14 -
(22 al 26 de abril) -

-
- - - - -
    -
  • workTrabajo en proyecto
  • -
-
-
    -
  • workTrabajo en proyecto
  • -
-
-

- 15 -
(29 de abril al 3 de mayo) -
-

-
- -
    -
  • workTrabajo en proyecto
  • -
-
- ASUETO - - -
-

- 16 -
(6 al 10 de mayo) -
-

-
-
    -
  • workTrabajo en el proyecto
  • - -
-
-
    -
  • question_answerSesión de cierre del curso
  • -
-
-
    -
  • starsPresentaciones finales de proyecto
  • -
-
-
- - - - \ No newline at end of file diff --git a/backup/index_fj20.html b/backup/index_fj20.html deleted file mode 100644 index 5131685..0000000 --- a/backup/index_fj20.html +++ /dev/null @@ -1,569 +0,0 @@ - - - - - - - - - - - - - - - - - Calendario | TC2005B Construcción de software y toma de decisiones - - - - - -
- - -
-
-

Calendario de actividades

-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Semana1ra sesión2da sesión3ra sesión
-

- 1 -
(10 al 14 de febrero) -

-
- - - - - -
-

- 2 -
(17 al 21 de febrero) -

-
- - - Previo a la sesión: - - Durante la sesión: - - - - -
-

- 3 -
(24 al 28 de febrero) -
-

-
- - - - Durante la sesión: - - - -
-

- 4 -
(2 de marzo al 6 de marzo) -

-
- - - Previo a la sesión: - - Durante la sesión: - - - - -
    -
  • workTrabajo en proyecto
  • -
-
-

- 5 -
(9 al 13 de marzo) -

-
- - - Previo a la sesión: - - Durante la sesión: - - - - -
    -
  • workTrabajo en proyecto
  • -
-
-

- 6 -
(16 al 20 de marzo) -

-
-
    -
  • assessmentExamen parcial
  • -
-
- Previo a la sesión: - - Durante la sesión: - - - -
    -
  • starsPresentaciones de proyecto
  • -
  • doneRevisión y entrega de calificaciones
  • -
-
-

- 7 -
(23 al 27 de marzo) -

-
- - - - - - Previo a la sesión: - - Durante la sesión: - -
-

- 8 -
(30 de marzo al 3 de abril) -

-
- - - - Previo a la sesión: - - - Durante la sesión: - - - - - -
-

- i -
(6 al 10 de abril) -

-
- Vacaciones Semana Santa -
-

- 9 -
(13 al 17 de abril) -
-

-
- - - Previo a la sesión: - - Durante la sesión: - - - -
-

- 10 -
(20 al 24 de abril) -

-
- - - - -
    -
  • workTrabajo en proyecto
  • -
-
-

- 11 -
(27 de abril al 1 de mayo) -

-
-
    -
  • assessmentExamen parcial
  • -
-
-
    -
  • starsPresentaciones de proyecto
  • -
-
-
    -
  • event_busyAsueto
  • -
-
-

- 12 -
(4 al 8 de mayo) -
-

-
- - - - - -
-

- 13 -
(11 al 15 de mayo) -

-
- - - Previo a la sesión: - - Durante la sesión: - - - -
-

- 14 -
(18 al 22 de mayo) -

-
-
    -
  • workTrabajo en proyecto
  • -
- -
-
    -
  • workTrabajo en proyecto
  • -
-
-
    -
  • workTrabajo en proyecto
  • -
-
-

- 15 -
(25 al 29 de mayo) -

-
-
    -
  • workTrabajo en proyecto
  • -
- -
-
    -
  • workTrabajo en proyecto
  • -
-
-
    -
  • workTrabajo en proyecto
  • -
-
-

- 16 -
(1° al 5 de mayo) -

-
- - - - - -
    -
  • question_answerSesión de cierre del curso
  • -
  • workTrabajo en proyecto
  • -
-
-
    -
  • starsPresentaciones finales de proyecto
  • -
-
-
- - - - \ No newline at end of file diff --git a/backup/index_fj21.html b/backup/index_fj21.html deleted file mode 100644 index 3d4989b..0000000 --- a/backup/index_fj21.html +++ /dev/null @@ -1,632 +0,0 @@ - - - - - - - - - - - - - - - - - Calendario | TC2005B Construcción de Software - - - - - -
- - - -
-
-
-
-

Calendario de actividades

-
infoLiga de zoom para las sesiones de clase: https://itesm.zoom.us/j/82844102281
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SemanaLunesMartesJuevesViernes
-

- 1 -
(8 al 12 de febrero) -

-
- - - - - - - -
-

- 2 -
(15 al 19 de febrero) -

-
- - - Previo a la sesión: - -
-
- -
- - - -
-

- 3 -
(22 al 26 de febrero) -
-

-
- Previo a la sesión: - -
-
- -
- - - Previo a la sesión: - -
-
- -
-
    -
  • starsPresentación de avance proyecto 2, retroalimentación y corrección [4h]
  • - -
-
-

- 4 -
(1 al 5 de marzo) -

-
- - - Previo a la sesión: - -
-
- -
- Previo a la sesión: - -
-
- -
-
    -
  • starsEntrega y validación de avance proyecto 3, retroalimentación y corrección [4h]
  • -
  • checkEvaluación de competencias
  • -
-
-

- 5 -
(8 al 12 de marzo) -

-
- Previo a la sesión: - -
-
- -
- Previo a la sesión: - -
-
- -
- - -
    -
  • starsTaller de toma de decisiones estratégicas en organizaciones [2h]
  • -
  • starsValidación de avance proyecto, retroalimentación y corrección [2h]
  • -
  • checkEvaluación de competencias
  • -
-
-

- 6 - Semana Tec -
(15 al 19 de marzo) -

-
-
    -
  • event_busySemana Tec
  • -
-
-

- 7 -
(22 al 26 de marzo) -

-
- - - - - - - -
-

- Vacaciones -
(29 de marzo al 2 de abril) -

-
-
    -
  • event_busyVacaciones Semana Santa
  • -
-
-

- 8 -
(5 al 9 de abril) -

-
- Previo a la sesión: - -
-
- -
- - - - -
    -
  • starsTaller de introducción a Angular [2h]
  • -
    -
  • starsTaller de seguridad [1h]
  • -
    -
  • starsValidación de avance proyecto, retroalimentación y corrección [1h]
  • - -
  • checkEvaluación de competencias
  • -
-
-

- 9 -
(12 al 16 de abril) -

-
- - - - - -
    -
  • speaker_notesPruebas de pensamiento en voz alta [2h]
  • -
    -
  • workTrabajo en proyecto [2h]
  • -
-
-
    -
  • starsPresentación de avance proyecto 5, retroalimentación y corrección [4h]
  • -
  • checkEvaluación de competencias
  • -
-
-

- 10 -
(19 al 23 de abril) -
-

-
- - - - - - - -
-

- 11 -
(26 al 30 de abril) -
-

-
-
    -
  • workTrabajo en proyecto [4h]
  • -
  • checkEvaluación de competencias
  • -
-
-
    -
  • info_outlineLímite para dar de baja el bloque
  • -
  • workTrabajo en proyecto [4h]
  • -
  • checkEvaluación de competencias
  • -
-
- - -
    -
  • starsPresentaciones finales de proyecto [4h]
  • -
  • checkEvaluación de competencias
  • -
  • info_outlineLímite para reportar calificaciones
  • -
-
-

- 12 - Semana Tec -
(3 al 7 de mayo) -

-
-
    -
  • event_busySemana Tec
  • -
-
-
- - - - - - \ No newline at end of file diff --git a/backup/jurassicpark.html b/backup/jurassicpark.html deleted file mode 100644 index e12476e..0000000 --- a/backup/jurassicpark.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - - - - - - - Examen de segundo parcial: Welcome to Jurassic Park - - - -
- -
- - - -
- -
-

Examen de segundo parcial: Welcome to Jurassic Park

-
- -
-
Código de ética
- "Apegándome al Código de Ética de los Estudiantes del Tecnológico de Monterrey, me comprometo a que mi actuación en esta actividad de evaluación esté regida por la honestidad académica. En congruencia con el mismo, realizaré esta actividad de forma honesta y personal, para reflejar a través de ella mis conocimientos y competencias." -
-
- -
-
Información
- - - -

Welcome to Jurassic Park.

-
- -
-

El barco sale de la isla a las 12:55pm. Cuentas con 170 minutos.

-
-
- -
-
- - Modalidad -
-

- Individual. -
-

-
-
- -
-
- - Competencias a observar
-
    -
  • 2. Implementa sistemas de bases de datos que satisfacen requisitos de información y permiten la escalabilidad del sistema
  • -
  • 4. Desarrolla aplicaciones web con interacción asíncrona con el servidor y que consumen servicios web
  • -
-
-
- -
-
Instrucciones
-
    -
  • - Para observar el nivel mínimo de desarrollo de competencias esperado hasta este punto: -

    Monitorear la seguridad del Parque Jurásico (aka Jurassic Park) debe ser una tarea 24/7 y debe poder realizarse no sólo desde el War Room, sino desde cualquier lugar del mundo. Tu misión como “System Velociraptor” y tu actitud “It’s a UNIX System, I know this” consiste en elaborar una aplicación web para monitorear la excelente ;) ;) seguridad del parque.

    -
    - -
    -

    La aplicación debe permitir a cualquier persona registrar un incidente de seguridad. El incidente debe contener la hora y fecha del incidente, el lugar del incidente y el tipo de incidente. El lugar y el tipo de incidente deben estar en tablas independientes en la base de datos. Así, si el parque se expande, las formas del sitio no tendrán que reprogramarse.

    -

    Los lugares del incidente inicialmente deben ser: Centro turístico, Laboratorios, Restaurante, Centro operativo, Triceratops, Dilofosaurios, Velociraptors, TRex, Planicie de los herbívoros.

    -

    Los tipos de incidente inicialmente deben ser: Falla eléctrica, Fuga de herbívoro, Fuga de Velociraptors, Fuga de TRex, Robo de ADN, Auto descompuesto, Visitantes en zona no autorizada.

    -

    Debido a la nueva política de la empresa "Comunicación abierta y honesta dentro y fuera de nuestra empresa”, la aplicación debe permitir a cualquier persona consultar los registros de incidentes del más reciente al más antiguo.

    - -

    Nota 1: Recuerda que puedes manejar el guardado de las fechas y horas directamente con el motor de la base de datos, es decir, no necesitas un datepicker para manejar las fechas, ni generar la fecha desde php.

    -

    Nota 2: El examen es abierto, puedes consultar cualquier referencia (excepto comunicarte con tus compañeros).

    -
  • -
  • - Para obtener los grados más altos esperados en el desarrollo de competencias: -

    Idealmente, la aplicación debe ser una RIA (Rich Internet Application), es decir, las interacciones con el servidor deben ser asíncronas.

    -

    Idealmente las interacciones con la base de datos deben ser por medio de procedimientos almacenados.

    -
  • -
-
-
- -
-
- - Entregables por mensaje directo de slack a edjuarezp -
-

1. URL de la aplicación funcionando

-

2. Enlace al repositorio con el código. Dentro del código debe estar el script de creación de la base de datos, y el script con los procedimientos almacenados.

-

3. En la página principal del repositorio se debe indicar dónde están los scripts de creación de la base de datos y de los procedimientos almacenados, así como los archivos de código donde se invocan los procedimientos almacenados. -

-
-
- - -
-
- assessment - Evaluación -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
CompetenciaNivel “Welcome to Jurassic Park” (Practicante)Nivel “It’s a dinosaur” (Ing. Junior)Nivel “We are going to make a fortune with this place” (Ing. Senior)Nivel “It’s a UNIX System, I know this” (Arquitecto)
2. Implementa sistemas de bases de datos que satisfacen requisitos de información y permiten la escalabilidad del sistemaNo hay evidencia de implementación de sistemas de bases de datosDiseña un modelo de datos que atiende de manera parcial las necesidades de información de un sistema de cómputo.Diseña un modelo de datos que atiende las necesidades de información de un sistema de cómputo considerando los posibles cambios que se presenten en el futuro. Es evidente el uso adecuado de consultas para la extracción de datos.Diseña un modelo de datos que atiende las necesidades de información de un sistema de cómputo considerando los posibles cambios que se presenten en el futuro. Es evidente el uso adecuado de consultas para la extracción de datos. Hay técnicas de automatización para creación de estructuras de bases de datos, cargas masivas de datos y procedimientos almacenados.
4. Desarrolla aplicaciones web con interacción asíncrona con el servidor y que consumen servicios webNo hay evidencia del desarrollo de una aplicación con comunicación entre un cliente y un servidorDesarrolla aplicaciones web sencillas con un uso adecuado de las peticiones HTTP, manejo correcto de sesiones, estilo arquitectónico MVC e interacción con una base de datos con operaciones para crear, modificar y borrar datos, así como consultas complejas y un nivel básico de seguridad.Desarrolla aplicaciones web enriquecidas con un uso adecuado de las peticiones HTTP, manejo correcto de sesiones, estilo arquitectónico MVC e interacción con una base de datos con operaciones para crear, modificar y borrar datos, así como consultas complejas, un nivel básico de seguridad e interacción asíncrona para las características usadas más frecuentemente.Se evalúa hasta el periodo final.
-
-
-
-
- - - - - - - - - - \ No newline at end of file diff --git a/backup/lab0Slack.html b/backup/lab0Slack.html deleted file mode 100644 index a73a25a..0000000 --- a/backup/lab0Slack.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - - - - - - - Laboratorio 0: Presentación en la plataforma de comunicación - - - -
- -
- -
- -
-
-

Laboratorio 0: Presentación en la plataforma de comunicación.

-
-
- -
-
-
- info_outline - Actividad: Presentación en la plataforma de comunicación. -
-

En esta actividad te presentarás en el canal de comunicación del curso edjuarezp.slack.com

-
-
- -
-
- group - Modalidad -
-

Individual.

-
-
- -
-
- check - Objetivos
-
    -
  • Que todos los miembros del grupo se conozcan e identifiquen en la plataforma de comunicación.
  • -
  • Explorar la plataforma de comunicación del curso: Discord
  • -
-
-
- -
-
- list - Instrucciones
-
    - -
  • Ingresa a Discord y crea tu usuario con tu correo del Tec.
  • -
  • Una vez dentro de la plataforma, sigue el tutorial de uso que la misma plataforma te presenta la primera vez que la utilizas. -
  • -
  • Edita tu perfil y agrega una foto para que el profesor y tus compañeros te ubiquen tanto en el aula como en la plataforma. Se recomienda que configures las preferencias sobre los correos y notificaciones que recibes de la plataforma. -
  • -
  • De manera automática te unirás al canal del curso #general , el cual servirá como medio oficial de comunicación. -
  • -
  • Preséntate en tu primer mensaje en el grupo, incluyendo: -
      -
    • Algunas de tus aficiones e intereses que desees compartir.
    • -
    • Tu experiencia previa en construcción de software si es que cuentas con ella.
    • -
    • Tus compromisos como miembro de un equipo de desarrollo este semestre.
    • -
    • Tus expectativas del curso.
    • -
    -
  • -
  • Registra también en tu malla la información anterior, y una vez que termines, puedes marcar como completado este laboratorio. -
  • -
  • Utiliza el canal de manera frecuente para preguntar tus dudas, apoyar a tus compañeros resolviendo sus dudas y retroalimentarlos, además de compartir cualquier enlace relevante relacionado con el curso. La idea es formar una comunidad activa de aprendizaje. -
  • -
  • Para cualquier duda sobre evaluaciones o cualquier aspecto que deba ser tratado en privado sólo con el profesor, puedes enviarle un mensaje directo. -
  • -
-
-
- -
-
attachmentRecursos
-
-
- -
-
- offline_pin - Especificaciones de entrega -
-

No aplica.

-
-
- -
-
- - - - - - - - - - \ No newline at end of file diff --git a/backup/lab10phpBD.html b/backup/lab10phpBD.html deleted file mode 100644 index 77553a3..0000000 --- a/backup/lab10phpBD.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - - - - - Lab 10: Manejo de sesiones con php - - - -
- -
- - - -
-
- -

Lab 10: Manejo de sesiones con php

-
-
- -
- -
-
- - Descripción -
-

En esta actividad veremos cómo manejar sesiones, y subir archivos con php.

-
- -
-
- - Modalidad -
-

- Individual.
-

-
- -
-
- - Objetivos de aprendizaje
-
    -
  • Continuar con el dominio del lenguaje php
  • -
  • Aprender a hacer consultas y manipular registros de una - bases de datos con php
  • -
  • Conocer la capa de datos de una arquitectura multicapas
  • -
-
- -
-
- - Instrucciones
-
    -
  • Completa los tutoriales de php y bases de datos en http://www.w3schools.com/php/php_mysql_intro.asp
  • -
  • Revisa la presentación Multitier - Aplication Architecture-The Model
  • -
  • Desarrolla tu propia biblioteca util.php tomando como base el ejemplo de la presentación. Modifica las funciones según tus necesidades e incrementa su funcionalidad.
  • -
  • Utilizando alguno de tus laboratorios anteriores (o si lo prefieres empieza de 0), con ayuda de tu biblioteca, elabora una aplicación php que procese al menos una forma e interactúe con una base de datos para insertar un registro, y posteriormente haga una consulta de los registros de una tabla. -
      -
    • Utiliza una arquitectura MVC
    • -
    • Debes de validar los datos del lado del servidor, si hay - alguno incorrecto o faltante, la aplicación debe mostrar los - mensajes correspondientes en la forma para que el usuario - pueda corregirlos. También debe realizar validaciones al - insertar el registro en la base de datos.
    • -
    • Si los datos de la forma son correctos la aplicación debe - llevar a cabo algún procesamiento de los datos y presentar - la información en una página html5.
    • -
    • La aplicación debe tener coherencia y cierto nivel de - complejidad.
    • -
    • Recuerda que tu aplicación debe ser agradable para el - usuario, debe tener un CSS (y posiblemente JavaScript), y - que las preguntas deben contestarse en alguna página dentro - de tu sitio.
    • -
    • Aparte de los archivos php, html, scss, js que pudiera - utilizar tu aplicación, entrega también el script de - creación de la bd de datos.
  • -
-
- -
-
- - Preguntas a responder -
-
    -
  • ¿Por qué es una buena práctica separar el modelo del - controlador?.
  • -
  • ¿Qué es ODBC y para qué es útil?
  • -
  • ¿Qué técnicas puedes utilizar para evitar ataques de SQL - Injection?
  • -
-
- - -
-
- - Especificaciones de entrega -
-

A través de Bitbucket

-
-
- - - -
-
- - - - - - - - -2 \ No newline at end of file diff --git a/backup/lab10rutas_formas.html b/backup/lab10rutas_formas.html deleted file mode 100644 index 4da679b..0000000 --- a/backup/lab10rutas_formas.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - - - - - - - - Lab 10: Rutas y formas - - - -
- -
- - - -
-
-

Lab 10: Rutas y formas

-
- - -
-
- - Descripción -
-

En esta actividad veremos cómo programar desde el servidor un módulo simple de ruteo y cómo mandarle datos al servidor.

-
-
- -
-
- - Modalidad -
-

- Individual. -
-

-
-
- -
-
- - Objetivos de aprendizaje
-
    -
  • Entender cómo responder desde el servidor a las diferentes rutas para poder diseñar y programar el ruteo de una aplicación.
  • -
  • Entender las diferentes maneras de enviar datos a un servidor por medio de HTTP, para poder realizar un procesamiento con estos datos.
  • -
  • Entender cómo funciona el ambiente de ejecución de Node.js, y su forma asíncrona de manejo de eventos.
  • -
-
-
- -
-
- - Instrucciones
-
    - -
  • Sigue la demostración del profesor en la sesión de clase.
  • -
  • Utilizando alguno de tus laboratorios anteriores (o si lo prefieres empieza de 0), elabora una aplicación web con las siguientes características: -
      -
    • La aplicación debe poder responder al menos a 3 rutas diferentes, y mandar una respuesta HTTP 404 cuando la ruta no existe.
    • -
    • En alguna de las rutas, la aplicación debe contener al menos 1 forma que debe enviar datos al servidor por POST. El servidor debe reaccionar ante este envío y guardar los datos en un archivo de texto dentro del mismo servidor.
    • - -
    -
  • -
-
-
- -
-
- - Preguntas a responder -
-
    - -
- - -
-
- -
-
- - Especificaciones de entrega -
-

A través de tu repositorio personal.

-
-
- -
-
- - - - - - - - - - diff --git a/backup/lab11express.html b/backup/lab11express.html deleted file mode 100644 index 004cdf5..0000000 --- a/backup/lab11express.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - - - - - - - - - - - Lab 11: Express - -1 - -
- -
- - - -
-
-

Lab 11: Express

-
- - -
-
- - Descripción -
-

En esta actividad instalaremos y exploraremos Express, un framework de Node.js para hacer desarrollo en el back-end.

-
-
- -
-
- - Modalidad -
-

- Individual. -
-

-
-
- -
-
- - Objetivos de aprendizaje
-
    -
  • Preparar el ambiente de trabajo con Node.js + NPM + Express
  • -
  • Entender lo que son los frameworks de desarrollo web de back-end.
  • -
  • Explorar Node.js + Express
  • -
-
-
- -
-
- - Instrucciones
-
    -
  • Verifica que ya cuentes con npm ejecutando el comando npm -V. En caso negativo, instala npm y node.
  • -
  • Haz que tu trabajo sea un proyecto de npm ejecutando npm init desde tu carpeta de trabajo, y sigue las indicaciones del comando.
    Observa y analiza el contenido del archivo package.json
  • -
  • Si deseas instalar nuevos paquetes, utiliza npm install [nombre_paquete]. Puedes probar con npm install --save-dev nodemon, un paquete que sirve para que automáticamente se reinicie el servidor cada vez que haces un cambio en un archivo.
    El argumento --save-dev sirve para que sólo se instale el paquete mientras te encuentras en el entorno de desarrollo. Observa nuevamente el archivo package.json, y notarás que algunas líneas ahora incluyen nodemon, particularmente "start": "nodemon app.js". Si no existe, modifica la sección scripts para incluirla. Ahora podrás iniciar el servidor con npm start, que iniciará nodemon.
  • -
  • Instala Express desde tu carpeta de trabajo con npm install --save express.
    - Observa que utilizamos --save para que el paquete esté disponible tanto en desarrollo como en producción.
  • - - - -
  • Sigue la demostración del profesor en la sesión de clase.
  • - -
  • Estructura básica de una aplicación con express: -

    -

    -const express = require('express');
    -const app = express();
    -
    -//Middleware
    -app.use((request, response, next) => {
    -    console.log('Middleware!');
    -    next(); //Le permite a la petición avanzar hacia el siguiente middleware
    -});
    -
    -app.use((request, response, next) => {
    -    console.log('Otro middleware!');
    -    response.send('¡Hola mundo!'); //Manda la respuesta
    -});
    -
    -app.listen(3000);
    -                            
    - -

    -
  • - -
  • Para agregar rutas: -

    -

    -app.use('/ruta', (request, response, next) => {
    -    response.send('Respuesta de la ruta "/ruta"'); 
    -});
    -                            
    - -

    -
  • -
  • Para instalar un paquete para manipular fácilmente los datos de las peticiones: npm install --save body-parser. Para utilizar el paquete: -
    -const bodyParser = require('body-parser');
    -
    -app.use(bodyParser.urlencoded({extended: false}));
    -
    -app.use('/alguna-ruta', (request, response, next) => {
    -    console.log(request.body);
    -});
    -                        
    -
    -
  • - -
  • Para limitar las rutas a un tipo de petición en particular, en lugar de use(), puedes usar, por ejemplo, get() o post().
  • - -
  • Si los archivos comienzan a crecer, es importante reestructurarlos semánticamente en módulos para que sean más fáciles de mantener. Puedes separar un archivo en express utilizando el ruteador de express. Por convención, crearemos el nuevo archivo en una carpeta routes: -
    -const express = require('express');
    -
    -const router = express.Router();
    -
    -router.get('/ruta', (request, response, next) => {
    -    response.send('Respuesta de la ruta "/modulo/ruta"'); 
    -});
    -
    -module.exports = router;
    -                        
    -
    - Y el archivo principal quedaría: -
    -const express = require('express');
    -const app = express();
    -
    -const misRutas = require('./routes/nombre_archivo');
    -
    -app.use('/modulo', misRutas);
    -
    -app.listen(3000);
    -                        
    -
  • - -
  • Para determinar el estado HTTP de una respuesta, puedes utilizar el método status() en el objeto de la respuesta.
  • -
  • Utilizando alguno de tus laboratorios anteriores (o si lo prefieres empieza de 0), elabora una aplicación web con las siguientes características: -
      -
    • La aplicación debe poder responder al menos a 5 rutas diferentes, distribuidas en al menos 2 módulos, y mandar una respuesta HTTP 404 cuando la ruta no existe.
    • -
    • En alguna de las rutas, la aplicación debe contener al menos 1 forma que debe enviar datos al servidor por POST. El servidor debe reaccionar ante este envío y guardar los datos en un archivo de texto dentro del mismo servidor.
    • - -
    -
  • -
-
-
- -
-
- - Preguntas a responder -
-
    -
  • Describe el archivo package.json.
  • -
- -
-
Recursos
- -
-
-
- -
-
- - Especificaciones de entrega -
-

A través de tu repositorio personal.

-
-
- -
-
- - - - - - - - - - diff --git a/backup/lab12Servlets.html b/backup/lab12Servlets.html deleted file mode 100644 index 30c76cf..0000000 --- a/backup/lab12Servlets.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - Actividad - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Actividad: Lab 14: Introduccin a JEE
- Mdulo: Paradigmas y aplicaciones cliente-servidor
Descripcin
-
    -
  • En esta actividad haremos una introduccin al enfoque de - Java sobre las aplicaciones web, llamado JEE.
  • -
-
Modalidad
-
    -
  • Individual.
  • -
-
Objetivos de la - actividad
-
    -
  • Que instales un ambiente de desarrollo y sevidor de - aplicaciones JEE
  • -
  • Que conozcas las tecnologas JEE
  • -
  • Realizar una aplicacin con tecnologas JEE
  • -
-
Instrucciones
-
    -
  • Revisa junto con tu profesor la presentacin Introduccin a JEE.
  • -
  • Descarga e instala Netbeans de - https://netbeans.org/downloads/ (alguna versin que - incluya Java EE).
  • -
  • Realiza el ejercicio de la presentacin y en contesta la - pregunta en algn lugar dentro del sitio, ya sea que la - despliegues dentro del mismo servlet, o bien incluyas un - enlace a otra pgina donde muestres la pregunta y su - respuesta. Entrega tu sitio por Blackboard.
  • -
      -
    -
-

Preguntas

-
    -
  • Qu relacin tiene un servlet con la arquitectura MVC?
  • -
-
    -
-
    -
-
Recursos
- -
Especificaciones de - entrega
-
    -
  • A travs de Blackboard
  • -
-
DR Tecnolgico de Monterrey Campus Quertaro| - Departamento de Desarrollo Acadmico| Mxico, 2012
-
- - diff --git a/backup/lab12ServletsDB.html b/backup/lab12ServletsDB.html deleted file mode 100644 index b1ea305..0000000 --- a/backup/lab12ServletsDB.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - Actividad - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Actividad: Lab 15: JEE y Bases de datos
- Mdulo: Paradigmas y aplicaciones cliente-servidor
Descripcin
-
    -
  • En esta actividad interactuaremos con una base de datos - utilizando tecnologas JEE.
  • -
-
Modalidad
-
    -
  • Individual.
  • -
-
Objetivos de la - actividad
-
    -
  • Que conozcas las tecnologas JEE
  • -
  • Realizar una aplicacin con tecnologas JEE
  • -
  • Interactuar con una base de datos a travs de tecnologas - JEE
  • -
-
Instrucciones
- -

Preguntas

-
    -
  • Qu diferencias en cuanto a desempeo observas con respecto - a php? a qu se deben estas diferencias?
  • -
  • Qu ventajas observas que tiene JEE sobre php?
  • -
  • Pensando en tu proyecto anterior, y considerando que ahora - conoces la tecnologa JEE, en qu lo desarrollaras y por qu - razones?
  • -
-
    -
-
    -
-
Recursos
-
    -

  • -
  • -
-
Especificaciones de - entrega
-
    -
  • A travs de Blackboard
  • -
-
DR Tecnolgico de Monterrey Campus Quertaro| - Departamento de Desarrollo Acadmico| Mxico, 2012
-
- - diff --git a/backup/lab12html_dinamico.html b/backup/lab12html_dinamico.html deleted file mode 100644 index 6e5fdef..0000000 --- a/backup/lab12html_dinamico.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - - - - - - - - - Lab 12: HTML dinámico - - - -
- -
- - - -
-
-

Lab 12: HTML dinámico

-
- - -
-
- - Descripción -
-

En esta actividad instalaremos y exploraremos cómo generar HTML dinámico desde el back-end.

-
-
- -
-
- - Modalidad -
-

- Individual. -
-

-
-
- -
-
- - Objetivos de aprendizaje
-
    -
  • Generar desde el back-end, interfaces dinámicas HTML5 para el cliente por medio de un motor de templates y que incorporen partials.
  • -
-
-
- -
-
- - Instrucciones
-
    -
  • Recuerda que para generar una aplicación es necesario inicializar el proyecto con npm init, e instalar express y body-parser con npm install --save [nombre_paquete]. Si es necesario, recuerda configurar el archivo package.json para incluir el script que quieres que se ejecute con npm start.
  • - - - -
  • Sigue la demostración del profesor en la sesión de clase.
  • - -
  • Para devolver como respuesta un archivo html desde express, se requiere el módulo path, puedes incorporarlo con const path = require('path'); al inicio de tus archivos de código.
    - Por convención, los archivos HTML se guardan en un directorio llamado views, en referencia a la capa de la vista de un estilo arquitectónio MVC. Para devolver un archivo HTML, se realiza de la siguiente forma: -

    -

    -router.get('/una-ruta', (request, response, next) => {
    -    response.sendFile(path.join(__dirname, '..', 'views', 'el-archivo.html'));
    -});
    -                            
    - -

    - La función join sirve para armar la ruta, y la ventaja que tiene sobre hacerlo manualmente, es que considera el sistema operativo donde el código resida para que no tengas problemas si estás en MacOS, Linux o Windows. -
    - La variable global __dirname, contiene el directorio del sistema de archivos donde se encuentra tu aplicación, y el resto de los argumentos son cada uno de los directorios para llegar al archivo. Observa que después de __dirname, el argumento es '..' debido a que si estás en una carpeta de alguno de tus módulos, subirás un nivel en los directorios para llegar al nivel raíz y de ahí viajar a la carpeta views, para finalmente llegar al archivo el-archivo.html. -
  • - -
  • Por defecto, nuestro servidor no puede entregar un CSS como respuesta, entonces es necesario decirle que cuando un documento HTML requiere de un CSS, este archivo se mande de manera estática. Para ello debemos de configurar una carpeta de archivos estáticos, por conveción la llamaremos public, y al folder donde pondremos los archivos css lo llamaremos css. Para poder incluirlos dentro de los HTML lo podemos hacer con el método static de express: -

    -

    -app.use(express.static(path.join(__dirname, 'public')));
    -                            
    - -

    -
  • - -
  • Utilizando alguno de tus laboratorios anteriores (o si lo prefieres empieza de 0), elabora una aplicación web con las siguientes características: -
      -
    • La aplicación debe poder responder al menos a 5 rutas diferentes, distribuidas en al menos 2 módulos, y mandar una respuesta HTTP 404 cuando la ruta no existe.
    • -
    • En alguna de las rutas, la aplicación debe contener al menos 1 forma que debe enviar datos al servidor por POST. El servidor debe reaccionar ante este envío y guardar los datos en un archivo de texto dentro del mismo servidor.
    • - -
    -
  • -
  • Vamos a utilizar EJS como motor de templates para generar html de manera dinámica. Este motor lo estaremos usando en los ejemplos, pero eres libre de utilizar alguno diferente en tus laboratorios y proyecto.
  • -
  • Para instalar EJS: npm install --save ejs. -
  • -
  • Para configurar EJS en Express, debemos indicarle a Express que vamos a utilizar como motor para la capa de las vistas EJS, y en seguida indicar por medio de una variable de configuración de Express, la carpeta donde estarán almacenados los archivos html correspondientes a las vistas, por convención, utilizaremos la carpeta views: -
    -app.set('view engine', 'ejs');
    -app.set('views', 'views');
    -
  • -
  • - Los archivos EJS (.ejs), son archivos que en su mayoría contienen código HTML, pero que también permiten escribir código JS, utilizando tags con el símbolo % de la siguiente forma: <% código de javascript %>.
    - Para desplegar un template de EJS, lo hacemos con el método render, y como argumento ponemos el nombre del archivo .ejs sin poner la extensión del arhivo: -
    -router.get('/una-ruta', (request, response, next) => {
    -    response.render('vista_ejs');
    -});
    -                        
    - Para escribir una variable en la vista, primero debemos de pasarle a la vista un objeto de javascript con los nombres y valores de las variables: -
    -router.get('/una-ruta', (request, response, next) => {
    -    response.render('vista_ejs', {variable: valor});
    -});
    -                        
    - Y finalmente, para imprimir la variable en la vista utilizamos el operador =: -
    -<%= nombre_variable %>
    -                        
  • -
  • - Así como imprimimos variables, también podemos poner código de estructuras de control, por ejemplo: -
    -<% if (arreglo.length > 0) { %>
    -    <ul>
    -        <% for (let elemento of arreglo) { %>
    -            <li><%= elemento.atributo %></li>
    -        <% } %>
    -    </ul>
    -<% } else { %>
    -    <h1>El arreglo está vacío</h1>
    -<% } %>   
    -                        
    -
  • -
  • Refactoriza tu aplicación para que mantenga la funcionalidad pero ahora trabaje con un motor de vistas.
  • -
  • Mejora tu aplicación para que en lugar de guardar los datos en un archivo, ahora los despliegue en una de las páginas.
  • -
  • - Como has podido experimentar, mantener las 5 páginas implica estar copiando y pegando pedazos de código HTML, lo cual es un proceso propenso a errores. Los motores de vistas como EJS, permiten reutilizar código sin la necesidad de estar copiando y pegando. Una estrategia para ello, es la utilización de partials, que son pedazos reutilizables de código de una vista. Por convención, dentro de la carpeta views, crearemos una carpeta includes en donde pondremos nuestroas partials.
    - Para incluir un partial en una vista: -
    -        <%- include('includes/head.ejs') %>
    -                        
    Observa el operador -. A diferencia del operador = que te protege de una inyección de código, el operador - no lo hace, pero esto es lo que permite que se inserte el código HTML de nuestro partial. -
  • -
  • Refactoriza tu aplicación para hacer un uso efectivo de los partials con aspectos como el código del head de tu aplicación, y quizás de la barra de navegación (si cuentas con una) y del footer.
  • -
- -
- -
-
- - Preguntas a responder -
-
    -
  • ¿Qué otros templating engines existen para node?
  • -
- -
-
Recursos
- -
-
-
- -
-
- - Especificaciones de entrega -
-

A través de tu repositorio personal.

-
-
- -
-
- - - - - - - - - - diff --git a/backup/lab12sesionesPhp.html b/backup/lab12sesionesPhp.html deleted file mode 100644 index 2a351ff..0000000 --- a/backup/lab12sesionesPhp.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - - - - - - Lab 12: Manejo de sesiones con php - - - -
- -
- - - -
-
- -

Lab 12: Manejo de sesiones con php

-
-
- -
- -
-
- - Descripción -
-

En esta actividad veremos cómo manejar sesiones, y subir archivos con php.

-
-
- -
-
- - Modalidad -
-

- Individual. -
-

-
-
- -
-
- - Objetivos de aprendizaje
-
    -
  • Continuar con el dominio del lenguaje php
  • -
  • Aprender a crear y validar sesiones con php
  • -
  • Aprender a manejar datos dentro de una sesión con php
  • -
  • Aprender a subir archivos a un servidor con html y php
  • -
-
-
- -
-
- - Instrucciones
-
    -
  • Completa el tutorial de manejo de sesiones con php en http://www.w3schools.com/php/php_sessions.asp. -
    -
  • -
  • Para profundizar en el tema, accede a la documentación oficial en http://php.net/manual/en/intro.session.php. Presta especial atención a la documentación de las funciones session_start(), session_unset(), y session_destroy().
  • -
  • Completa el tutorial sobre subida de archivos con php en http://www.w3schools.com/php/php_file_upload.asp. Presta especial atención al atributo enctype de la forma, su valor es indispensable para poder subir un archivo.
  • -
  • Revisa la documentación oficial sobre subidas de archivos en http://php.net/manual/en/features.file-upload.php.
  • -
  • Utilizando alguno de tus laboratorios anteriores (o si lo prefieres empieza de 0), elabora un mini sitio en el que manejes sesiones, y el usuario pueda subir una foto y posteriormente la pueda ver, como por ejemplo, un sitio donde el usuario requiera ejecutar una tarea que implique varios pasos. -
      -
    • Utiliza una arquitectura en capas, donde separes claramente la vista del controlador.
    • -
    • La aplicación debe tener coherencia y cierto nivel de complejidad.
    • -
    • La aplicación debe ser agradable para el usuario, debe tener un CSS propio o de terceros (y posiblemente javascript).
    • -
    • Las preguntas deben contestarse en alguna página dentro de tu sitio.
    • -
    -
  • -
-
-
- -
-
- - Preguntas a responder -
-
    -
  • ¿Por qué es importante hacer un session_unset() y luego un session_destroy()?
  • -
  • ¿Cuál es la diferencia entre una variable de sesión y una cookie?
  • -
  • ¿Qué técnicas se utilizan en sitios como facebook para que el usuario no sobreescriba sus fotos en el sistema de archivos cuando sube una foto con el mismo nombre?
  • -
  • ¿Qué es CSRF y cómo puede prevenirse?
  • -
-
-
- - -
-
- - Recursos -
- -
-
- -
-
- - Especificaciones de entrega -
-

A través de tu repositorio personal (Bitbucket o GitHub)

-
-
- -
-
- - - - - - - - - - diff --git a/backup/lab13mvc.html b/backup/lab13mvc.html deleted file mode 100644 index a84696e..0000000 --- a/backup/lab13mvc.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - - - - - - - Lab 13: MVC - - - -
- -
- - - -
-
-

Lab 13: MVC

-
- - -
-
- - Descripción -
-

En esta actividad exploraremos el estilo arquitectónico Modelo-Vista-Controlador y lo implementaremos con node+express.

-
-
- -
-
- - Modalidad -
-

- Individual. -
-

-
-
- -
-
- - Objetivos de aprendizaje
-
    -
  • Entender el estilo arquitectónico Modelo-Vista-Controlador.
  • -
  • Diseñar aplicaciones con un estilo arquitectónico Modelo-Vista-Controlador.
  • -
  • Implementar aplicaciones con un estilo arquitectónico Modelo-Vista-Controlador.
  • -
-
-
- -
-
- - Instrucciones
-
    -
  • Atiende a la explicación del profesor del tema MVC y pregunta tus dudas.
  • -
  • Recuerda que para generar una aplicación es necesario inicializar el proyecto con npm init, e instalar express, body-parser y un template engine como EJS con npm install --save [nombre_paquete]. Si es necesario, recuerda configurar el archivo package.json para incluir el script que quieres que se ejecute con npm start.
  • -
  • Por convención, nuestros controladores los pondremos en una carpeta controllers. Comenzaremos a mover la lógica que antes habíamos puesto en las vistas, hacia una variable que exportaremos del controlador. Utilizaremos de ejemplo el controlador a_controller.js: -
    -exports.action = (request, response, next) => {
    -    response.render('view_file', { 
    -        atribute_1: 'Data 1', 
    -        atribute_2: 'Data 2'
    -    });
    -};
    -
  • -
  • El archivo con la ruta quedará más ligero, ya que únicamente tendrán nuestra ruta y la referencia hacia el controlador que utilizarán, quedando de la siguiente forma: -
    -const aController = require('../controllers/a_controller');
    -
    -router.get('/add-product', aController.action);
    -
  • -
  • Para implementar la capa del modelo, por convención, utilizaremos una carpeta models. Ahí pondremos cada uno de los archivos de nuestro modelo. Es común tener un archivo de modelo por tabla de la base de datos. Un archivo de modelo, típicamente tiene la siguiente estructura: -
    -module.exports = class Game {
    -
    -    //Constructor de la clase. Sirve para crear un nuevo objeto, y en él se definen las propiedades del modelo
    -    constructor(my_value) {
    -        this.attribute_1 = my_value;
    -    }
    -
    -    //Este método servirá para guardar de manera persistente el nuevo objeto. 
    -    save() {
    -        
    -    }
    -
    -    //Este método servirá para devolver los objetos del almacenamiento persistente.
    -    static fetchAll() {
    -        
    -    }
    -
    -}
    -                    
    -

    Para usar el modelo en el controlador:

    -
    -const Game = require('../models/game');
    -
    -//Para crear un objeto de nuestro modelo
    -const game = new Game('Zelda');
    -game.save();
    -
    -//Para recuperar la lista de objetos del modelo
    -const games = Game.fetchAll();
    -                    
    -

    Por el momento, podemos utilizar un arreglo para almacenar la información, entonces en al archivo del modelo podemos crear un arreglo const games = [], llenar en método save() con games.push(this); y fetchAll() con return games;

    -
  • -
  • Refactoriza alguno de tus laboratorios anteriores o el avance de tu proyecto utilizando un estilo arquitectónico MVC. Otra opción es que crees una nueva aplicación utilizando este patrón.
  • -
  • Agrega una nueva funcionalidad que toque todos los puntos clave de la arquitectura.
  • -
- -
- -
-
- - Preguntas a responder -
-
    -
  • ¿Qué beneficios encuentras en el estilo MVC?
  • -
  • ¿Encuentras alguna desventaja en el estilo arquitectónico MVC?
  • -
- - -
-
- -
-
- - Especificaciones de entrega -
-

A través de tu repositorio personal.

-
-
- -
-
- - - - - - - - - - diff --git a/backup/lab14JSP.html b/backup/lab14JSP.html deleted file mode 100644 index d48ef5e..0000000 --- a/backup/lab14JSP.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - Actividad - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Actividad: Lab 14: JSP
- Mdulo: Paradigmas y aplicaciones cliente-servidor
Descripcin
-
    -
  • En esta actividad haremos una introduccin a las Java Server - Pages.
  • -
-
Modalidad
-
    -
  • Individual.
  • -
-
Objetivos de la - actividad
-
    -
  • Que conozcas las tecnologas JEE
  • -
  • Realizar una aplicacin con tecnologas JEE, utilizando JSP's.
  • -
-
Instrucciones
-
    -
  • Revisa la presentacin - Introduccin a JSP y realiza el - ejercicio. Deberas entregarlo por Blackboard.
  • -
  • Realiza una aplicacin sencilla utilizando JSP's. Puedes - tomar como base alguno de tus laboratorios anteriores.
  • -
      -
    • Recuerda que tu aplicacin debe ser agradable para el - usuario, y que las preguntas deben contestarse en alguna - pgina dentro de tu sitio.
    • -
    • Si utilizaste alguna base de datos, aparte de los archivos - de tu aplicacin, entrega tambin el script de creacin de - la base de datos.
    • -
    -
      -
    -
-

Preguntas

-
    -
  • Qu ventajas y desventajas tiene programar en una jsp sobre - un servlet?
  • -
  • Describe un buen estilo de arquitectura de software - utilizando jsp, servlets, y clases para interactuar con la - base de datos. Relacinalo con la arquitectura MVC. Puedes - utilizar un diagrama. Por qu es importante esta - arquitectura? Qu valor y qu desventajas presenta?
  • -
  • Qu ventajas y desventajas tiene el enfoque JEE sobre el - enfoque php con respecto a la implementacin de una - arquitectura de software MVC?
  • -
-
    -
-
    -
-
Recursos
-
    -

  • -
  • -
-
Especificaciones de - entrega
-
    -
  • A travs de Blackboard
  • -
-
DR Tecnolgico de Monterrey Campus Quertaro| - Departamento de Desarrollo Acadmico| Mxico, 2012
-
- - diff --git a/backup/lab14a.html b/backup/lab14a.html deleted file mode 100644 index 8c65e15..0000000 --- a/backup/lab14a.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - - - - - - - Lab 14: php y consultas dinámicas a la base de datos - - - -
- -
- - - -
-
- -

Lab 14: php y consultas dinámicas a la base de datos

-
-
- -
- -
-
- - Descripción -
-

En esta actividad conoceremos como conectarnos a una base de datos usando php.

-
-
- -
-
- - Modalidad -
-

- Individual. -
-

-
-
- -
-
- - Objetivos de aprendizaje
-
    -
  • Continuar con el dominio del lenguaje php
  • -
  • Aprender a hacer consultas y manipular registros de una bases de datos con php
  • -
-
- -
-
- - Instrucciones
-
    -
  • Completa los tutoriales de php y bases de datos en http://www.w3schools.com/php/php_mysql_intro.asp.
  • -
  • Utiliza una arquitectura MVC
  • -
  • Revisa la presentación Multitier - Aplication Architecture-The Model
  • -
  • Una vez que hayas completado los tutoriales y revisado la presentación, crearemos nuestra librería de manejo de base de datos. -
      -
    1. - 1.- Crea un nuevo archivo y llámalo util.php. -
    2. -
    3. - 2.- Haz una función llamada connectDb la cual validará que la conexión sea correcta. - -
    4. -
    5. - 3.- Haz una función llamada closeDB que recibirá como parámetro una conexión establecida previamente. - -
    6. -
    7. - 4.- Haz una función que te permita obtener todos los objetos de una base de datos. -
      En esta ocasión, siguiendo con mi tabla "fruit", regresaré todo lo que se encuentra ahí. - -
    8. -
    9. - 5.- Haz por lo menos dos funciones que hagan una consulta a la base de datos con algunos parametros. - -
    10. -
    11. - 6.- Despliega las funciones hechas anteriormente en algunas vistas. -
      - -
    12. -
    -
  • - -
-
- -
-
- - Preguntas a responder -
-
    -
  • ¿Qué es ODBC y para qué es útil?
  • -
  • ¿Qué es SQL Injection? -
  • -
  • ¿Qué técnicas puedes utilizar para evitar ataques de SQL Injection? -
  • -
-
- - -
-
- - Especificaciones de entrega -
-

A través de tu repositorio personal (Bitbucket o GitHub)

-
-
- - - -
-
- - - - - - - - - -2 diff --git a/backup/lab14sesiones.html b/backup/lab14sesiones.html deleted file mode 100644 index a32e67b..0000000 --- a/backup/lab14sesiones.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - Lab 14: Manejo de sesiones y cookies - - - -
- -
- - - -
-
-

Lab 14: Manejo de sesiones y cookies

-
- - -
-
- - Descripción -
-

En esta actividad exploraremos el manejo de sesiones y cookies con node+express.

-
-
- -
-
- - Modalidad -
-

- Individual. -
-

-
-
- -
-
- - Objetivos de aprendizaje
-
    -
  • Entender la manera en que funcionan las sesiones.
  • -
  • Entender la manera en que funcionan las cookies.
  • -
  • Implementar aplicaciones web que mantengan los datos a través de diferentes peticiones.
  • -
-
-
- -
-
- - Instrucciones
-
    -
  • Atiende a la explicación del profesor del tema sesiones y cookies y pregunta tus dudas.
  • -
  • Recuerda que para generar una aplicación es necesario inicializar el proyecto con npm init, e instalar express, body-parser y un template engine como EJS con npm install --save [nombre_paquete]. Si es necesario, recuerda configurar el archivo package.json para incluir el script que quieres que se ejecute con npm start.
  • -
  • Las cookies viajan en el header de la respuesta, por lo que para definir una cookie, lo podemos hacer en la capa del controlador por medio del método setHeader('Set-Cookie') de la respuesta HTTP: -
    -exports.accion = (request, response, next) => {
    -    response.setHeader('Set-Cookie', 'nombre_cookie', 'valor_cookie');
    -}
    -                        
    - A partir de que definimos una cookie, el navegador mandará en el header de la petición, todas las cookies que corresponden al sitio. Para acceder a las cookies en el controlador, lo podemos hacer por medio del header 'Cookie' de la petición: -
    -exports.accion = (request, response, next) => {
    -    request.get('Cookie');
    -}
    -                        
    -

    Para acceder a un valor de una cookie en particular, puedes hacer manipulando el string, por ejemplo con request.get('Cookie').split(';')[1].trim().split('=')[1]; o bien, con instalando algún módulo como cookie-parser.

    -
  • -
  • Además del valor, puedes agregarle más propiedades a la cookie como fecha de expiración, segundos de vida, el dominio al que quieres que se envíe, o la propiedad Secure, que sólo enviará la cookie si viaja por HTTPS.
    - Es importante tener cuidado con el uso de las cookies, ya que los usuarios pueden editarlas desde el navegador. Para que la cookie no pueda ser leída por el código js del navegador, se le puede agregar la propiedad HttpOnly. Esto protege de ataques XSS. -
    -exports.accion = (request, response, next) => {
    -    response.setHeader('Set-Cookie', 'nombre_cookie=valor_cookie; HttpOnly');
    -}
    -                    
    -
  • -
  • Para manejar sesiones de manera muy práctica, instalaremos el paquete express-session.
  • -
  • Para preparar el entorno para trabajar con sesiones, agregamos como middleware el manejo de sesiones: -
    -const session = require('express-session');
    -
    -app.use(session({
    -    secret: 'mi string secreto que debe ser un string aleatorio muy largo, no como éste', 
    -    resave: false, //La sesión no se guardará en cada petición, sino sólo se guardará si algo cambió 
    -    saveUninitialized: false, //Asegura que no se guarde una sesión para una petición que no lo necesita
    -}));
    -
  • -
  • Para utilizar las variables de sesión en un controlador: -
    -exports.action = (request, response, next) {
    -    request.session.nombre_variable = valor;
    -};
    -
    - Si revisas la consola desde el navegador, podrás observar una cookie con tu variable de sesión y con el valor encriptado. -
  • -
  • Para eliminar una sesión, lo cual es principalmente útil cuando un usuario sale de la aplicación, puedes hacerlo de la siguiente forma: -
    -exports.logout = (request, response, next) => {
    -    request.session.destroy(() => {
    -        response.redirect('/'); //Este código se ejecuta cuando la sesión se elimina.
    -    });
    -};
    -                        
    -
  • -
  • Mejora alguno de tus laboratorios anteriores o avanza en tu proyecto haciendo un uso pertinente de sesiones y cookies. Otra opción es que crees una nueva aplicación para que explores la aplicación de estos conceptos.
  • -
  • En ocasiones, como por ejemplo para mandar mensajes de error al usuario, deseamos utilizar variables de sesión que tengan un tiempo de vida de sólo 1 petición. Estas variables se llaman flash. Si deseas utilizarlas, el paquete connect-flash lo hace sencillo.
  • -
- -
- -
-
- - Preguntas a responder -
-
    -
  • ¿Qué beneficios encuentras en el estilo MVC?
  • -
  • ¿Encuentras alguna desventaja en el estilo arquitectónico MVC?
  • -
- - -
-
- -
-
- - Especificaciones de entrega -
-

A través de tu repositorio personal.

-
-
- -
-
- - - - - - - - - - diff --git a/backup/lab15Beans.html b/backup/lab15Beans.html deleted file mode 100644 index 89fc6c0..0000000 --- a/backup/lab15Beans.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - Actividad - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Actividad: Lab 15: Java Beans, JSTL, EL
- Mdulo: Paradigmas y aplicaciones cliente-servidor
Descripcin
-
    -
  • En esta actividad haremos una introduccin a Java Beans, - JSTL, y Expression Language.
  • -
-
Modalidad
-
    -
  • Individual.
  • -
-
Objetivos de la - actividad
-
    -
  • Que conozcas las tecnologas JEE
  • -
  • Realizar una aplicacin con tecnologas JEE, utilizando - JSP's, Servlets, Java Beans, JSTL, y Expression Language
  • -
-
Instrucciones
-
    -
  • Revisa la presentacin - Java Beans.
  • -
  • Revisa la aplicacin de ejemplo BeansExample.
  • -
  • Realiza una aplicacin donde muestres el uso de Java Beans, - JSTL, y Expression Language. Puedes tomar como base alguno de - tus laboratorios anteriores y la aplicacin de ejemplo de este - laboratorio.
  • -
      -
    • Recuerda que tu aplicacin debe ser agradable para el - usuario, y que las preguntas deben contestarse en alguna - pgina dentro de tu sitio.
    • -
    • Si utilizaste alguna base de datos (no es obligatorio), - aparte de los archivos de tu aplicacin, entrega tambin el - script de creacin de la base de datos.
    • -
    -
      -
    -
-

Preguntas

-
    -
  • Describe 3 Tags de JSTL distintas a las vistas en la - presentacin.
  • -
-
    -
-
    -
-
Recursos
-
    -

  • -
  • -
-
Especificaciones de - entrega
-
    -
  • A travs de Blackboard
  • -
-
DR Tecnolgico de Monterrey Campus Quertaro| - Departamento de Desarrollo Acadmico| Mxico, 2012
-
- - diff --git a/backup/lab15masDAW.html b/backup/lab15masDAW.html deleted file mode 100644 index 803dd1d..0000000 --- a/backup/lab15masDAW.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - - - - - - DAW Laboratorio 16: Más allá de php en el desarrollo web - - - -
- -
- - - -
-
- -

DAW Laboratorio 16: Más allá de php en el desarrollo web

-
-
- -
- -
-
- - Descripción -
-

En esta actividad exploraremos más opciones sobre Construcción de software y toma de decisiones.

-
- -
-
- - Modalidad -
-

- Individual.
-

-
- -
-
- - Objetivos de aprendizaje
-

-

  • Que conozcas y seas capaz de utilizar otra tecnología de desarrollo web diferente a php, o bien que conozcas algún framework de desarrollo web en php.
  • -
  • Desarrollar tu capacidad de autoaprendizaje.
  • -
  • Que generes opciones tecnológicas para desarrollar tu siguiente proyecto.
  • -

    -
    - -
    -
    - - Instrucciones
    - -
      -
    • Revisa los siguientes enlaces sobre frameworks de desarrollo web para php: - Revisa los siguientes enlaces sobre tecnologías para el desarrollo web: - -
    • - -
    • Revisa los siguientes enlaces sobre frameworks de desarrollo web para php: - -
    • -
    • Selecciona una tecnología o framework de desarrollo web que llame tu atención y elabora sus tutoriales básicos.
    • -
    • Implementa una pequeña aplicación, o bien reimplementa alguno de tus laboratorios anteriores con esta nueva tecnología.
    • -
    • Entrega por Blackboard.
    • -
    -
    - - - - - - -
    -
    - - Preguntas a responder -
    -
      -
    • ¿Qué ventajas y desventajas tiene la tecnología que seleccionaste con respecto al desarrollo que habías realizado anteriormente con php?
    • -
    -
    - - -
    -
    - - Especificaciones de entrega -
    -

    A través de Bitbucket

    -
    -
    - - - -
    -
    - - - - - - - - - \ No newline at end of file diff --git a/backup/lab16MVC.html b/backup/lab16MVC.html deleted file mode 100644 index f059499..0000000 --- a/backup/lab16MVC.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - Actividad - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Actividad: Lab 16: MVC
    - Mdulo: Paradigmas y aplicaciones cliente-servidor
    Descripcin
    -
      -
    • En esta actividad veremos a profundidad la arquitectura MVC - utilizando tecnologas JEE
    • -
    -
    Modalidad
    -
      -
    • Individual.
    • -
    -
    Objetivos de la - actividad
    -
      -
    • Que puedas describir y aplicar la arquitectura MVC - utilizando tecnologas JEE
    • -
    -
    Instrucciones
    -
      -
    • Revisa la presentacin - MVC
    • -
    • Revisa la aplicacin de ejemplo MVC.
    • -
    • Realiza una aplicacin utilizando tecnologas JEE bajo una - arquitectura MVC. Puedes tomar como base alguno de tus - laboratorios anteriores y la aplicacin de ejemplo de este - laboratorio.
    • -
        -
      • Recuerda que tu aplicacin debe ser agradable para el - usuario, y que las preguntas deben contestarse en alguna - pgina dentro de tu sitio.
      • -
      • Entrega tu script de creacin de la base de datos.
      • -
      -
        -
      -
    -

    Preguntas

    -
      -
    • Busca 3 frameworks que le den soporte al desarrollo de - aplicaciones web en JEE utilizando la arquitectura MVC. Indica - el propsito de cada uno, sus caractersticas principales, y - el sitio principal del framework.
    • -
    -
      -
    -
      -
    -
    Recursos
    -
      -

    • -
    • -
    -
    Especificaciones de - entrega
    -
      -
    • A travs de Blackboard
    • -
    -
    DR Tecnolgico de Monterrey Campus Quertaro| - Departamento de Desarrollo Acadmico| Mxico, 2012
    -
    - - diff --git a/backup/lab17WSDL.html b/backup/lab17WSDL.html deleted file mode 100644 index 5ab1133..0000000 --- a/backup/lab17WSDL.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - Actividad - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Actividad: Lab 16: Servicios web - basados en SOAP con JEE
    - Mdulo: Construir servicios web
    Descripcin
    -
      -
    • En esta actividad haremos una introduccin a la - implementacin de servicios web SOAP con JEE
    • -
    -
    Modalidad
    -
      -
    • Individual.
    • -
    -
    Objetivos de la - actividad
    -
      -
    • Que conozcas el paradigma de los servicios web en un entorno - distribuido
    • -
    • Que conozcas las caractersticas y cmo funcionan los - servicios web basados en SOAP
    • -
    • Que desarrolles un servicio web SOAP con tecnologa JEE
    • -
    • Que consumas un servicio web SOAP con tecnologa JEE o php
    • -
    -
    Instrucciones
    -
      -
    • Revisa la presentacin - SOAP Web Services
      -
    • -
    • Realiza el tutorial https://netbeans.org/kb/docs/websvc/jax-ws.html
    • -
    • Desarrolla un servicio web, tienes las siguientes opciones:
    • -
        -
      • Desarrollar un servicio web SOAP con tecnologa JEE
      • -
      • Desarrollar un servicio web REST con tecnologa JEE
      • -
      • Desarrollar un servicio web SOAP con php
      • -
      -
    • Desarrolla un cliente que consuma tu servicio, puedes - utilizar tecnologa JEE o php.
    • -
    • Al igual que en los laboratorios anteriores, puedes apoyarte - de uno de tus laboratorios o proyectos previos.
    • -
    -

    Preguntas

    -
      -
    • .Que funcionalidad de una aplicacin es recomendable - implementar con servicios web y qu funcionalidad no lo es? - Justifica tu respuesta.
    • -
    -
      -
    -
      -
    -
    Recursos
    - -
    Especificaciones de - entrega
    -
      -
    • A travs de Blackboard
    • -
    -
    DR Tecnolgico de Monterrey Campus Quertaro| - Departamento de Desarrollo Acadmico| Mxico, 2012
    -
    - - diff --git a/backup/lab17interaccion_bd.html b/backup/lab17interaccion_bd.html deleted file mode 100644 index 0b2417d..0000000 --- a/backup/lab17interaccion_bd.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - - - - - - - - - - - Lab 17: Interacción con la base de datos - - - -
    - -
    - - - -
    -
    - -

    Lab 17: Interacción con la base de datos

    -
    -
    - -
    - -
    -
    - - Descripción -
    -

    En esta actividad comenzaremos con la interacción con una base de datos desde node.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual. -
    -

    -
    -
    - -
    -
    - - Objetivos de aprendizaje
    -
      -
    • Entender cómo interactúa una aplicación web con una base de datos.
    • -
    • Desarrollar aplicaciones web que interactúen con bases de datos.
    • -
    -
    -
    - -
    -
    - - Instrucciones
    -
      -
    • Para interactuar con una base de datos, debemos crear la base de datos. Para este laboratorio usaremos MySQL, sin embargo, la lógica es muy similar si decides trabajar con cualquier otro motor de bases de datos. Crea tu base de datos y crea algunas tablas y ponles algunos datos, de manera similar a la demostración del profesor.
    • -
    • Para poder interactuar con el manejador de base de datos MySQL, ocuparemos el paquete mysql2.
    • -
    • Para poder conectarnos con la base de datos, utilizaremos el archivo database.js, el cual crearemos dentro de un folder con nuestras librerías de apoyo, típicamente nombrado util. El archivo se encargará de manejar las conexiones con nuestra base de datos: -
      -const mysql = require('mysql2');
      -
      -const pool = mysql.createPool({
      -    host: 'localhost',
      -    user: 'root',
      -    database: 'database_name',
      -    password: 'el_password_de_tu_usuario_de_la_bd'
      -});
      -
      -module.exports = pool.promise();
      -                    
      - Asegúrate de cambiar los valores de los atributos del objeto de js para que coincidan con los de tu base de datos. Como podrás observar, se exporta una promesa. Las promesas permiten manejar fácilmente código que se ejecuta de manera asíncrona. -
    • -
    • Para conectarnos con la base de datos y ejecutar consultas desde nuestra aplicación: -
      -const db = require('./util/database');
      -
      -db.execute('Consulta SQL por ejemplo: SELECT * FROM mi_tabla');
      -                    
      - Ahora, debido a que en database.js devolvimos una promesa, esto nos permite hacer algo después de que ejecutamos la consulta con el método .then(), e incluso manejar los errores con el método .catch(). Por ejemplo, si queremos recuperar los registros de la tabla videojuegos: -
      -db.execute('SELECT * FROM videojuegos')
      -    .then(([rows, fieldData]) => {
      -        console.log(rows);
      -    })
      -    .catch(err => {
      -        console.log(err);
      -    });
      -                    
      - En la varibale rows, tendremos cada uno de de los registros de nuestra consulta. -
    • -
    • El código de interacción con la base de datos, si seguimos buenas prácticas, lo escribiremos siempre en nuestros modelos. Por lo que normalmente, el método fetchAll() de nuestros modelos quedaría con el siguiente formato: -
      -static fetchAll() {
      -    return db.execute('SELECT * FROM videojuegos');
      -}
      -                
      - Y el código del controlador (asumiendo que tenemos un template de la vista llamado 'vista.html' que despliega el contenido de un arreglo de js llamado videojuegos): -
      -exports.getVideojuegos = (request, response, next) => {
      -    Videojuegos.fetchAll()
      -        .then(([rows, fieldData]) => {
      -            response.render('vista', {
      -                videojuegos: rows
      -            })
      -        })
      -        .catch(err => console.log(err));
      -}
      -                
      -
    • -
    • - Ahora, para insertar un registro en la base de datos, nuestro código del método save() en los modelos, tendría el siguiente formato: -
      -save() {
      -    return db.execute('INSERT INTO videojuegos (nombre_columna_1, nombre_columna_2) VALUES (?, ?)',
      -        [this.variable_valor_1, this.variable_valor_2]
      -    );
      -
      -}
      -                    
      - Como podrás ver, no se insertan los valores directamente en el string, sino se pone un signo de interrogación, esto es para evitar ataques de inyección de SQL, ya que el método execute, al pasar estos datos en un arreglo como segundo argumento, evita que si se inserta código SQL, éste no se ejecute y simplemente sea interpretado como un string.
      - El código del controlador quedaría con el siguiente formato: -
      -exports.insertarVideojuego = (request, response, next) => {
      -    const videojuego = new Videojuego(request.body.nombre, request.body.plataforma);
      -    videojuego.save().then(() => {
      -        response.redirect('/');
      -    }).catch(err => console.log(err));
      -};
      -                    
      -
    • -
    • En ocasiones es necesario recuperar un registro en particular de la base de datos, y muchas veces queremos que esto pueda realizarse desde las rutas. Para indicarle al ruteador de express que un valor en una ruta es una varibale, podemos hacerlo agregando como prefijo el símbolo : seguido del nombre que le queremos dar a la variable: -
      -router.get('/videojuegos/:videojuego_id', controllerVideojuegos.getVideojuego);
      -                    
      - Y en el controlador para hacer uso de la variable: -
      -export.getVideojuego = (request, response, next) => {
      -    const id = request.params.videojuego_id;
      -    //Resto del código del controlador...
      -}
      -                    
      -
    • -
    • Continúa mejorando tus laboratorios anteriores o tu proyecto agregándoles interacción con la base de datos. Asegúrate de al menos realizar una consulta que devuelva varios registros, una consulta que devuelva 1 sólo registro, una inserción, y una edición de un registro de la base de datos. Recuerda que siempre tienes también la opción de crear una nueva aplicación.
    • - - -
    -
    -
    - -
    -
    - - Preguntas a responder -
    -
      -
    • ¿Qué ventajas tiene escribir el código SQL únicamente en la capa del modelo? -
    • -
    • ¿Qué es SQL injection y cómo se puede prevenir? -
    • -
    -
    -
    - - - -
    -
    - - Especificaciones de entrega -
    -

    A través de tu repositorio personal (Bitbucket o GitHub).

    -
    -
    - -
    - -
    - - - - - - - - - - diff --git a/backup/lab18auth.html b/backup/lab18auth.html deleted file mode 100644 index dec889d..0000000 --- a/backup/lab18auth.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - - - - - - - - - Lab 18: Autentificación - - - -
    - -
    - - - -
    -
    - -

    Lab 18: Autentificación

    -
    -
    - -
    - -
    -
    - - Descripción -
    -

    En esta actividad exploraremos el proceso de autentificación de usuarios.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual. -
    -

    -
    -
    - -
    -
    - - Objetivos de aprendizaje
    -
      -
    • Entender cómo funciona la autentificación de usuarios.
    • -
    • Desarrollar aplicaciones web con autentificación de usuarios.
    • -
    • Desarrollar aplicaciones web con rutas protegidas.
    • -
    • Desarrollar aplicaciones web protegidas contra ataques CSRF.
    • -
    -
    -
    - -
    -
    - - Instrucciones
    -
      -
    • Revisa junto con el profesor la presentación sobre Autentificación
    • -
    • - Crea la funcionalidad para registrar nuevos usuarios. Recuerda validar que el usuario no exista. Es importante que cuando se guarda un password, lo encriptemos con un método no desencriptable, para que si alguien tiene acceso a la base de datos, no pueda descifrar el password. Un paquete que nos puede servir para ello es bcryptjs, por lo que hay que instalarlo con npm install --save bcryptjs.
      - Para encriptar los passwords: -
      -//En un modelo
      -const bcrypt = require('bcryptjs');
      -
      -//Dentro del método del modelo que crea el usuario
      -//El segundo argumento es el número de veces que se aplica el algoritmo, actualmente 12 se considera un valor seguro
      -//El código es asíncrono, por lo que hay que regresar la promesa
      -return bcrypt.hash(password, 12); 
      -                        
      -
    • -
    • Crea la funcionalidad para que un usuario se autentifique. Para ello deberás realizar una consulta a la base de datos recuperando el usuario (si es que existe)y posteriormente, comparar el password introducido por el usuario con el password encriptado en la base de datos. Esto se puede lograr en el controlador de la siguiente forma: -
      -bcrypt.compare(request.body.password, user.password)
      -    .then(doMatch => {
      -        if (doMatch) {
      -            request.session.isLoggedIn = true;
      -            request.session.user = user;
      -            return request.session.save(err => {
      -                response.redirect('/');
      -            });
      -        }
      -        response.redirect('/login');
      -    }).catch(err => {
      -        response.redirect('/login');
      -    });
      -
      -                        
      -
    • -
    • Para mejorar la seguridad de nuestro sitio, es importante proteger las rutas. En el código anterior definimos una variables de sesión (isLoggedIn) para indicar que el usuario está autentificado. Esta variable nos puede ayudar en los controladores para proteger una ruta en particular: -
      -exports.ruta = (request, response, next) => {
      -    if (!request.session.isLoggedIn) {
      -        return response.redirect('/login');
      -    }
      -    //Resto del código de la ruta...
      -}
      -                        
      - Una alternativa más elegante y sin repetición de código, es implementando la protección en un middleware. Esto lo podemos hacer en un nuevo archivo, por ejemplo, is-auth.js: -
      -module.exports = (request, response, next) => {
      -    if (!request.session.isLoggedIn) {
      -        return response.redirect('/login');
      -    }
      -    next();
      -}
      -                        
      - Para usar nuestro middleware, basta con ir a cualquier archivo de rutas o nuestro archivo principal y agregar: -
      -const isAuth = require('./is-auth.js');
      -
      -router.get('/miRuta', isAuth, miControlador.miAccion);
      -                        
      -
    • -
    • Nuestro trabajo hasta ahora, ha sido suficientemente bueno para usuarios de confianza. Sin embargo, la web no es un lugar seguro. Por ello es importante preparar nuestras aplicaciones para protegernos contra usuarios malintencionados. Un ataque común es el Cross-Site Request Forgery (CSRF), el cual implica aprovecharse de una sesión de otro usuario, comúnmente perpretado desde una página que parece la oficial pero que en realidad no lo es.
      - Para evitar ataques de CSRF, tenemos que asegurar que nuestros usuarios estén trabajando sobre las vistas que nosotros proveemos. Esto lo podemos lograr por medio de un Token CSRF en nuestras formas y con ayuda de la instalación del paquete csurf.
      - Para usar el paquete en nuestra aplicación: 1) tenemos que configurar el middleware, lo cual automaticamente protegerá todas nuestras peticiones POST: -
      -const csrf = require('csurf');
      -const csrfProtection = csrf();
      -
      -//...Y después del código para inicializar la sesión... 
      -app.use(csrfProtection); 
      -                        
      - Al proteger las peticiones POST, nuestra aplicación deja parcialmente de funcionar porque no estamos mandando el token CSRF desde nuestras formas, por ello tenemos que 2) Mandarle el token a las vistas desde el controlador: -
      -exports.getAccion = (request, response, next) => {
      -    response.render('/ruta', {
      -        csrfToken: request.csrfToken()
      -    });
      -}
      -                        
      - Y 3) tenemos que desplegarlo en la vista: -
      
      -<form action="ruta" method="POST">
      -<input type="hidden" name="_csrf" value="<%= csrfToken %>" >
      -                        
      -
    • -
    • Una alternativa elegante al paso 2) del apartado anterior, es utilizando Middleware y variables locales de las vistas: -
      -app.use((request, response, next) => {
      -    response.locals.csrfToken = request.csrfToken();
      -    next();
      -});
      -                        
      - - -
    • -
    • Continúa mejorando tus laboratorios anteriores o tu proyecto, esta vez agregándoles autentificación de usuarios, protección de rutas y protección contra ataques CSRF. Recuerda que siempre tienes también la opción de crear una nueva aplicación.
    • -
    -
    -
    - -
    -
    - - Preguntas a responder -
    -
      -
    • ¿Qué otras formas de autentificación existen? -
    • -
    -
    -
    - -
    -
    - - Recursos -
    - -
    -
    - -
    -
    - - Especificaciones de entrega -
    -

    A través de tu repositorio personal (Bitbucket o GitHub).

    -
    -
    - -
    - -
    - - - - - - - - - - diff --git a/backup/lab19_RBAC.html b/backup/lab19_RBAC.html deleted file mode 100644 index 159b656..0000000 --- a/backup/lab19_RBAC.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - - - - - RBAC - - - -
    - -
    - - - -
    -
    - -

    Laboratorio 19: Role Based Acess Control (RBAC)

    -
    -
    - -
    - -
    -
    - - Descripción -
    -

    En esta actividad exploraremos el modelo usado como estándar internacional para el control de acceso basado en roles (RBAC), y lo aplicarás en aplicaciones web.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - En Equipo.
    -

    -
    -
    - -
    -
    - Objetivos de aprendizaje -
    -
      -
    • Entender el modelo RBAC.
    • -
    • Implementar el modelo RBAC.
    • -
    -
    -
    -
    - -
    -
    - -
    - Instrucciones -
    - -
      -
    • Revisa junto con el profesor el modelo RBAC
    • -
    • Analiza junto con el profesor el siguiente MER que aplica el modelo RBAC. -

      - ¿Qué capacidades le puede dar a una aplicación la implementación de este modelo de datos con respecto al control de acceso? -
    • -
    • - Implementen en equipo el modelo RBAC en una aplicación. La recomendación es que sea en su proyecto, pero si prefieren hacerlo en otra aplicación, no hay inconveniente.
      - Algunos aspectos a considerar en la implementación: -
        -
      1. 1. Primero deben soportar el modelo a nivel de la base de datos, y poblar la BD con suficientes registros para que puedan verificar la correcta aplicación del modelo.
      2. -
      3. 2. A nivel de la aplicación web, es necesario obtener los permisos del usuario en el momento en el que se autentifica, esto lo pueden realizar obteniendo los roles del usuario, y luego los permisos asignados a cada rol.
      4. -
      5. 3. Posteriormente pueden generar la interfaz gráfica de manera dinámica de acuerdo a los permisos del usuario.
      6. -
      7. 4. Es importante, validar el permiso requerido en cada ruta.
      8. -
      9. 5. El nivel más avanzado de la implementación del modelo RBAC, implica la creación de una interface de usuario con la capacidad para gestionar las asignaciones de roles y permisos. Considerando las restricciones de su aplicación, evalúen e implementen lo que consideren necesario de esta interface.
      10. -
      -
    • - - - - - - -
    -
    -
    - -
    -
    - Preguntas a responder: -
    -
      -
    • ¿En qué consiste el control de acceso basado en roles?
    • -
    • Investiguen y describan 2 sistemas, uno que aplique RBAC y uno que no. Realicen un análisis de las ventajas y desventajas de cada uno con respecto al control de acceso.
    • -
    -
    -
    - -
    -
    - Recursos -
    - - -
    -
    - -
    -
    - - Especificaciones de entrega -
    -

    A través de Bitbucket o GitHub (Repositorio de Equipo).

    -
    - - - -
    -
    - - - - - - - - - diff --git a/backup/lab1HtmlEjemplo.html b/backup/lab1HtmlEjemplo.html deleted file mode 100644 index 980314b..0000000 --- a/backup/lab1HtmlEjemplo.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - Ejemplo html5 - - - -
    -

    Ejemplo de html5

    -
    - -
    -
    - - - Tabla con thead, tbody, tfoot - - - - - - - - - - - - - - - - - - - - - -
    Tabla 1-1
    Columna largaCol 1Col 2
    Celda 1Celda 2
    Celda 3
    -
    - -
    -
    -

    Formas

    -
    -
    -

    - -

    -

    - -

    -

    - -

    -

    - -

    -

    - -

    -

    - -

    -

    - -

    -

    - -

    -

    - -

    - -
    - -
    -
    - - - - \ No newline at end of file diff --git a/backup/lab1Intro_inv_ciclo_desarrollo.html b/backup/lab1Intro_inv_ciclo_desarrollo.html deleted file mode 100644 index ac9b0a7..0000000 --- a/backup/lab1Intro_inv_ciclo_desarrollo.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - - - - - - - - - - TC2005B Construcción de software y toma de decisiones: Lab 1: html5 e investigación - - - -
    - -
    - - - -
    -
    - -

    Laboratorio 1: Introducción a las aplicaciones web, HTML5 y ciclo de vida de los sistemas de información

    -
    -
    - -
    - -
    -
    - - Descripción -
    -

    En esta actividad se abordarán brevemente los conceptos fundamentales para comenzar con el Construcción de software y toma de decisiones, y se hará un breve repaso sobre html5.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual. -
    -

    -
    -
    - -
    -
    - - Objetivos de aprendizaje
    -
      -
    • Comprender conceptos básicos del desarrollo web.
    • -
    • Comprender las principales etiquetas HTML (imágenes, hipervínculos, listas, tablas, formas)
    • -
    • Desarrollar interfaces de usuario sencillas en HTML
    • -
    • Explorar editores para desarrollo web
    • -
    • Comprender el ciclo de vida y de desarrollo de los sistemas de información
    • -
    -
    - -
    -
    - - Instrucciones
    -
      -
    • Revisa uno o varios de los siguientes sitios de editores html: - -
    • -
    • Instala y/o configura el (los) de tu preferencia. Eres libre de utilizar cualquier otro que te agrade que no esté en la lista anterior, y de ser así, comarte el enlace en el grupo de slack del curso para que los demás lo conozcan.
    • -
    • Crea una página personal o un pequeño sitio donde muestres el uso de las principales etiquetas HTML. Puedes hablar de tus principales proyectos o aficiones, incluir artículos interesantes tuyos, sobre tí, o sobre algo que te apasione. Usa componentes semánticos como por ejemplo <header>, - <footer> o <strong> en lugar de <div id="header">, <div - id="footer"> y <b>. El sitio o página debe incluir alguna forma con controles. -
        -
      • No utilices etiquetas desaprobadas.
      • -
      • Recuerda incluir tus datos e información de contacto (nombre, matrícula, correo electrónico).
      • -
      • Utiliza tu creatividad.
      • -
      • No es necesario que la página cuente con estilos, ni JavaScript.
      • -
      • Pon el nombre del editor HMTL que utilizaste y el enlace al sitio del editor como pie de página.
      • -
      • Valida tus documentos con la herramienta validator.w3.org -
      • -
      -
    • -
    • Responde las preguntas de la siguiente sección en algún lugar del sitio.
    • - -
    • -

      De ser necesario, soporta tus respuestas utilizando libros, revistas o sitios WEB. En cualquier caso, cita las fuentes utilizadas. Recuerda que si utilizas párrafos de otros autores, deben estar citados adecuadamente.

      -
    • -
    -
    -
    -
    - -
    -
    - - Preguntas a responder -
    -
      -
    • ¿Cuál es la diferencia entre Internet y la World Wide Web?
    • -
    • ¿Cuáles son las partes de un URL?
    • -
    • ¿Cuál es el propósito de los métodos HTTP: GET, HEAD, POST, PUT, PATCH, DELETE?
    • -
    • ¿Qué método HTTP se debe utilizar al enviar un formulario HTML, por ejemplo cuando ingresas tu usuario y contraseña en algún sitio? ¿Por qué?
    • -
    • ¿Qué método HTTP se utiliza cuando a través de un navegador web se accede a una página a través de un URL?
    • -
    • Un servidor web devuelve una respuesta HTTP con código 200. ¿Qué significa esto? ¿Ocurrió algún error?
    • -
    • ¿Es responsabilidad del desarrollador corregir un sitio web si un usuario reporta que intentó acceder al sitio y se encontró con un error 404? ¿Por qué?
    • -
    • ¿Es responsabilidad del desarrollador corregir un sitio web si un usuario reporta que intentó acceder al sitio y se encontró con un error 500? ¿Por qué?
    • -
    • ¿Qué significa que un atributo HTML5 esté depreciado o desaprobado (deprecated)? Menciona algunos elementos de HTML 4 que en HTML5 estén desaprobados.
    • -
    • ¿Cuáles son las diferencias principales entre HTML 4 y HTML5?
    • -
    • ¿Qué componentes de estructura y estilo tiene una tabla?
    • -
    • ¿Cuáles son los principales controles de una forma HTML5?
    • -
    • ¿Qué tanto soporte HTML5 tiene el navegador que utilizas? Puedes utilizar la siguiente página para descubrirlo: http://html5test.com/ (Al responder la pregunta recuerda poner el navegador que utilizas)
    • -
    • - Sobre el ciclo de vida y desarrollo de los sistemas de información: -
        -
      • - ¿Cuál es el ciclo de vida de los sistemas de información? -
      • -
      • - ¿Cuál es el ciclo de desarrollo de sistemas de información? -
      • -
      -
    • -
    -
    -
    - -
    - -
    -
    - - Especificaciones de entrega -
    -

    Una vez que termines, registra la actividad en tu plan de aprendizaje.

    -

    Guarda tu trabajo en tu computadora personal. En el laboratorio 2 se darán las instrucciones para la entrega de este laboratorio y de todos los siguientes.

    -
    -
    - -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/backup/lab21usabilidad.html b/backup/lab21usabilidad.html deleted file mode 100644 index f2e0a96..0000000 --- a/backup/lab21usabilidad.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - Evaluación Heurística de Usabilidad - - - -
    - -
    - - - -
    -
    -

    Evaluación Heurística de Usabilidad

    -
    -
    - -
    - -
    -
    - - Descripción -
    -

    En esta actividad exploraremos las heurísticas de usabilidad y llevarás a cabo una evaluación Heurística de Usabilidad.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Colaborativa. -
    -

    -
    -
    - -
    -
    - - Objetivos de aprendizaje
    -
      -
    • Reconocer las heurísticas de usabilidad propuestas por Nielsen
    • -
    • Aprender a realizar evaluaciones heurísticas de usabilidad
    • -
    • Documentar los hallazgos de la evaluación de usabilidad por medio de Reportes de Aspecto de Usabilidad (UAR, por sus siglas en inglés).
    • -
    -
    - -
    -
    - - Instrucciones
    -
      -
    • Revisa junto con el profesor la presentación Usabilidad.
    • -
    • Con su equipo, lleven a cabo un análisis heurístico del proyecto de otro equipo.
    • -
    • Cada integrante deberá identificar al menos dos aspectos de usabilidad y deberán reportarlos a través de un Usability Aspect Report (UAR) al equipo correspondiente. Recuerda que en el UAR debes incluir: -
        -
      • La heurística de usabilidad que se está evaluando.
      • -
      • La explicación sobre por qué se está violando la heurística o por qué es una buena práctica de la heurística.
      • -
      • La evidencia de la heurística (captura de pantalla o diseño de la interfaz).
      • -
      • La severidad del problema o impacto del beneficio.
      • -
      • Si es un problema, su posible solución o desventajas potenciales.
      • -
      -
    • Envía tu UAR al equipo que estás evaluando y también entrégala en tu repositorio personal o de equipo.
    • -
    - -
    - -
    -
    - - Recursos
    - -
    - -
    -
    - Especificaciones de entrega -
    -

    A través de tu repositorio personal (Bitbucket o GitHub).

    - -
    - -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/backup/lab22_archivos.html b/backup/lab22_archivos.html deleted file mode 100644 index 0d2a91c..0000000 --- a/backup/lab22_archivos.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - - - - - - - Lab 22: Archivos - - - -
    - -
    - - - -
    -
    - -

    Lab 22: Archivos

    -
    -
    - -
    - -
    -
    - - Descripción -
    -

    En esta actividad exploraremos el manejor de archivos con node + express.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual. -
    -

    -
    -
    - -
    -
    - - Objetivos de aprendizaje
    -
      -
    • Entender cómo funciona la subida de archivos a un servidor.
    • -
    • Desarrollar aplicaciones web que le permitan a los usuarios subir archivos que se almacenen en el servidor.
    • -
    -
    -
    - -
    -
    - - Instrucciones
    -
      -
    • - Para poder enviar archivos al servidor, primero debemos preparar la petición HTTP desde el cliente para indicar que vamos a enviar un archivo por medio de una forma que va a enviar muchos datos en partes, y definir un control de entradas tipo file para que el usuario pueda seleccionar un archivo de su computadora: -
      -<form action="archivo" method="POST"  enctype="multipart/form-data"> 
      -    <input type="file" name="archivo">
      -    <input type="submit" name="enviar" value="subir">
      -                        
      -
    • -
    • - Para poder manejar archivos desde node, requerimos instalar el paquete multer. Para usar multer, tenemos que registrar el middleware y configurar cómo queremos manejar los archivos: -
      -const multer = require('multer');
      -
      -//fileStorage: Es nuestra constante de configuración para manejar el almacenamiento
      -const fileStorage = multer.diskStorage({
      -    destination: (request, file, callback) => {
      -        //'uploads': Es el directorio del servidor donde se subirán los archivos 
      -        callback(null, 'uploads');
      -    },
      -    filename: (request, file, callback) => {
      -        //aquí configuramos el nombre que queremos que tenga el archivo en el servidor, 
      -        //para que no haya problema si se suben 2 archivos con el mismo nombre concatenamos el timestamp
      -        callback(null, new Date().toISOString() + '-' + file.originalname);
      -    },
      -});
      -
      -//Idealmente registramos multer después de bodyParser (la siguiente línea ya debería existir)
      -app.use(bodyParser.urlencoded({ extended: false }));
      -
      -//En el registro, pasamos la constante de configuración y
      -//usamos single porque es un sólo archivo el que vamos a subir, 
      -//pero hay diferentes opciones si se quieren subir varios archivos. 
      -//'archivo' es el nombre del input tipo file de la forma
      -app.use(multer({ storage: fileStorage }).single('archivo')); 
      -                        
      Para acceder a los datos del archivo en el controlador, como por ejemplo si queremos guardar la ruta en la base de datos, podemos acceder a los atributos por medio del objeto request.file: -
      -const.postArchivo = (request, response, next) => {
      -    const ruta_archivo = request.file.path;
      -};
      -                        
      -
    • -
    • Para limitar el tipo de archivos que se pueden subir, podemos crear una nueva constante de configuración y pasar la constante al registro: -
      -const fileFilter = request, file, callback => {
      -    if (file.mimetype == 'image/png' || 
      -        file.mimetype == 'image/jpg' ||
      -        file.mimetype == 'image/jpeg' ) {
      -            callback(null, true);
      -    } else {
      -            callback(null, false);
      -    }
      -}
      -
      -app.use(multer({ storage: fileStorage, fileFilter: fileFilter }).single('archivo')); 
      -                        
      -
    • -
    • Para poder ver las imágenes de nuestro servidor en nuestros clientes, es necesario indicar que el directorio donde se encuentran las imágenes, también puede ser utilizado de manera estática: -
      -app.use('/uploads', express.static(path.join(__dirname, 'uploads')));
      -                        
      - Es importante que a este folder le agreguemos un archivo index.html vacío, para que los contenidos del directorio no puedan ser listados. -
    • -
    • Agrega la funcionalidad para trabajar con archivos en tus laboratorios anteriores o proyecto. Recuerda que siempre tienes también la opción de crear un prototipo para explorar estas características.
    • -
    • Si tienes formas de edición de archivos, es importante que agregues funcionalidad para que si no se sube un nuevo archivo, no se modifique el archivo que ya estaba almacenado. -
    • -
    -
    -
    - -
    -
    - - Preguntas a responder -
    -
      -
    • -
    -
    -
    - -
    -
    - - Recursos -
    - -
    -
    - -
    -
    - - Especificaciones de entrega -
    -

    A través de tu repositorio personal (Bitbucket o GitHub).

    -
    -
    - -
    - -
    - - - - - - - - - - diff --git a/backup/lab24AJAX.html b/backup/lab24AJAX.html deleted file mode 100644 index 443a20e..0000000 --- a/backup/lab24AJAX.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - - - - - - - - Lab 24: AJAX - - - -
    - -
    - - - -
    -
    - -

    Lab 24: AJAX

    -
    -
    - -
    - -
    -
    - - Descripción -
    -

    En esta actividad haremos una introducción a las tecnologías AJAX. -

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual. -
    -

    -
    -
    - -
    -
    - - Objetivos de aprendizaje
    -
      -
    • Comprender qué es AJAX y su mecánica básica de operación
    • -
    • Desarrollar aplicaciones que incorporen tecnologías AJAX
    • -
    -
    -
    - -
    -
    - - Instrucciones
    -
      -
    • Revisa junto con tu profesor la presentación Introducción a AJAX. -
    • -
    • Primero, debemos preparar al servidor para que en lugar de enviar una página HTML completa, envíe únicamente una parte de la página, texto, o datos. El ejemplo que realizaremos será con datos estructurados en formato JSON, que es lo ideal para que nuestro servidor pueda atender distintos tipos de clientes. Para poder manipular fácilmente las peticiones que llegan en formato JSON, es necesario registrar el middleware para manejar JSON que incluye bodyParser: -
      -app.use(bodyParser.json());
      -                        
      - Y para enviar las respuestas en formato JSON, en nuestro controlador tenemos que cambiar la respuesta por:
      -
      -response.status(200).json({message: "Respuesta asíncrona"});
      -                        
      -
    • -
    • Para poder hacer una petición asíncrona desde el javascript de nuestro cliente, debemos identificar el evento que detonará la petición asíncrona. En el caso de los botones, debemos asegurarnos que NO sean del tipo submit, y también debemos de eliminar los tags form para evitar que se dispare una petición asíncrona.
      - Un ejemplo de código js asíncrono en nuestro cliente, es el siguiente: -
      -const accion_asincrona = () => {
      -    const mensaje = document.getElementById('mensaje').value;
      -    //El token de protección CSRF
      -    const csrf = document.getElementById('_csrf').value;
      -
      -    //función que manda la petición asíncrona
      -    fetch('/ruta/asincrona', {
      -        method: 'POST',
      -        headers: {
      -            'Content-Type': 'application/json',
      -            'csrf-token': csrf
      -        }
      -        body: JSON.stringify(data)
      -    }).then(result => {
      -        return result.json(); //Regresa otra promesa
      -    }).then(data => {
      -        //Modificamos el DOM de nuestra página de acuerdo a los datos de la segunda promesa
      -        //...
      -    }).catch(err => {
      -        console.log(err);
      -    });
      -};
      -
      -document.getElementById('mi_boton').click = accion_asincrona;
      -                    
      - -
    • -
    • Para alguno de tus laboratorios anteriores o tu proyecto (o si lo prefieres empieza con una nueva aplicación), integra al menos 1 componentes AJAX. Recuerda que el componente debe comunicarse con el servidor y debe actualizar alguna parte del sitio de manera asíncrona. -
        -
      • Indica en alguna parte del sitio cuáles fueron los componentes AJAX que utilizaste. -
      • -
      • Utiliza una arquitectura MVC.
      • -
      • El componente debe tener coherencia y cierto nivel de complejidad. -
      • -
      • Recuerda que tu aplicación debe ser agradable para el usuario, y que las preguntas deben contestarse en alguna página dentro de tu sitio.
      • -
      -
    • -
    -
    - - -
    -
    - - Preguntas a responder -
    -
      -
    • ¿Qué importancia tiene AJAX en el desarrollo de RIA's (Rich Internet Applications?
    • -
    • ¿Qué implicaciones de seguridad tiene AJAX? ¿Dónde se deben hacer las validaciones de seguridad, del lado del cliente o del lado del servidor?
    • -
    • ¿Qué es JSON?
    • -
    -
    -
    - - - - -
    - -
    -
    - - Especificaciones de entrega -
    -

    A través de tu repositorio personal (Bitbucket o GitHub).

    -
    -
    - - - -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/backup/lab25phpREST.html b/backup/lab25phpREST.html deleted file mode 100644 index 9621c92..0000000 --- a/backup/lab25phpREST.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - - - - - Laboratorio 25: Servicios web REST con php - - - -
    - -
    - - - -
    -
    - -

    Laboratorio 25: Servicios web REST con php

    -
    -
    - -
    - -
    -
    - - Descripción -
    -

    En este laboratorio haremos una introducción a los conceptos de servicios web basados en REST, así como su implementación y consumo con php.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual. -
    -

    -
    -
    - -
    -
    - - Objetivos de aprendizaje
    -
      -
    • Que conozcas el concepto de servicio web y sus características
    • -
    • Que conozcas las diferentes tecnologías que existen para implementar servicios web
    • -
    • Que implementes un servicio web REST
    • -
    • Que consumas un servicio web REST
    • -
    -
    - -
    -
    - - Instrucciones
    -
      -
    • Revisa junto con el profesor la presentación PHP REST Web Services.
    • -
    • Diseña e implementa un servicio web con php basado en REST, para ellos puedes utilzar SILEX o cualquier otro framework REST como Slim Framework, o Flight php. Considera al menos 2 operaciones en el servicio. Si gustas puedes utilizar alguno de tus laboratorios anteriores, y seleccionar una parte de la funcionalidad para implementarla como operaciones del servicio, o bien, diseñar un servicio completamente nuevo. Nombra la carpeta donde pongas tu servicio como lab20_servicio
    • -
    • Considera esta guía en el diseño y desarrollo de tu servicio.
    • -
    • Implementa (o utiliza una página o sitio que hayas desarrollado en laboratorios anteriores) un cliente que consuma las operaciones del servicio web. Recuerda responder las preguntas del laboratorio dentro del sitio. Nombra la carpeta donde esté la aplicación que consuma tu servicio como lab20_cliente
    • -
    • Si utilizaste alguna base de datos, también debes incluir el script de creación dentro de los archivos del servicio.
    • -
    - -
    - -
    -
    - - Preguntas a responder -
    -
      -
    • ¿A qué se refiere la descentralización de servicios web?
    • -
    • ¿Cómo puede implementarse un entorno con servicios web disponibles aún cuando falle un servidor?
    • -
    -
    - - - - -
    - -
    -
    Especificaciones de entrega
    -

    Por medio de tu repositorio individual en bitbucket o github. Recuerda incluir tanto la carpeta del servicio como la del cliente.

    -
    -
    -
    - - - - - - - - - - diff --git a/backup/lab26Seguridad.html b/backup/lab26Seguridad.html deleted file mode 100644 index 9f83639..0000000 --- a/backup/lab26Seguridad.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - DAW: Lab 3: CSS - - - -
    - -
    - - - -
    -
    - -

    Laboratorio 26: Taller de seguridad

    -
    - - -
    -
    - - Descripción -
    -

    En esta actividad ...

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual.
    -

    -
    -
    - -
    -
    - - Objetivos de aprendizaje
    -
      -
    • Obj 1
    • -
    • Obj 2
    • -
    -
    -
    -
    -
    Instrucciones
    -
      -
    • Haz esto...
    • -
    • Luego esto...
    • -
    -
    -
    - -
    -
    - - Preguntas a responder -
    -
      -
    • Pregunta 1
    • -
    • Pregunta 2
    • -
    -
    -
    -
    -
    Recursos
    - - - - - - - -
    -
    -
    -
    - - Especificaciones de entrega -
    -

    A través de tu repositorio personal (Bitbucket o GitHub)

    -
    -
    - - - -
    -
    - - - - - - - - - diff --git a/backup/lab26jquery.html b/backup/lab26jquery.html deleted file mode 100644 index 10cdc24..0000000 --- a/backup/lab26jquery.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - - - - - - - - Lab 26: Ajax - - - -
    - -
    - - - -
    -
    - -

    Lab 26: AJAX

    -
    -
    - -
    - -
    -
    - - Descripción -
    -

    En esta actividad aprenderás a realizar peticiones asíncronas con ayuda de la librería jQuery.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual. -
    -

    -
    -
    - -
    -
    - Objetivos de aprendizaje -
    -
      -
    • Explorar jquery para implementar AJAX
    • -
    -
    -
    - -
    -
    - Instrucciones -
    -
      -
    • Descarga la librería jQuery.
    • -
    • Revisa el tutorial jQuery - AJAX get() and post() Methods de w3schools.
    • -
    • Revisa la documentación de jQuery para realizar peticiones tipo GET y POST, y cómo mandar a llamar la función de callback.
    • -
    • Para alguno de tus laboratorios anteriores (o si lo prefieres empieza de 0), integra al menos 2 componentes de jQuery. -
        -
      • Indica en alguna parte del sitio cuáles fueron los 2 componentes jQuery que utilizaste. -
      • -
      • Utiliza una arquitectura MVC.
      • -
      • La aplicación debe tener coherencia y cierto nivel de complejidad. -
      • -
      • Recuerda que tu aplicación debe ser agradable para el usuario, y que las preguntas deben contestarse en alguna página dentro de tu sitio.
      • -
      -
    • -
    -
    -
    - -
    -
    - Preguntas a responder -
    -
      -
    • Elabora un diagrama y explica cómo funciona AJAX.
    • -
    • ¿Qué alternativas a jQuery existen?
    • -
    • ¿Qué es una promesa en js?
    • -
    • ¿Cómo funcionan async y await?
    • -
    -
    -
    - - - -
    - - -
    -
    - - Especificaciones de entrega -
    -

    A través de tu repositorio personal (Bitbucket o GitHub).

    -
    - -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/backup/lab27WS.html b/backup/lab27WS.html deleted file mode 100644 index 99e04cb..0000000 --- a/backup/lab27WS.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - Lab 26: Servicios web - - - -
    - -
    - - - -
    -
    -

    Lab 26: Servicios web

    -
    - -
    -
    Descripción
    -

    En esta actividad exploraremos algunos APIs de aplicaciones web, con el objetivo de que aprendas a integrar funcionalidad en tus propias aplicaciones.

    -
    -
    - -
    -
    Objetivos de aprendizaje
    -

    - Entender qué son los servicios web y su evolución.
    -

    -
    -
    - -
    -
    Instrucciones
    -
      -
    • -

      Revisa junto con tu profesor, la presentación de Servicios Web.

      -

      En parejas deberán resolver la siguiente implementación:

      -
    • -
    • -

      Problema: Batalla Naval

      -

      Objetivo: Este es un RESTful Webservice el cual provee el backend para jugar el famoso batalla naval a través de HTTP.

      -

      Reglas:

      -
        -
      • Mapa: Cada jugador tiene un mama dedicado. El mapa tiene un tamaño de 10x10 cuadrantes.
      • -
        -
      • Estados: Deberán existir al menos los estados: {SETEANDO,JUGANDO,FINALIZADO}
      • -
        -
      • Como colocar los barcos:
      • -
          -
        • Los barcos son construidos de celdas conectadas en línea recta solamente.
        • -
        • Los barcos no se deben tocar el uno al otro.
        • -
        • Cada jugador puede colocar 10 barcos.
        • -
        • 1 Portaaviones (5 celdas)
        • -
        • 2 Cruceros (4 celdas)
        • -
        • 3 Destructores (3 celdas)
        • -
        • 4 submarinos (2 celdas)
        • -
        -
        -
      • Estado del juego:
      • -
      • Se debe lanzar una moneda (no literalmente) para saber que jugador inicia el juego.
      • -
      • Cuando un jugador golpea a la nave, se marca como golpeada y puede continuar el ataque.
      • -
      • Cuando un jugador no golpee a la nave, es el turno del oponente.
      • -
        -
      • Fin del juego: El juego termina cuando un jugador pierde todas sus naves.
      • -
        -
      • Documentación del API:
      • -
      • Nota: Es importante que una petición que no se pueda hacer según el estado del juego regrese su error correspondiente.
      • -
      • GET /dice - Esta es la moneda que decide quien inicia el juego.
      • -
      • GET /player/:playerNumber - Devuelve un resumen del jugador introducido {1,2}.
      • -
      • GET /game/create - Elimina el juego actual y crea un nuevo juego desde 0.
      • -
      • POST /game/create/:player - Solo se puede ejecutar al inicio de un nuevo juego y recibe las posiciones de los barcos del jugador.
      • -
      • GET /game/status - Devuelve el estatus actual del juego.
      • -
      • POST /game/turn - Recibe la coordenada de disparo del siguiente jugador, si el juego ha terminado no se debe permitir ninguna acción.
      • - - -
      -
    • - -
    -
    - -
    - -
    -
    Preguntas
    -
      -
    • - -
    • -
    -
    - - - - -
    - -
    -
    Especificaciones de entrega
    -

    A través de tu repositorio personal (Bitbucket o GitHub).

    -
    -
    - - - -
    - -
    - - - - - - - - - diff --git a/backup/lab2ControlVersiones.html b/backup/lab2ControlVersiones.html deleted file mode 100644 index b7292c4..0000000 --- a/backup/lab2ControlVersiones.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - - - Lab 2: Control de versiones - - - -
    - -
    - - - -
    -
    - -

    Laboratorio 2: Control de versiones

    -
    -
    - -
    - -
    -
    - - Descripción -
    -

    En esta actividad configurarás tu sistema de control de versiones con git, el cual servirá para que realices todas tus entregas individuales del semestre.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual. -
    -

    -
    -
    - -
    -
    - - Objetivos de aprendizaje
    -
      -
    • Comprender los principios sobre los que trabajan los sistemas de control de versiones
    • -
    • Controlar las versiones del trabajo individual por medio de git. Particularmente dominar los comandos clone, add, commit y push.
    • -
    -
    -
    - -
    -
    - - Instrucciones
    -
      -
    • Revisa junto con tu profesor la presentación Control de versiones.
    • -
    • Crea con tu correo del Tec, una cuenta en BitBucket, en GitHub o en GitLab.
    • -
    • Crea un repositorio remoto y asegúrate de que tu repositorio sea público para que tus compañeros y profesores puedan tener acceso a él.
    • -
    • Instala y configura git en tu entorno de desarrollo y sincroniza tu repositorio local con tu repositorio remoto.
    • -
    • Agrega el laboratorio 1 a tu repositorio local, y posteriormente sincroniza tu repositorio local con tu repositorio remoto
    • -
    • Añade la url pública de tu repositorio a tu malla de evaluación en la sección correspondiente, para que se pueda revisar y retroalimentar tu trabajo. Realizar esta acción es indispensable para tener calificación en los laboratorios. No realizarla implica 0 en TODAS las actividades que se entregan por medio del repositorio individual.
    • -
    -
    -
    - - -
    - -
    -
    - - Especificaciones de entrega -
    -

    En tu malla de evaluación individual en la sección correspondiente

    -
    -
    - -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/backup/lab2Html.html b/backup/lab2Html.html deleted file mode 100644 index a6314db..0000000 --- a/backup/lab2Html.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - Actividad - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Actividad: Lab 2: XHTML y HTML5.
    - Módulo: conceptos fundamentales.
    Descripción
    -
      -
    • En esta actividad se hará un breve repaso sobre XHTML y - HTML5.
    • -
    -
    Modalidad
    -
      -
    • Individual.
    • -
    -
    Objetivos de la - actividad
    -
      -
    • Introducir la tecnología HTML5
    • -
    • Revisar las principales etiquetas HTML (imágenes, - hipervínculos, listas, tablas, formas)
    • -
    • Implementar interfaces de usuario HTML
    • -
    • Revisar editores HTML
    • -
    -
    Instrucciones
    -
      -
    • Revisa los siguientes sitios de editores html: - -
    • -
    • Instala y/o configura el (los) de tu preferencia. Eres libre de utilizar cualquier otro que te agrade que no esté en la lista anterior.
    • -
    • Crea una página personal o un pequeño sitio donde muestres - el uso de las principales etiquetas HTML. Puedes hablar de tus - principales proyectos o aficiones, incluir artículos - interesantes tuyos, sobre tí, o sobre algo que te apasione. - Usa componentes semánticos como por ejemplo <header>, - <footer> o <strong> en - lugar de <div id="header">, <div - id="footer"> y <b>. El sitio o - página debe incluir alguna forma con controles.
    • -
        -
      • No utilices etiquetas desaprobadas.
      • -
      • Recuerda incluir tus datos e información de contacto - (nombre, matrícula, correo electrónico).
      • -
      • Utiliza tu creatividad.
      • -
      • No es necesario - que la página cuente con estilos, ni JavaScript.
      • -
      • Pon el nombre del editor HMTL que utilizaste y el enlace al sitio del editor como pie de página.
      • -
      • Valida tus documentos con la herramienta validator.w3.org -
      • -
      • Pon las siguientes preguntas en algún lugar del sitio y - dales respuesta.
      • -
      -
    -

    Preguntas

    -
      -
    • ¿Qué significa que un atributo HTML5 esté depreciado o desaprobado (deprecated)? Menciona algunos elementos de HTML 4 que en HTML5 estén desaprobados.
    • -
    • ¿Cuáles son las diferencias principales entre HTML 4 y HTML5?
    • -
    • ¿Qué componentes de estructura y estilo tiene una tabla?
    • -
    • ¿Cuáles son los principales controles de una forma HTML5?
    • -
    • ¿Qué tanto soporte HTML5 tiene el navegador que utilizas? - Puedes utilizar la siguiente página para descubrirlo: http://html5test.com/ (Al responder la pregunta recuerda poner el navegador que utilizas)
    • -
    -
      -
    -
    Recursos
    - - - - - - - - - - - - - -
    Elementos semánticos de html5Elementos semánticos de un artículo en html5
    - - - -
    - -
    Especificaciones de - entrega
    -
      -
    • A través de Blackboard
    • -
    -
    © 2021 Escuela de Ingeniería y Ciencias - Tecnológico de Monterrey en Querétaro
    -
    - - diff --git a/backup/lab2ejemploHtml4.html b/backup/lab2ejemploHtml4.html deleted file mode 100644 index 7241403..0000000 --- a/backup/lab2ejemploHtml4.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - -
    -

    Lab 2 DAW

    -
    -
    - Este es el cuerpor del artículo -
    - - - \ No newline at end of file diff --git a/backup/lab3CSS.html b/backup/lab3CSS.html deleted file mode 100644 index 45aa28f..0000000 --- a/backup/lab3CSS.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - - - - - - Lab 3: CSS - - - -
    - -
    - - - -
    -
    - -

    Laboratorio 3: CSS

    -
    -
    - -
    - -
    -
    - - Descripción -
    -

    En esta actividad se hará un repaso sobre CSS.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual. -
    -

    -
    -
    - -
    -
    - - Objetivos de aprendizaje
    -
      -
    • Comprender el funcionamiento de las hojas de estilo en cascada
    • -
    • Aplicar los 3 niveles de estilos (en línea, documento y externo)
    • -
    • Aplicar los diferentes tipos de selectores (genéricos, de clase, id, universales y pseudo clases)
    • -
    • Explorar las propiedades de fuentes, listas y texto
    • -
    • Comprender el modelo de caja (The Box Model)
    • -
    • Aprender a separar la presentación del contenido en documentos HTML
    • -
    -
    -
    - -
    -
    - - Instrucciones
    -
      -
    • Revisa la presentación CSS.
    • -
    • Crea un CSS externo y agrégalo al documento(s) que elaboraste en el laboratorio de html para agregarle una buena presentación a tu sitio.
    • -
    • El CSS debe contener al menos un estilo definido con cada uno de los selectores y el estilo debe ser aplicado al documento. Puedes utilizar como guía o o ayudarte de algunos de los sitios web que se enlistan en la sección de Recursos, o en algún otro sitio. -
        -
      • Asegúrate que tus documentos HTML no tengan estilos en línea. -
      • -
      -
    • -
    • Para un mejor rendimiento de tu sitio, crea una versión minimizada de tu CSS y enlázala a tu sitio en lugar del CSS que acabas de crear. Puedes apoyarte de herramientas como http://cssminifier.com/
    • -
    • Agrega las preguntas con sus respectivas respuestas en el documento HTML
    • -
    -
    -
    - -
    -
    - - Preguntas a responder -
    -
      -
    • Como ingeniero de software ¿cuál es tu recomendación sobre el uso de !important en un CSS? 
    • -
    • Si se pone una imagen de fondo en una página HTML, ¿por qué debe escogerse con cuidado?
    • -
    • Como ingeniero de software, ¿cuál es tu recomendación al elegir las unidades de un propiedad de estilo entre %, px y pt?
    • -
    • ¿Por qué el uso de una versión minimizada del CSS mejora el rendimiento del sitio?
    • -
    -
    -
    - - -
    - -
    -
    - - Especificaciones de entrega -
    -

    A través de tu repositorio personal (Bitbucket o GitHub)

    -
    -
    - - - -
    - -
    - - - - - - - - - - \ No newline at end of file diff --git a/backup/lab4IntroJS.html b/backup/lab4IntroJS.html deleted file mode 100644 index 49a509c..0000000 --- a/backup/lab4IntroJS.html +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - - - - - - - - Lab 4: Fundamentos de JS - - - - - - - -
    - -
    - -
    - - - -
    -
    -

    Laboratorio 4: Fundamentos de JavaScript

    -
    - -
    -
    - - Descripción -
    -

    En esta actividad se hará una introducción a JavaScript.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual. -
    -

    -
    -
    - -
    -
    - - Objetivos de aprendizaje
    -
      -
    • Conocer el propósito y las características principales de JavaScript
    • -
    • Conocer las reglas básicas de sintaxis de JavaScript
    • -
    • Elaborar programas básicos con JavaScript
    • -
    -
    -
    - -
    -
    - - Instrucciones
    -
      -
    • Revisa la presentación Fundamentos - de JavaScript
    • -
    • Escribe, prueba y corrige scripts de JavaScript para los siguientes problemas. Cuando se requiera escribir funciones, es necesario incluir un script para probar la función con un conjunto adecuado de casos de prueba. Para automatizar las pruebas, puedes utilizar console.assert() . Además, es importante permitir al usuario ver los resultados de las funciones en un documento HTML. -
        -
      1. - 1: -
        Entrada: un número pedido con un prompt. Salida: Una tabla con los números del 1 al número dado con sus cuadrados y cubos. Utiliza document.write para producir la salida -
      2. -
      3. - 2: -
        Entrada: Usando un prompt se pide el resultado de la suma de 2 números generados de manera aleatoria. Salida: La página debe indicar si el resultado fue correcto o incorrecto, y el tiempo que tardó el usuario en escribir la respuesta. -
      4. -
      5. - 3: -
        Función: contador. - Parámetros: Un arreglo de números. Regresa: La cantidad de números negativos en el arreglo, la cantidad de 0's, y la cantidad de valores mayores a 0 en el arreglo.
      6. -
      7. - 4: -
        Función: promedios. Parámetros: Un arreglo de arreglos de números. Regresa: Un arreglo con los promedios de cada uno de los renglones de la matriz.
      8. -
      9. - 5: -
        Función: inverso. - Parámetros: Un número. Regresa: El número con sus dígitos en orden inverso.
      10. -
      11. - 6: -
        Crea una solución para un problema de tu elección (puede ser algo relacionado con tus intereses, alguna problemática que hayas identificado en algún ámbito, un problema de programación que hayas resuelto en otro lenguaje, un problema de la ACM, entre otros). El problema debe estar descrito en un documento HTML, y la solución implementada en JavaScript, utilizando al menos la creación de un objeto, el objeto además de su constructor deben tener al menos 2 métodos. Muestra los resultados en el documento HTML.
      12. -
      -
    -
    - -
    - -
    -
    - - Preguntas a responder -
    -
      -
    • ¿Qué diferencias y semejanzas hay entre Java y JavaScript?
    • -
    • ¿Qué métodos tiene el objeto Date? (Menciona al menos 5*)
    • -
    • ¿Qué métodos tienen los arreglos? (Menciona al menos 5*)
    • -
    • ¿Cómo se declara una variable con alcance local dentro de una función?
    • -
    • ¿Qué implicaciones tiene utilizar variables globales dentro de funciones?
    • -
    - -
    - - -
    - -
    -
    - - Especificaciones de entrega -
    -

    A través de tu repositorio personal

    -
    -
    - - - -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/backup/lab5FrontEnd.html b/backup/lab5FrontEnd.html deleted file mode 100644 index a555743..0000000 --- a/backup/lab5FrontEnd.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - Lab 5: Frameworks de estilo - - - -
    - -
    - - - -
    -
    - -

    Lab 5: Frameworks de estilo

    -
    - - -
    -
    - - Descripción -
    -

    En esta actividad exploraremos algunos de los frameworks de estilo para aplicaciones web, y aprenderás a usar uno de estos frameworks para mejorar la experiencia del usuario.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual. -
    -

    -
    -
    - -
    -
    - - Objetivos de aprendizaje
    -

    - Conocer, explorar y aplicar frameworks de estilos para aplicaciones web. -

    -
    -
    - -
    -
    - - Instrucciones
    - -
      -
    • -

      Revisa los siguientes enlaces a sitios de frameworks de Front-end:

      - -
    • -
    • -

      Selecciona uno de los frameworks. Coordínate con tu equipo para que cada uno de los miembros, seleccione un framework diferente y puedan compartir su experiencia.

      -
    • -
    • -

      Aplica el framework y sus componentes a alguno de tus laboratorios o proyectos anteriores, a algún prototipo que elabores de tu proyecto, o bien elabora una pequeña aplicación.

      -
    • -
    • -

      Responde a las preguntas dentro de tu aplicación.

      -
    • -
    -
    -
    - -
    -
    - - Preguntas a responder -
    -
      -
    • Describe Material design
    • -
    -
    -
    - -
    -
    - - Recursos
    - - - - - -
    -
    - - -
    -
    - - Especificaciones de entrega -
    -

    A través de tu repositorio personal.

    -
    -
    - - - -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/backup/lab5POE.js b/backup/lab5POE.js deleted file mode 100644 index 4b2b4b0..0000000 --- a/backup/lab5POE.js +++ /dev/null @@ -1,38 +0,0 @@ -function muestra() { - document.getElementById("muestra").innerHTML = - '
  • Realiza los siguientes tutoriales sobre la propiedad de estilo position y sus atributos top y left: http://www.w3schools.com/cssref/pr_class_position.asp , http://www.w3schools.com/jsref/prop_style_position.asp , http://www.w3schools.com/cssref/pr_pos_top.asp
  • ' + - '
  • Realiza los siguientes tutoriales sobre el estilo de las letras: http://www.w3schools.com/css/css_font.asp , http://www.w3schools.com/cssref/pr_font_font-size.asp , http://www.w3schools.com/jsref/prop_style_fontstyle.asp
  • ' + - '
  • Realiza los siguientes tutoriales sobre la propiedad de estilo visibility: http://www.w3schools.com/cssref/pr_class_visibility.asp , http://www.w3schools.com/jsref/prop_style_visibility.asp
  • ' + - '
  • Con JavaScript y HTML5 [y quizás CSS], desarrolla una página' + - " para validar passwords. La página debe tener una forma con 2"+ - " campos, el campo de password, y el campo de verificar"+ - " password. Utiliza al máximo tu creatividad e ingeniería para"+ - " que la página sea un validador de passwords de estado del"+ - " arte, con la mejor experiencia para el usuario.
  • "+ - '
  • Con JavaScript y HTML5 [y quizás CSS], desarrolla una página'+ - " para vender 3 productos de tu interés, con los precios y"+ - " promociones a tu gusto. La página debe permitir al usuario"+ - " escoger la cantidad de unidades de cada producto, y debe"+ - " mostrar el precio total, el IVA que se está cargando, y toda"+ - " la información que consideres pertinente para que la"+ - " experiencia del usuario sea la mejor. La página debe validar"+ - " los rangos de las unidades de cada producto.
  • "+ - '
  • [Opcional] Con JavaScript y HTML5 y CSS, desarrolla una página con'+ - " alguna temática o problema de tu interés. La página debe"+ - " contener una forma y debes realizar las validaciones necesarias."+ - " Después de validar la forma, la página debe desplegar"+ - " información relacionada con los datos introducidos en la forma,"+ - " es decir la solución del problema o información respectiva a"+ - " los datos introducidos.
  • "+ - '
  • A partir de un documento o sitio de los anteriores, agrega las siguientes características:' + - '' + - '
  • ' + - '
  • Responde a las preguntas en el documento HTML
  • ' + - '
  • Agrega al documento HTML una lista de enlaces con otras fuentes que hayas consultado para la realización de este laboratorio.
  • ' + - ""; - } \ No newline at end of file diff --git a/backup/lab6DynDocsJS.html b/backup/lab6DynDocsJS.html deleted file mode 100644 index e357d3d..0000000 --- a/backup/lab6DynDocsJS.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - Lab 6: Documentos dinámicos con JavaScript - - - -
    - -
    - - - -
    -
    - -

    Lab 6: Documentos dinámicos - con JavaScript

    -
    - -
    -
    - - Descripción -
    -

    En esta actividad profundizaremos en la manipulación de documentos HTML con JavaScript.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual. -
    -

    -
    -
    - - -
    -
    - - Objetivos de aprendizaje
    -
      -
    • Profundizar en el dominio de JavaScript, HTML y CSS
    • -
    • Desarrollar competencias de programación orientada a eventos
    • -
    • Que seas capaz de elaborar documentos HTML dinámicos manipulándolos con JavaScript.
    • -
    -
    -
    - -
    -
    - - Instrucciones
    - -
    - -
    - -
    -
    - - Preguntas a responder -
    -
      -
    • ¿Cuáles son las diferencias entre los posibles valores de la propiedad position?
    • -
    • ¿Cuáles son los valores estándar para la propiedad visibility?
    • -
    • ¿Qué es el zIndex y para qué sirve?
    • -
    -
    -
    - - -
    - -
    -
    - - Especificaciones de entrega -
    -

    A través de tu repositorio personal (Bitbucket o GitHub)

    -
    -
    - - - -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/backup/lab6POE.html b/backup/lab6POE.html deleted file mode 100644 index b2dc219..0000000 --- a/backup/lab6POE.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - - - - - - Lab 6: Programación orientada a eventos - - - -
    - -
    - - - -
    -
    -

    Lab 6: Programación - orientada a eventos

    -
    -
    - -
    - -
    -
    - - Descripción -
    -

    En esta actividad se abordará el paradigma de programación orientada a eventos.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual. -
    -

    -
    -
    - -
    -
    - - Objetivos de aprendizaje
    -
      -
    • Profundizar en el paradigma de programación orientada a eventos en páginas web
    • -
    • Entender y aprender a manipular el DOM con JS para manipular dinámicamente las páginas web
    • -
    -
    -
    - -
    -
    - - Instrucciones
    - -
    -
    - -
    -
    - - Preguntas a responder -
    -
      -
    • ¿Por qué es una buena práctica usar JavaScript para checar que sean válidos los inputs de las formas antes de enviar los datos al servidor?
    • -
    • ¿Cómo puedes saltarte la seguridad de validaciones hechas con JavaScript?
    • -
    • Si te puedes saltar la seguridad de las validaciones de JavaScript, entonces ¿por qué la primera pregunta dice que es una buena práctica?
    • -
    -
    -
    - - -
    - -
    -
    - - Especificaciones de entrega -
    -

    A través de tu repositorio personal (Bitbucket o GitHub)

    -
    -
    - -
    -
    - - - - - - - - - \ No newline at end of file diff --git a/backup/lab7Ramas.html b/backup/lab7Ramas.html deleted file mode 100644 index b4a59fa..0000000 --- a/backup/lab7Ramas.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - - - - - - - - - - Lab 7: Manejo de ramas - - - -
    - -
    - - - -
    -
    -

    Lab 7: Manejo de ramas

    -
    - -
    -
    - - Descripción -
    -

    En esta actividad exploraremos el uso de ramas para controlar e integrar diferentes versiones de código.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Colaborativa -
    -

    -
    -
    - -
    -
    - - Objetivos de aprendizaje
    -

    - Conocer, explorar y aplicar frameworks de estilos para aplicaciones web. -

    -
    -
    - -
    -
    - - Instrucciones
    - -
      -
    • -

      - Presta mucha atención a la demostración del profesor en la sesión de clase. Es importante que preguntes conforme te van surgiendo dudas. -

      -
    • -
    • -

      - En equipo, creen un repositorio para su proyecto en BitBucket, GitHub o GitLab. -

      -
    • -
    • -

      - Una persona del equipo, deberá clonar el repositorio de manera local, y a partir de la rama main o master, deberá crear la rama develop, después creará una rama adicional y deberá agregar un archivo index.html y sincronizar la rama local, con la rama remota, para finalmente hacer un merge a través de un Pull Request con develop. -

      -

      A partir de este momento, éste será su espacio de trabajo en su proyecto (a.k.a. Single Repository of Truth). Únicamente el código que se encuentre integrado en las ramas main o master y develop, formará oficialmente parte de su proyecto y se considerará como evidencia para evaluación.

      -
    • -
    • -

      - Una persona por equipo debe compartir el enlace del repositorio de equipo junto con los nombres y usuarios de todos sus miembros en el canal de discord del equipo, para que se pueda revisar y retroalimentar su trabajo. -

      -

      También deberán agregar a su repositorio a los profesores con usuarios: black4ninja y strike277.
      Realizar esta acción es indispensable para tener calificación en los avances de proyecto. No realizarla implica 0 en TODAS las actividades que se entregan por medio del repositorio de equipo.

      -

      En ningún momento deberán existir commits directos a las ramas main, master o develop, solo merges a través de Pull Request que hayan sido validados por el equipo.

      -

      Deberán eliminar los branches personales o por features que vayan generando, por ejemplo: cuando todos hayan finalizado el trabajo deberán existir solo main o master y develop.

      -
    • -
    • -

      Algunos puntos importantes a considerar:

      -
        -

        -Las ramas main o master y develop son de integración, nunca se escribe código directamente en ellas.

        -

        -Todo el código debe escribirse en ramas personales, derivadas siempre de la versión más reciente de develop.

        -

        -Idealmente, en cada sesión de trabajo debe crearse una nueva rama personal nombrada nombre/feature. Durante la sesión debe terminarse el trabajo y el código debe quedar estable para que al final de la sesión, la rama personal se integre a la rama develop.

        -

        -Idealmente, en cada sesión de trabajo deben realizarse varios commits, cada uno, con una unidad pequeña, lógica y completa de trabajo.

        -

        -Entre más tiempo pase entre una integración y otra, mayor es la probabilidad de conflictos, y más riesgoso es arreglarlos, por lo que es importante integrar el trabajo frecuentemente para reducir esta posibilidad.

        -
      -
    • -
    -
    -
    - -
    -
    - - Preguntas a responder -
    -
      -
    • -
    -
    -
    - - -
    - - -
    -
    - - Especificaciones de entrega -
    -

    En el canal de discord del equipo

    -
    -
    - -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/backup/lab7XML.html b/backup/lab7XML.html deleted file mode 100644 index 00a8319..0000000 --- a/backup/lab7XML.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - Actividad - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Actividad: Lab 7: XML y XSLT
    - M�dulo: Paradigmas y aplicaciones cliente-servidor
    Descripci�n
    -
      -
    • En esta actividad haremos una introducci�n a XML.
    • -
    -
    Modalidad
    -
      -
    • Individual.
    • -
    -
    Objetivos de la - actividad
    -
      -
    • Que conozcas las tecnolog�as XML y sus principales - aplicaciones
    • -
    • Que desarrolles competencias para dise�ar documentos XML
    • -
    • Que seas capaz de de presentar la informaci�n de un - documento XML con CSS, y a trav�s de transformaciones XSLT.
    • -
    -
    Instrucciones
    -
      -
    • Revisa la presentaci�n XML
    • -
    • Revisa las siguientes p�ginas: http://www.xml.com/pub/a/98/10/guide0.html - , http://www.w3schools.com/xml/default.asp - , http://www.w3schools.com/xml/xml_display.asp - , http://www.w3schools.com/xsl/ - ,
    • -
    • Dise�a un documento XML para guardar informaci�n sobre - alguna tem�tica de tu inter�s, o de impacto social, ambiental, - o educativo. El documento debe incluir tags - anidadas y atributos, utilizados de la manera m�s - conveniente. Incluye al menos 4 ejemplos de datos de ejemplo. - [Si te sientes muy motivado, adem�s puedes crear un XML - Schema, para tu documento y que pueda utilizarse como - especificaci�n para futuros documentos.]
    • -
    • Crea un CSS para el documento XML y �salo para desplegar el - documento.
    • -
    • Crea una hoja de estilos XSLT y �sala para desplegar el - documento.
    • -
    -

    Preguntas

    -
      -
    • �Cu�les son los objetivos de las tecnolog�as XML?
    • -
    • �Bajo qu� circunstancias son mejores las tags - anidadas que los atributos de un tag?
    • -
    • �Bajo qu� circunstancias son mejores los atributos de un tag que las tags - anidadas?
    • -
    • �Qu� ventajas tiene utilizar XML - Schemas sobre DTD's?
    • -
    • �Cu�l es tu opini�n sobre el almacenamiento de datos en - documentos XML?
    • -
    -
      -
    -
      -
    -
    Recursos
    - -
    Especificaciones de - entrega
    -
      -
    • A trav�s de Blackboard
    • -
    -
    © 2021 Escuela de Ingeniería y Ciencias - Tecnológico de Monterrey en Querétaro
    -
    - - diff --git a/backup/lab8introNode.html b/backup/lab8introNode.html deleted file mode 100644 index d1b920c..0000000 --- a/backup/lab8introNode.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - - - - - - - - Lab 8: Introducción al back-end - - - -
    - -
    - - - -
    -
    -

    Lab 8: Introducción al back-end

    -
    -
    - -
    - -
    -
    - - Descripción -
    -

    En esta actividad haremos una introducción al desarrollo en el back-end con node.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual. -
    -

    -
    -
    - -
    -
    - - Objetivos de aprendizaje
    -
      -
    • Entender cómo funcionan las aplicaciones web
    • -
    • Preparar el ambiente de trabajo para hacer desarrollo en el back-end
    • -
    • Instalar y ejecutar un servidor de aplicaciones web
    • -
    • Atender peticiones HTTP desde el servidor y mandar respuestas HTTP
    • -
    -
    - -
    -
    - - Instrucciones
    -
      -
    • Sigue la demostración del profesor en la sesión de clase.
    • -
    • Instala Node.js. Node.js es un ambiente de ejecución de JavaScript, el cual, a diferencia de js que se ejecuta en el navegador, permite tener acceso al sistema de archivos de la computadora, y ejecutar programas como servidores web.
    • -
    • Sigue la demostración del profesor en la sesión de clase sobre los ejemplos básicos de node.
    • -
    • Escribe, prueba y ejecuta con node, scripts de js para los siguientes ejercicios y problemas. Muestra los resultados en consola: -
        -
      • Una función que reciba un arreglo de números y devuelva su promedio.
      • -
      • Una función que reciba un string y escriba el string en un archivo de texto. Apóyate del módulo fs.
      • -
      • Escoge algún problema que hayas implementado en otro lenguaje de programación, y dale una solución en js que se ejecute sobre node.
      • -
      -
    • -
    • Sigue la demostración del profesor en la sesión de clase sobre los ejemplos básicos para crear un servidor web que se ejecute sobre node, reciba peticiones de un cliente, y le responda.
    • -
    • Crea una pequeña aplicación web que al enviar una petición al servidor, devuelva una de las páginas que creaste anteriormente en tus laboratorios.
    • -
    -
    - -
    - -
    -
    - - Preguntas a responder -
    -
      - -
    -
    -
    - - -
    -
    - -
    -
    - - Especificaciones de entrega -
    -

    A través de tu repositorio personal

    -
    -
    - -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/backup/laboratorios/lab8_access.html b/backup/laboratorios/lab8_access.html deleted file mode 100644 index 71d6057..0000000 --- a/backup/laboratorios/lab8_access.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - - - - - - - - - Lab 9: Bases de Datos de Escritorio (MS Access) - - - - -
    - - -
    -
    -

    Laboratorio 9: Bases de Datos de Escritorio (MS Access)

    -
    - -
    -
    - - Modalidad -
    -

    - Individual.
    -

    -
    -
    - -
    -
    Objetivos de aprendizaje
    -
      -
    • Usar un DBMS (Database Management System) de escritorio, Microsoft Access, - para presentar algunas de las actividades necesarias para administrar bases de datos. -
    • -

      Nota: Las imágenes de este laboratorio fueron hechas usando Microsoft Access 2007

      - -
    - -
    -
    - - Instrucciones
    -
      -
    • - -

      Crear una base de datos

      - -

      La primera actividad en el proceso es crear una base de datos. En esta actividad se establece - el lugar o espacio en el que físicamente será alojada una base de datos. - En el caso de MS Access, el procedimiento es muy sencillo:

      - -
        -
      1. Iniciar el programa de Microsoft Access.
      2. -
      3. Selecciona crear una base de datos en blanco.
      4. -
      5. Selecciona la ruta (path) en que será creada la base de datos.
      6. -
      7. Deberás usar la extensión .mdb solo para Access 2003, para la versión 2007 puedes usar la extensión .accdb
      8. -
      9. Indica el nombre para la base de datos (te recomiendo usar tu matrícula) con la extensión .mdb -
      -

      - -

      Crear tablas

      -

      Una definición operativa simple de base de datos relacional es "colección de tablas interrelacionadas". - De aquí que una de las tareas básicas en la administración de bases de datos consista en crear y modificar tablas.

      -

      En el fólder de tablas de la base de datos que acabas de crear, - utiliza el botón Nuevo y la opción Vista Diseño para crear las siguientes tablas, seleccionando como llave la columna subrayada.

      -

      En la versión 2007 una tabla será creada por default, simplemente en View cambia a Design View y te pedirá el nombre de la tabla para salvarla.

      -

      Nota: Para seleccionar una columna como llave, una vez que hayas definido su nombre y tipo, posiciónate - sobre ella y has click sobre "Clave Principal", este es un ícono en forma de llave de la barra de herramientas. - En la versión 2007 por default ya viene incluida una clave principal, la cual tiene el ícono de una llave en su lado derecho.

      - -
      -

      Tabla: Materiales

      - - - - - - - - - - - - - - - - - -
      ColumnaTipo
      ClaveNumérico (entero largo) -
      DescripciónTexto (100 caracteres)
      PrecioNumérico (simple)
      - -
      - - -

      Tabla: Proyectos

      - - - - - - - - - - - - - -
      ColumnaTipo
      NúmeroNumérico (entero largo)
      DenominaciónTexto (100 caracteres)
      -

      - -
      - -

      Tabla: Proveedores

      - - - - - - - - - - - - - -
      ColumnaTipo
      RFCTexto (15 caracteres)
      RazonSocialTexto (100 caracteres)
      -

      - -
      - -

      Tabla: Entregan

      -
      - - - - - - - - - - - - - - - - - - - - - - - - - -
      ColumnaTipo
      ClaveNumérico (entero largo)
      RFCTexto (15 caracteres)
      NúmeroNumérico (entero largo)
      FechaFecha/Hora
      CantidadNumérico (entero largo)
      - -

      - Importante: Ten cuidado con el campo Fecha, ya que es neceario definirlo con - formato de fecha corta, ya que los datos de origen tienen definido ese formato de fecha. -

      - -

      - Tip: Para definir una llave de varias columnas, selecciona cada columna en el área - gris situada a la izquierda del nombre de la columna, oprimiendo la tecla Shift. - Cuando todas las columnas estén seleecionadas, oprimir el ícono de la llave. -

      -
      - -

      Establecer las relaciones entre tablas.

      -

      Es muy conveniente que las relaciones entre tablas se establezcan desde un principio. - este caso, la tabla Entregan tiene relaciones con las otras tres tablas que definimos. - En la opción Herramientas --> Relaciones, se definen estas relaciones. -

      - -
      - -

      Agregar todas las tablas a la definición de relaciones.

      - -

      - Para definir la relación entre Materiales y Entregan, selecciona la columna Clave de Materiales - y arrastra el cursos hasta la columna Clave de Entregan. Es muy importante que sea en este órden. - Marca el Check Box de Exigir Integridad Referenciada, concepto que revisaremos posteriormente. -

      - -

      - Por analogía, define las relaciones con Proyectos y Proveedores con Entregan. -

      - -
      - -

      Carga de datos.

      - -

      Otra actividad frecuente en la administración de bases de datos consiste en cargar datos a las tablas, - provenientes de otros sistemas o sencillamente de archivos que se han creado para este efecto. -

      -

      - Los datos que vas a incorporar en cada tabla se encuentran en los siguientes archivos, descárgalos en tu computadora. -

      - - - - - -

      Nota: Chrome abre los documentos en lugar de descargarlos, utiliza otro buscador - o guarda los archivos con click derecho ---> Descargar archivo enlazado.

      - -

      - Los archivos csv son archivos de texto que tienen renglones en los que cada renglón corresponde - a un registro o renglón de la tabla y en cada uno de estos renglones, los valores correspondientes - a cada columa están separados por comas en estos archivos. -

      - - -

      Cargar datos de archivos .csv

      -
      - -

      Versión (2003) Archivo --> Obtener datos externos --> Importar

      -

      Selecicona en tipo de archivo Text Files

      -

      Un wizard te irá proponiendo opciones para cargar el archivo correspondiente. Estas son las respuestas a cada paso:

      - -
        -
      1. - Selecciona la opción "Delimitado", ya que las columnas están separadas por coma. -
      2. -
      3. - Ahora te pregunta por el tipo de delimitador, para estos archivos es "coma". Asegúrate de que no esté seleccionada la opción "Primera fila contiene nombres de campos", esto porque los archivos solo contienen datos. La opción de cualificador de texto debe estar en "Ninguno". -
      4. -
      5. - Selecciona la opción de almacenar los datos de una tabla existente: selecciona la tabla con el mismo nombre que el csv correspondiente. -
      6. -
      7. - Terminar la importación. -
      8. -
      - -

      Importante: Cuando estés en el paso 3 de la tabla Entregan, has click sobre el botón de "Avanzado..." - Ahí asegúrate de que en la opción "Orden de la fecha" esté seleccionada la opción "DMA" y "/" como delimitador, - que es el formato en el que aparece la fecha en el archivo entregan.csv -

      - -
      - -

      (Versión 2007) Primero selecciona cualquier tabla -> External Data -> Text File

      -
      -
        -
      1. Escoge de qué archivo y de dónde se va a importar.

      2. -
      3. Elige la segunda opción: "Append a copy of the records to an existing table" y elige la tabla a donde vas a mandar los datos.

      4. -
      5. Escoge la opción de delimitado y en la siguiente pantalla la de coma. En la misma pantalla cuando estés - importando los datos de la tabla Entregan.csv aprieta el botón para opciones avanzadas y asegúrate de que la - parte de la fecha se vea como en la siguiente imagen.

      6. -
      7. -
      -
      -

      Verifica el contenido de cada tabla después de la importación.

      - -

      Definición de consultas.

      -

      - A fin de proporcionar a cada usuario o grupo de usuarios la información de su interés, una de las tareas del diseñador o administrador de bases de datos es definir consultas que muestran conjuntos de datos que incluyen columnas específicas, renglones específicos que pueden provenir de una tabla o de varias tablas interrelacionadas. -

      -

      - En el folder de Consultas, utilizando el botón Nuevo y la opción Vista Diseño, es posible definir consultas. Para esto, se agrega a la consulta la tabla o tablas involucradas, se seleccionan las columnas que se desea incluir en la consulta y se agregan los criterios que debe cumplir el valor de las columnas a restringir para que el renglón sea incluido. -

      - -

      - -

      Para las columnas con tipos de datos numéricos pueden utilizarse criterios como los que se ejemplifican a continuación:

      - - 1000 Significa que el valor de la columna debe ser igual a 1000.
      - > 1000 Significa que el valor de la columna debe ser mayor que 1000.
      - < 1000 Significa que el valor de la columna debe ser mayor que 1000.
      - Entre 10 y 100 Significa que el valor de la columna debe ser <=10 y <=100.
      -
      - Pregunta para pensar: (No es parte de la entrega) -

      Si estuvieras haciendo una búsqueda en un rango de fecha, como buscarías todo los datos del año 2000?

      - - -

      Para las columnas con tipo de datos de texto, se utilizan criterios como los que se ejemplifican a continuación:

      -

      "ABC" Significa que el valor de la columna debe ser igual a "ABC".

      -

      >"A" Significa que el valor de la columna debe ser mayor que "A" en el orden alfabético.

      -

      Como "*ABC*" Significa que el valor de la columna debe contener el patrón "ABC". Los asteriscos - son "comodines", es decir "ABC*" significa que inicia con "ABC", "*ABC" significa que termina con "ABC" y "*ABC*" - significa que tiene ABC en cualquier parte del valor de la columna.

      - -

      Define las siguientes consultas y guárdalas con el nombre que se indica:

      -

      Consulta Tuberías

      -

      Clave, descripción y precio unitario de los materiales cuya descripción contenga el patrón "Tub".

      -

      Consulta Caros

      -

      Clave, descripción y precio unitario de los materiales cuyo precio es mayor que 300 pesos.

      -

      Consulta Proveedores Ladrillos

      - -

      Aquí tendrás que agregar las tablas: materiales, entregan y proveedores. En la parte de abajo seleccionar - las columnas que quieras que aparezcan así como sus condiciones.

      -

      Clave del material y razón social de los proveedores que entregan productos cuya descripción contiene el patrón "Ladrillos"

      -

      Consulta Pinturas98

      -

      Aquí tendrás que agregar todas las tablas. En la parte de abajo seleccionar las columnas que quieras que aparezcan así como sus condiciones.

      - Descripción del material, razón social del proveedor, denominación del proyecto, fecha y cantidad de las entregas de pinturas realizadas durante 1998.

      - - -
      -
      - - Especificaciones de entrega -
      -

      A través de Bitbucket o GitHub con el nombre matricula.mdb para archivo de Access 2003 o matricula.accdb para archivo de Access 2007.

      -
      -
      - -
    -
    -
    - - - - - - - - - diff --git a/backup/lectura5_sql/index.html b/backup/lectura5_sql/index.html deleted file mode 100644 index 7e27e66..0000000 --- a/backup/lectura5_sql/index.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - - Álgebra relacional, SQL básico y funciones agregadas - - - -
    - -
    - - -
    -
    -

    Álgebra relacional, SQL básico y funciones agregadas

    -
    -
    - -
    - -
    -
    - - Modalidad -
    -

    - Individual
    -

    -
    -
    - -
    -
    - - Objetivos de aprendizaje
    -
      -
    • Ligar los conocimientos de álgebra relacional con comandos de SQL.
    • -
    -
    -
    - -
    -
    - - Instrucciones
    -
      -
    • Realizar la lectura de manera individual.
    • -
    -
    -
    -
    - - -
    - -
    - -
    - - - - - - - - - - \ No newline at end of file diff --git a/backup/lista proyectos exitosos.txt b/backup/lista proyectos exitosos.txt deleted file mode 100644 index fb779d0..0000000 --- a/backup/lista proyectos exitosos.txt +++ /dev/null @@ -1,3 +0,0 @@ -Cassis - DB y DAW -Lobato, Nancy - Calemusic -Jose Juan y Gemelas - Planeador Profesores diff --git a/backup/nbproject/private/private.properties b/backup/nbproject/private/private.properties deleted file mode 100644 index 3b1a22e..0000000 --- a/backup/nbproject/private/private.properties +++ /dev/null @@ -1 +0,0 @@ -browser=Chrome.INTEGRATED diff --git a/backup/nbproject/private/private.xml b/backup/nbproject/private/private.xml deleted file mode 100644 index 6807a2b..0000000 --- a/backup/nbproject/private/private.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/backup/nbproject/project.properties b/backup/nbproject/project.properties deleted file mode 100644 index 5bea33d..0000000 --- a/backup/nbproject/project.properties +++ /dev/null @@ -1,5 +0,0 @@ -config.folder= -file.reference.DAW-dise_o_2014=. -files.encoding=UTF-8 -site.root.folder=${file.reference.DAW-dise_o_2014} -test.folder= diff --git a/backup/nbproject/project.xml b/backup/nbproject/project.xml deleted file mode 100644 index 8881d63..0000000 --- a/backup/nbproject/project.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - org.netbeans.modules.web.clientproject - - - DAW - - - diff --git a/backup/noprob_csv/entregan.csv b/backup/noprob_csv/entregan.csv deleted file mode 100644 index 4b730f9..0000000 --- a/backup/noprob_csv/entregan.csv +++ /dev/null @@ -1,132 +0,0 @@ -1000,AAAA800101,5000,08/07/1998,165 -1010,BBBB800101,5001,03/05/2000,528 -1020,CCCC800101,5002,29/07/2001,582 -1030,DDDD800101,5003,21/02/1998,202 -1040,EEEE800101,5004,11/12/1999,263 -1050,FFFF800101,5005,14/10/2000,503 -1060,GGGG800101,5006,04/05/2000,324 -1070,HHHH800101,5007,23/02/1998,2 -1080,AAAA800101,5008,12/01/1999,86 -1090,BBBB800101,5009,01/08/2000,73 -1100,CCCC800101,5010,10/09/2001,699 -1110,DDDD800101,5011,28/06/2003,368 -1120,EEEE800101,5012,03/04/2001,215 -1130,FFFF800101,5013,04/04/2002,63 -1140,GGGG800101,5014,12/07/2001,219 -1150,HHHH800101,5015,04/03/1999,458 -1160,AAAA800101,5016,01/06/2000,162 -1170,BBBB800101,5017,04/02/1998,180 -1180,CCCC800101,5018,14/06/2002,407 -1190,DDDD800101,5019,12/09/1998,94 -1200,EEEE800101,5000,05/03/2000,177 -1210,FFFF800101,5001,05/11/1999,43 -1220,GGGG800101,5002,01/02/2003,24 -1230,HHHH800101,5003,06/01/2003,530 -1240,AAAA800101,5004,12/01/2003,152 -1250,BBBB800101,5005,08/07/2002,71 -1260,CCCC800101,5006,10/05/1999,460 -1270,DDDD800101,5007,10/03/1999,506 -1280,EEEE800101,5008,29/07/2002,107 -1290,FFFF800101,5009,08/01/1998,132 -1300,GGGG800101,5010,08/01/2003,119 -1310,HHHH800101,5011,12/04/2002,72 -1320,AAAA800101,5012,06/01/2003,698 -1330,BBBB800101,5013,10/12/1998,554 -1340,CCCC800101,5014,02/12/2002,324 -1350,DDDD800101,5015,09/05/1999,272 -1360,EEEE800101,5016,07/11/2000,364 -1370,FFFF800101,5017,12/02/2000,44 -1380,GGGG800101,5018,03/03/2002,302 -1390,HHHH800101,5019,12/01/2003,107 -1400,AAAA800101,5000,12/03/2002,382 -1410,BBBB800101,5001,05/02/2000,601 -1420,CCCC800101,5002,07/04/1998,603 -1430,DDDD800101,5003,02/09/1999,576 -1000,AAAA800101,5019,08/08/1999,254 -1010,BBBB800101,5018,29/03/2002,523 -1020,CCCC800101,5017,04/02/1999,8 -1030,DDDD800101,5016,05/11/2000,295 -1040,EEEE800101,5015,12/07/2002,540 -1050,FFFF800101,5014,07/03/1999,623 -1060,GGGG800101,5013,02/01/2000,692 -1070,HHHH800101,5012,03/12/1999,503 -1080,AAAA800101,5011,07/11/2002,699 -1090,BBBB800101,5010,03/01/1998,421 -1100,CCCC800101,5009,06/08/2000,466 -1110,DDDD800101,5008,10/05/1999,337 -1120,EEEE800101,5007,07/07/2001,692 -1130,FFFF800101,5006,06/07/2002,562 -1140,GGGG800101,5005,02/09/2001,583 -1150,HHHH800101,5004,10/08/2001,453 -1160,AAAA800101,5019,09/06/1999,244 -1170,BBBB800101,5018,12/11/1999,53 -1180,CCCC800101,5017,03/03/2001,334 -1190,DDDD800101,5016,04/02/2000,356 -1200,EEEE800101,5015,06/05/2000,585 -1210,FFFF800101,5014,03/11/2001,70 -1220,GGGG800101,5013,04/07/2002,658 -1230,HHHH800101,5012,09/12/2002,312 -1240,AAAA800101,5011,12/08/2000,366 -1250,BBBB800101,5010,04/04/2002,691 -1260,CCCC800101,5009,09/08/1999,631 -1270,DDDD800101,5008,03/09/1997,546 -1280,EEEE800101,5007,03/02/2000,331 -1290,FFFF800101,5006,08/02/2001,279 -1300,GGGG800101,5005,10/06/2002,521 -1310,HHHH800101,5019,02/10/2002,199 -1320,AAAA800101,5018,07/03/2000,413 -1330,BBBB800101,5017,11/08/2000,93 -1340,CCCC800101,5016,06/11/1998,674 -1350,DDDD800101,5015,02/08/1999,261 -1360,EEEE800101,5014,07/04/2002,265 -1370,FFFF800101,5013,08/04/2000,575 -1380,GGGG800101,5012,08/07/1998,645 -1390,HHHH800101,5011,08/11/2001,697 -1400,AAAA800101,5010,05/06/1998,116 -1410,BBBB800101,5009,03/05/2002,467 -1420,CCCC800101,5008,02/08/2000,278 -1430,DDDD800101,5007,09/01/1998,13 -1000,AAAA800101,5019,06/04/2000,7 -1010,BBBB800101,5018,10/11/2000,667 -1020,CCCC800101,5017,04/05/2001,478 -1030,DDDD800101,5016,09/04/1998,139 -1040,EEEE800101,5015,10/06/2000,546 -1050,FFFF800101,5014,04/06/1999,90 -1060,GGGG800101,5013,10/07/2000,47 -1070,HHHH800101,5012,01/04/2000,516 -1080,AAAA800101,5011,01/06/2003,429 -1090,BBBB800101,5010,06/06/1998,612 -1100,CCCC800101,5009,07/05/2002,523 -1110,DDDD800101,5008,09/02/2000,292 -1120,EEEE800101,5007,12/03/1998,167 -1130,FFFF800101,5006,06/05/1999,673 -1140,GGGG800101,5005,07/02/1998,651 -1150,HHHH800101,5004,01/09/2003,270 -1160,AAAA800101,5019,08/02/2002,665 -1170,BBBB800101,5018,06/08/2001,517 -1180,CCCC800101,5017,01/06/2001,216 -1190,DDDD800101,5016,07/03/2003,622 -1200,EEEE800101,5015,10/07/2000,653 -1210,FFFF800101,5014,06/09/2001,479 -1220,GGGG800101,5013,08/02/2001,653 -1230,HHHH800101,5012,08/03/1999,115 -1240,AAAA800101,5011,05/08/2003,549 -1250,BBBB800101,5010,08/05/1998,690 -1260,CCCC800101,5009,10/02/2003,2 -1270,DDDD800101,5008,12/04/2002,324 -1280,EEEE800101,5007,07/12/2002,448 -1290,FFFF800101,5006,07/01/1999,336 -1300,GGGG800101,5005,02/02/2003,457 -1310,HHHH800101,5019,03/08/2000,463 -1320,AAAA800101,5018,03/12/1999,163 -1330,BBBB800101,5017,12/06/1998,558 -1340,CCCC800101,5016,10/02/1999,11 -1350,DDDD800101,5015,05/06/1999,330 -1360,EEEE800101,5014,06/07/2001,37 -1370,FFFF800101,5013,05/06/2002,423 -1380,GGGG800101,5012,01/02/2001,147 -1390,HHHH800101,5011,06/01/2002,308 -1400,AAAA800101,5010,03/05/2002,441 -1410,BBBB800101,5009,05/11/2002,461 -1420,CCCC800101,5008,12/02/2001,444 -1430,DDDD800101,5007,10/06/2002,506 diff --git a/backup/noprob_csv/materiales.csv b/backup/noprob_csv/materiales.csv deleted file mode 100644 index bb5574b..0000000 --- a/backup/noprob_csv/materiales.csv +++ /dev/null @@ -1,44 +0,0 @@ -1000,Varilla 3/16,190 -1010,Varilla 1/8,180 -1020,Varilla 1/4,170 -1030,Varilla 4/33,200 -1040,Varilla 3/18,200 -1050,Varilla 1/2,175 -1060,Varilla 3/19,210 -1070,Varilla 5/32,210 -1080,Ladrillo rojo,50 -1090,Ladrillo gris,35 -1100,Block estndar ,30 -1110,Block semiligero,40 -1120,Sillar rosa,100 -1130,Sillar gris,110 -1140,Cantera blanca,990 -1150,Cantera gris,1210 -1160,Cantera rosa,1420 -1170,Cantera amarilla,899 -1180,Recubrimiento de piedra P1001,20 -1190,Recubrimiento de piedra P1010,32 -1200,Recubrimiento de piedra P1019,40 -1210,Recubrimiento de piedra P1028,50 -1220,Recubrimiento de piedra P1037,80 -1230,Cemento blanco,300 -1240,Arena lavada,200 -1250,Grava planch,250 -1260,Gravilla revuelta,120 -1270,Tezontle rojo,40 -1280,Tepetate rojo,34 -1290,Tubera de cobre 1/2,58 -1300,Tubera de cobre 1/4,70 -1310,Tubera de cobre 1/8,75 -1320,Tubera de cobre 3/8,80 -1330,Tubera de cobre 5/16,85 -1340,Tubera de cobre 5/8,85 -1350,Tubera de cobre 9/8,90 -1360,Pintura C1010,125 -1370,Pintura B1020,155 -1380,Pintura C1011,130 -1390,Pintura B1021,170 -1400,Pintura C1011,145 -1410,Pintura B1021,185 -1420,Pintura C1012,180 -1430,Pintura B1022,205 diff --git a/backup/noprob_csv/proveedores.csv b/backup/noprob_csv/proveedores.csv deleted file mode 100644 index bd0f9de..0000000 --- a/backup/noprob_csv/proveedores.csv +++ /dev/null @@ -1,8 +0,0 @@ -AAAA800101,Aceros del Centro -BBBB800101,Materiales Oviedo -CCCC800101,Varisa -DDDD800101,Materiales Industriales El Marqus -EEEE800101,Elementos Prefabricados El lamo -FFFF800101,Comex -GGGG800101,Tabiquera del Centro -HHHH800101,Tubasa diff --git a/backup/noprob_csv/proyectos.csv b/backup/noprob_csv/proyectos.csv deleted file mode 100644 index bc0eb7c..0000000 --- a/backup/noprob_csv/proyectos.csv +++ /dev/null @@ -1,20 +0,0 @@ -5000,Vamos Mxico,,,,,,, -5001,Aztecn,,,,,,, -5002,CIT Campeche,,,,,,, -5003,Mxico sin ti no estamos completos,,,,,,, -5004,Educando en Coahuila,,,,,,, -5005,Infonavit Durango,,,,,,, -5006,Reconstruccin del templo de Guadalupe,,,,,,, -5007,Plaza Magnolias Corregidora,,,,,,, -5008,Televisa en accin,,,,,,, -5009,Centro Cultural Corregidora,,,,,,, -5010,Hospital Infantil Dr. Gilberto Moreno,,,,,,, -5011,Remodelacin de aulas del ITPuebla,,,,,,, -5012,Restauracin de instalaciones del CEA,,,,,,, -5013,Reparacin de la plaza Valverde,,,,,,, -5014,Remodelacin de Soriana Maravillas,,,,,,, -5015,CIT Yucatan,,,,,,, -5016,Ampliacin de la carretera Quertaro - Celaya,,,,,,, -5017,Reparacin de la carretera Quertaro - Ciudad de Mxico,,,,,,, -5018,Tu cambio por la educacion,,,,,,, -5019,Quertaro limpio,,,,,,, diff --git a/backup/plantillaLab.html b/backup/plantillaLab.html deleted file mode 100644 index f0b4934..0000000 --- a/backup/plantillaLab.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - - - - - - Título - - - -
    - -
    - - - -
    -
    - -

    Título

    -
    -
    - -
    - -
    -
    - - Descripción -
    -

    Aquí va la descripción

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual.
    -

    -
    -
    - -
    -
    - Objetivos de aprendizaje -
    -
      -
    • Objetivo 1
    • -
    • Objetivo 2
    • -
    -
    -
    - -
    -
    - Instrucciones -
    -
      -
    • Instrucción 1
    • -
    • Instrucción 2
    • -
    -
    -
    - -
    -
    - Preguntas a responder -
    -
      -
    • Pregunta 1
    • -
    • Pregunta 2
    • -
    -
    -
    - - - -
    -
    - - Especificaciones de entrega -
    -

    A través de Bitbucket

    -
    - - - -
    -
    - - - - - - - - - \ No newline at end of file diff --git a/backup/proyecto.html b/backup/proyecto.html deleted file mode 100644 index aff911a..0000000 --- a/backup/proyecto.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - - - - - - DAW: Explicación del proyecto - - - -
    - -
    - - - -
    -
    - -

    Proyecto: Consultoría de aplicaciones web

    -
    -
    - -
    - -
    -
    - - Proyecto: Consultoría de aplicaciones web? -
    -

    A lo largo del curso desarrollarás un proyecto para potenciar tu aprendizaje. Si estás llevando la materia de Bases de Datos (BD), el proyecto será el mismo para ambas materias. El proyecto deberá ser un sistema web que - proponga una solución para una problemática social, ambiental, educativa, o bien para un problema de las ciencias computacionales. Si como parte de tu servicio social vas a desarrollar una aplicación web, tienes la opción de alinear ese proyecto con el curso.

    -

    Los proyectos se trabajarán en equipos base de 3 personas que estén tomando esta clase. Si estás llevando BD todos los integrantes de tu equipo deberán estar llevando la materia también y ambos profesores deben aceptar la propuesta. Si no estás cursando BD, tus compañeros de equipo tampoco deberán hacerlo.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Colaborativa.
    -

    -
    -
    - -
    -
    - - Objetivos de aprendizaje
    -
      -
    • Que desarrolles tu competencia de programación en un - paradigma cliente-servidor
    • -
    • Que desarrolles tu comepetencia de programación en un - paradigma orientado a eventos
    • -
    • Que desarrolles tus competencias para desarrollar - aplicaciones bajo una arquitectura modelo, vista, controlador
    • -
    • Que desarrolles tus competencias de diseño de bases de datos
    • -
    • Que desarrolles tus competencias para diseñar y desarrollar - servicios web
    • -
    • Que desarrolles tus competencias para diseñar aplicaciones - amigables para el usuario, y que seas capaz de evaluar de - manera formal la usabilidad de una aplicación por medio de heurísticas
    • -
    • Que te enfrentes con el reto de desplegar una aplicación web
    • -
    • Desarrollar tus competencias de trabajo colaborativo
    • -
    • Desarrollar tu competencia de administración del tiempo
    • -
    • Desarrollar tu competencia de comunicación oral
    • -
    • Desarrollar tu competencia para proponer soluciones - tecnológicas para mejorar los procesos de negocio, sociales, - ambientales y educativos
    • -
    • Desarrollar tu competencia de aprendizaje por cuenta propia - de nuevas tecnologías y herramientas
    • -
    -
    - -
    -
    - - Instrucciones
    -
      -
    • - En equipo desarrolla una aplicación web. La aplicación - debe resolver una problemática propia de las ciencias - computacionales, o bien debe tener un impacto social, - ambiental, o educativo. -
    • -
    • Una vez que tengas la idea de tu proyecto, durante las - sesiones de clase, discútela con tu profesor hasta que lleguen a - un acuerdo sobre el proyecto.
    • -
    • Elabora un breve documento sobre la visión del proyecto y - sus características.
    • -
    • Por medio de un diagramas de casos de uso, acuerden el - alcance de la aplicación con tu profesor.
    • -
    • Elaboren un mapa del sitio atienda los aspectos establecidos - en la visión, características y alcance del proyecto.
    • -
    • Para la primera entrega deberás entregar una primera versión - de la interface del usuario. Para ello utiliza tecnologías - HTML5, CSS y JavaScript. Se sugiere que te apoyes de un - framework de front-end.
    • -
    • Tu interface debe procurar ser agradable a la vista, y debe - fomentar la facilidad de uso de tu aplicación.
    • -
    • Incluye la visión del proyecto y sus características, así - como todos los artefactos de ingeniería de software que - estés utilizando dentro de una sección de tu sitio.
    • -
    • Antes de presentar, entreguen al profesor un documento - firmado por todos los integrantes del equipo, con los - porcentajes de trabajo de cada uno.
    • - -
    -
    -
    - - -
    -
    - - Recursos
    - -
    - -
    -
    - - Especificaciones de entrega -
    -

    Presentación en la sesión de clase y a por medio de un respositorio en Bitbucket

    -
    -
    - - -
    -
    - - Preguntas
    -
      -
    • -

      ¿Por qué es importante la accesibilidad?

      -

      ¿Cuáles son los lineamientos de accesibilidad que consideras más importantes? ¿Por qué?

      -

      Describe 3 cambios que harás en tu proyecto para hacerlo más accesible.

      -
    • -
    -
    - -
    -
    - - - - - - - - - \ No newline at end of file diff --git a/backup/proyecto2.html b/backup/proyecto2.html deleted file mode 100644 index 3cd547e..0000000 --- a/backup/proyecto2.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - - - - DAW: Segundo avance de proyecto - - - -
    - -
    - - - -
    -
    - -

    DAW: Segundo avance de proyecto

    -
    -
    - -
    - -
    -
    - - Descripción -
    -

    Después de la exitosa implementación del front-end de tu aplicación, es momento de iniciar la implementación del back-end de tu aplicación web.

    -

    No se espera que para este avance tengas la aplicación terminada, pero sí se espera que estén implementados los casos de uso que le dan mayor valor a tu aplicación.

    -
    - -
    -
    - - Modalidad -
    -

    - Colaborativa.
    -

    -
    - -
    -
    - - Objetivos de aprendizaje
    -
      -
    • Que desarrolles tu competencia de programación en un - apradigma cliente-servidor
    • -
    • Que desarrolles tu comepetencia de programación en un - paradigma orientado a eventos
    • -
    • Que desarrolles tus competencias para desarrollar - aplicaciones bajo una arquitectura modelo, vista, controlador
    • -
    • Que desarrolles tus competencias de diseño de bases de datos
    • -
    • Que desarrolles tus competencias para diseñar aplicaciones - amigables para el usuario, y que seas capaz de evaluar de - manera formal la usabilidad de una aplicación por medio de heurísticas
    • -
    • Que te enfrentes con el reto de desplegar una aplicación web - php
    • -
    • Desarrollar tus competencias de trabajo colaborativo
    • -
    • Desarrollar tu competencia de administración del tiempo
    • -
    • Desarrollar tu competencia de comunicación oral
    • -
    • Desarrollar tu competencia de aprendizaje por cuenta propia - de nuevas tecnologías y herramientas
    • -
    -
    - -
    -
    - - Instrucciones
    -
      -
    • En equipo desarrolla el back-end de tu aplicación web. Implementa los casos de uso que le den mayor valor a tu aplicación -
        -
      • La funcionalidad de la aplicación que implementes debe incluir al menos - una consulta para listar elementos de una base datos, una - inserción de un registro (a través de una forma html), una - modificación de un registro, y una eliminación de un - registro.
      • -
      • La aplicación debe seguir un estilo arquitectónico en capas modelo-vista-controlador.
      • -
      • Cada miembro del equipo debe implementar al menos 1 - componente AJAX. Pueden hacer uso de alguna librería - de terceros como jQuery, Dojo, entre otros.
      • - -
      • Considera la - evaluación heurística de tu aplicación realizada por tus - compañeros. Implementa al menos una de las recomendaciones. - Durante la presentación, debes presentar el estado previo a - la evaluación heurística de tu aplicación y compararlo con - el estado actual. Presenta también las recomendaciones que - se hicieron que no se implementaron.
      • -
      • La aplicación debe estar disponible en un servidor - accesible a través de la www
      • -
      • Antes de presentar, entreguen al profesor un documento firmado por todos los integrantes del equipo, con los porcentajes de trabajo de cada uno.
      • -
      • Las contribuciones de los miembros del equipo con el proyecto deben estar balanceadas.
      • -
    • -
    -
    - -
    -
    - - Recursos
    - -
    - - -
    -
    - - Especificaciones de entrega -
    -

    A través de Bitbucket

    -
    -
    - - - -
    -
    - - - - - - - - -2 \ No newline at end of file diff --git a/backup/proyecto3.html b/backup/proyecto3.html deleted file mode 100644 index 2198ab7..0000000 --- a/backup/proyecto3.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - Actividad - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Actividad: Proyecto 3: Aplicación web - avanzada
    - Módulo: Aplicaciones cliente-servidor
    Descripción
    -
      -
    • Dado el éxito de tu última aplicación, haz decidido continuar con el Construcción de software y toma de decisiones más profesionales.
    • -
    -
    Modalidad
    -
      -
    • Colaborativa.
    • -
    -
    Objetivos de la - actividad
    -
      -
    • Desarrollar tus competencias de trabajo colaborativo
    • -
    • Que desarrolles tu competencia de programación en un paradigma cliente-servidor
    • -
    • Que desarrolles tus competencias para desarrollar aplicaciones bajo una arquitectura modelo, vista, controlador
    • -
    • Que desarrolles tus competencias de diseño de bases de datos
    • -
    • Que desarrolles tus competencias para integrar servicios web en aplicaciones
    • -
    • Desarrollar tu competencia de administración del tiempo
    • -
    • Desarrollar tu competencia de comunicación oral
    • -
    • Desarrollar tu competencia para proponer soluciones tecnológicas para mejorar los procesos de negocio, sociales, ambientales y educativos
    • -
    • Desarrollar tu competencia de aprendizaje por cuenta propia de nuevas tecnologías y herramientas
    • -
    • Desarrollar tu competencia de de análisis de impacto de las herramientas tecnológicas en los individuos, organizaciones, y la sociedad para prestar servicios profesionales de manera ética y responsable
    • -
    -
    Instrucciones
    -
      -
    • En equipo, con la mínima cantidad de casos de uso, desarrolla una aplicación web que resuelva una problemática propia de las ciencias computacionales, o bien que tenga un impacto social, ambiental, o educativo.
    • -
    • Sobre la plataforma tecnológica tienes las siguientes opciones:
    • -
        -
      • Desarrolla una aplicación web JEE
      • -
      • Desarrolla un servicio web con tecnología JEE y desarrolla una aplicación php que consuma el servicio
      • -
      • Desarrolla una aplicación web con php que integre al menos 1 servicio web desarrollados por terceros (facebook, twitter, google calendar, google maps, entre muchos otros)
      • -
      • Desarrolla una aplicación web con alguna tecnología no vista en clase (meteor, python, ruby, perl, .net, JEE, entre otras)
      • -
      • Desarrolla una aplicación web php con ayuda de algún framework (symfony, - codeigniter, - phalcon, - cakephp, laravel, struts, - spring, entre - otros)
      • -
      -
    • La funcionalidad de la aplicación debe incluir al menos una consulta para listar elementos de una base datos, y una inserción de un registro a través de una forma.
    • -
    • Una vez que tengas la idea de tu proyecto, durante las sesiones de clase, discútela con tu profesor. Posteriormente por medio de diagramas de casos de uso, acuerda el alcance de la aplicación con tu profesor. Para la entrega del proyecto, incluye los diagramas de casos de uso dentro de una página de tu aplicación.
    • -
    • Para el desarrollo debes utilizar un sistema de control de versiones y mostrar evidencia de ello.
    • -
    • Aplica las heurísticas de usabilidad en tu diseño.
    • -
    • Tu aplicación debe estar construida bajo una arquitectura MVC, y debes mostrar evidencia de ello.
    • -
    • Cada miembro del equipo debe implementar al menos 1 componente AJAX. Pueden hacer uso de alguna librería predefinada como jQuery, Dojo, entre otros.
    • -
    • En este documento puedes encontrar una lista de posibles proyectos vinculados con la organización Q PET Educación Ambiental, A.C.
    • -
        -
      -
    -

    Criterios de evaluación

    - -
      -
    -
    Recursos
    -
      -

    • -
    • -
    -
    Especificaciones de - entrega
    -
      -
    • Presentación en la sesión de clase y a través de Blackboard
    • -
    -
    DR© Tecnológico de Monterrey Campus Querétaro| - Departamento de Desarrollo Académico| México, 2014
    -
    - - diff --git a/backup/recursos/3de9.ttf b/backup/recursos/3de9.ttf deleted file mode 100644 index cbad3e9..0000000 Binary files a/backup/recursos/3de9.ttf and /dev/null differ diff --git a/backup/recursos/BD.mdb b/backup/recursos/BD.mdb deleted file mode 100644 index a6fb3b2..0000000 Binary files a/backup/recursos/BD.mdb and /dev/null differ diff --git a/backup/recursos/entregan.csv b/backup/recursos/entregan.csv deleted file mode 100644 index cc6dd01..0000000 --- a/backup/recursos/entregan.csv +++ /dev/null @@ -1,132 +0,0 @@ -1000,AAAA800101,5000,8/7/1998,165 -1010,BBBB800101,5001,3/5/2000,528 -1020,CCCC800101,5002,29/7/2001,582 -1030,DDDD800101,5003,21/2/1998,202 -1040,EEEE800101,5004,11/12/1999,263 -1050,FFFF800101,5005,14/10/2000,503 -1060,GGGG800101,5006,4/5/2000,324 -1070,HHHH800101,5007,23/2/1998,2 -1080,AAAA800101,5008,12/1/1999,86 -1090,BBBB800101,5009,1/8/2000,73 -1100,CCCC800101,5010,10/9/2001,699 -1110,DDDD800101,5011,28/6/2003,368 -1120,EEEE800101,5012,3/4/2001,215 -1130,FFFF800101,5013,4/4/2002,63 -1140,GGGG800101,5014,12/7/2001,219 -1150,HHHH800101,5015,4/3/1999,458 -1160,AAAA800101,5016,1/6/2000,162 -1170,BBBB800101,5017,4/2/1998,180 -1180,CCCC800101,5018,14/6/2002,407 -1190,DDDD800101,5019,12/9/1998,94 -1200,EEEE800101,5000,5/3/2000,177 -1210,FFFF800101,5001,5/11/1999,43 -1220,GGGG800101,5002,1/2/2003,24 -1230,HHHH800101,5003,6/1/2003,530 -1240,AAAA800101,5004,12/1/2003,152 -1250,BBBB800101,5005,8/7/2002,71 -1260,CCCC800101,5006,10/5/1999,460 -1270,DDDD800101,5007,10/3/1999,506 -1280,EEEE800101,5008,29/7/2002,107 -1290,FFFF800101,5009,8/1/1998,132 -1300,GGGG800101,5010,8/1/2003,119 -1310,HHHH800101,5011,12/4/2002,72 -1320,AAAA800101,5012,6/1/2003,698 -1330,BBBB800101,5013,10/12/1998,554 -1340,CCCC800101,5014,2/12/2002,324 -1350,DDDD800101,5015,9/5/1999,272 -1360,EEEE800101,5016,7/11/2000,364 -1370,FFFF800101,5017,12/2/2000,44 -1380,GGGG800101,5018,3/3/2002,302 -1390,HHHH800101,5019,12/1/2003,107 -1400,AAAA800101,5000,12/3/2002,382 -1410,BBBB800101,5001,5/2/2000,601 -1420,CCCC800101,5002,7/4/1998,603 -1430,DDDD800101,5003,2/9/1999,576 -1000,AAAA800101,5019,8/8/1999,254 -1010,BBBB800101,5018,29/3/2002,523 -1020,CCCC800101,5017,4/2/1999,8 -1030,DDDD800101,5016,5/11/2000,295 -1040,EEEE800101,5015,12/7/2002,540 -1050,FFFF800101,5014,7/3/1999,623 -1060,GGGG800101,5013,2/1/2000,692 -1070,HHHH800101,5012,3/12/1999,503 -1080,AAAA800101,5011,7/11/2002,699 -1090,BBBB800101,5010,3/1/1998,421 -1100,CCCC800101,5009,6/8/2000,466 -1110,DDDD800101,5008,10/5/1999,337 -1120,EEEE800101,5007,7/7/2001,692 -1130,FFFF800101,5006,6/7/2002,562 -1140,GGGG800101,5005,2/9/2001,583 -1150,HHHH800101,5004,10/8/2001,453 -1160,AAAA800101,5019,9/6/1999,244 -1170,BBBB800101,5018,12/11/1999,53 -1180,CCCC800101,5017,3/3/2001,334 -1190,DDDD800101,5016,4/2/2000,356 -1200,EEEE800101,5015,6/5/2000,585 -1210,FFFF800101,5014,3/11/2001,70 -1220,GGGG800101,5013,4/7/2002,658 -1230,HHHH800101,5012,9/12/2002,312 -1240,AAAA800101,5011,12/8/2000,366 -1250,BBBB800101,5010,4/4/2002,691 -1260,CCCC800101,5009,9/8/1999,631 -1270,DDDD800101,5008,3/9/1997,546 -1280,EEEE800101,5007,3/2/2000,331 -1290,FFFF800101,5006,8/2/2001,279 -1300,GGGG800101,5005,10/6/2002,521 -1310,HHHH800101,5019,2/10/2002,199 -1320,AAAA800101,5018,7/3/2000,413 -1330,BBBB800101,5017,11/8/2000,93 -1340,CCCC800101,5016,6/11/1998,674 -1350,DDDD800101,5015,2/8/1999,261 -1360,EEEE800101,5014,7/4/2002,265 -1370,FFFF800101,5013,8/4/2000,575 -1380,GGGG800101,5012,8/7/1998,645 -1390,HHHH800101,5011,8/11/2001,697 -1400,AAAA800101,5010,5/6/1998,116 -1410,BBBB800101,5009,3/5/2002,467 -1420,CCCC800101,5008,2/8/2000,278 -1430,DDDD800101,5007,9/1/1998,13 -1000,AAAA800101,5019,6/4/2000,7 -1010,BBBB800101,5018,10/11/2000,667 -1020,CCCC800101,5017,4/5/2001,478 -1030,DDDD800101,5016,9/4/1998,139 -1040,EEEE800101,5015,10/6/2000,546 -1050,FFFF800101,5014,4/6/1999,90 -1060,GGGG800101,5013,10/7/2000,47 -1070,HHHH800101,5012,1/4/2000,516 -1080,AAAA800101,5011,1/6/2003,429 -1090,BBBB800101,5010,6/6/1998,612 -1100,CCCC800101,5009,7/5/2002,523 -1110,DDDD800101,5008,9/2/2000,292 -1120,EEEE800101,5007,12/3/1998,167 -1130,FFFF800101,5006,6/5/1999,673 -1140,GGGG800101,5005,7/2/1998,651 -1150,HHHH800101,5004,1/9/2003,270 -1160,AAAA800101,5019,8/2/2002,665 -1170,BBBB800101,5018,6/8/2001,517 -1180,CCCC800101,5017,1/6/2001,216 -1190,DDDD800101,5016,7/3/2003,622 -1200,EEEE800101,5015,10/7/2000,653 -1210,FFFF800101,5014,6/9/2001,479 -1220,GGGG800101,5013,8/2/2001,653 -1230,HHHH800101,5012,8/3/1999,115 -1240,AAAA800101,5011,5/8/2003,549 -1250,BBBB800101,5010,8/5/1998,690 -1260,CCCC800101,5009,10/2/2003,2 -1270,DDDD800101,5008,12/4/2002,324 -1280,EEEE800101,5007,7/12/2002,448 -1290,FFFF800101,5006,7/1/1999,336 -1300,GGGG800101,5005,2/2/2003,457 -1310,HHHH800101,5019,3/8/2000,463 -1320,AAAA800101,5018,3/12/1999,163 -1330,BBBB800101,5017,12/6/1998,558 -1340,CCCC800101,5016,10/2/1999,11 -1350,DDDD800101,5015,5/6/1999,330 -1360,EEEE800101,5014,6/7/2001,37 -1370,FFFF800101,5013,5/6/2002,423 -1380,GGGG800101,5012,1/2/2001,147 -1390,HHHH800101,5011,6/1/2002,308 -1400,AAAA800101,5010,3/5/2002,441 -1410,BBBB800101,5009,5/11/2002,461 -1420,CCCC800101,5008,12/2/2001,444 -1430,DDDD800101,5007,10/6/2002,506 diff --git a/backup/recursos/images.zip b/backup/recursos/images.zip deleted file mode 100644 index b1c6ca7..0000000 Binary files a/backup/recursos/images.zip and /dev/null differ diff --git a/backup/recursos/images/application.png b/backup/recursos/images/application.png deleted file mode 100644 index 0b363e1..0000000 Binary files a/backup/recursos/images/application.png and /dev/null differ diff --git a/backup/recursos/images/entregan.png b/backup/recursos/images/entregan.png deleted file mode 100644 index 8e87c43..0000000 Binary files a/backup/recursos/images/entregan.png and /dev/null differ diff --git a/backup/recursos/images/gEntregan.png b/backup/recursos/images/gEntregan.png deleted file mode 100644 index 9b4cbb0..0000000 Binary files a/backup/recursos/images/gEntregan.png and /dev/null differ diff --git a/backup/recursos/images/gMaterial.png b/backup/recursos/images/gMaterial.png deleted file mode 100644 index e52aca7..0000000 Binary files a/backup/recursos/images/gMaterial.png and /dev/null differ diff --git a/backup/recursos/images/gProveedor.png b/backup/recursos/images/gProveedor.png deleted file mode 100644 index a0c2913..0000000 Binary files a/backup/recursos/images/gProveedor.png and /dev/null differ diff --git a/backup/recursos/images/gProyecto.png b/backup/recursos/images/gProyecto.png deleted file mode 100644 index c8517e5..0000000 Binary files a/backup/recursos/images/gProyecto.png and /dev/null differ diff --git a/backup/recursos/images/material.png b/backup/recursos/images/material.png deleted file mode 100644 index a1d51a0..0000000 Binary files a/backup/recursos/images/material.png and /dev/null differ diff --git a/backup/recursos/images/proveedor.png b/backup/recursos/images/proveedor.png deleted file mode 100644 index 1d579b8..0000000 Binary files a/backup/recursos/images/proveedor.png and /dev/null differ diff --git a/backup/recursos/images/proyecto.png b/backup/recursos/images/proyecto.png deleted file mode 100644 index f6702dc..0000000 Binary files a/backup/recursos/images/proyecto.png and /dev/null differ diff --git a/backup/recursos/materiales.csv b/backup/recursos/materiales.csv deleted file mode 100644 index 7d4e3b5..0000000 --- a/backup/recursos/materiales.csv +++ /dev/null @@ -1,44 +0,0 @@ -1000,Varilla 3/16,100 -1010,Varilla 4/32,115 -1020,Varilla 3/17,130 -1030,Varilla 4/33,145 -1040,Varilla 3/18,160 -1050,Varilla 4/34,175 -1060,Varilla 3/19,190 -1070,Varilla 4/35,205 -1080,Ladrillos rojos,50 -1090,Ladrillos grises,35 -1100,Block,30 -1110,Megablock,40 -1120,Sillar rosa,100 -1130,Sillar gris,110 -1140,Cantera blanca,200 -1150,Cantera gris,1210 -1160,Cantera rosa,1420 -1170,Cantera amarilla,230 -1180,Recubrimiento P1001,200 -1190,Recubrimiento P1010,220 -1200,Recubrimiento P1019,240 -1210,Recubrimiento P1028,250 -1220,Recubrimiento P1037,280 -1230,Cemento ,300 -1240,Arena,200 -1250,Grava,100 -1260,Gravilla,90 -1270,Tezontle,80 -1280,Tepetate,34 -1290,Tubera 3.5,200 -1300,Tubera 4.3,210 -1310,Tubera 3.6,220 -1320,Tubera 4.4,230 -1330,Tubera 3.7,240 -1340,Tubera 4.5,250 -1350,Tubera 3.8,260 -1360,Pintura C1010,125 -1370,Pintura B1020,125 -1380,Pintura C1011,725 -1390,Pintura B1021,125 -1400,Pintura C1011,125 -1410,Pintura B1021,125 -1420,Pintura C1012,125 -1430,Pintura B1022,125 diff --git a/backup/recursos/modUtil.vb b/backup/recursos/modUtil.vb deleted file mode 100644 index 1195867..0000000 --- a/backup/recursos/modUtil.vb +++ /dev/null @@ -1,204 +0,0 @@ -Option Explicit On - -Imports System.Data -Imports System.Data.OleDb -Imports ZedGraph - -Module modUtil - - Private connection As OleDbConnection - - '---------------------------------------------------------------------------------------------------------' - ' Despliega un MessageBox de error que muestra el mensaje pasado como parmetro ' - ' ' - ' @param err El error a desplegar ' - '---------------------------------------------------------------------------------------------------------' - Sub msgError(ByVal err As String) - MessageBox.Show(err, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, _ - MessageBoxDefaultButton.Button1, 0, False) - End Sub - - '---------------------------------------------------------------------------------------------------------' - ' Ejecuta el comando de DML pasado como parmetro ' ' - ' ' - ' @param dml El comando que se quiere ejecutar ' - ' @return Verdadero si el comando se ejecut de manera correcta, falso en caso contrario ' - '---------------------------------------------------------------------------------------------------------' - Function execute(ByVal dml As String) As Boolean - Try - Dim command As New OleDbCommand(dml, connection) - connection.Open() - command.ExecuteNonQuery() - connection.Close() - Return True - Catch OleDbex As OleDbException - Dim err As String - err = "Error de base de datos al ejecutar el query" & vbCrLf & _ - OleDbex.Message - msgError(err) - Return False - Catch ex As Exception - Dim err As String - err = "Error al ejecutar el query" & vbCrLf & _ - ex.Message - msgError(err) - Return False - End Try - End Function - - '---------------------------------------------------------------------------------------------------------' - ' Esta funcin utiliza la conexin abierta para realizar el query pasado como parmetro y regresa un ' - ' DataReader con los datos leidos ' - ' ' - ' @param query El query que se va a ejecutar en la base de datos ' - ' @return Un OleDbDataReader con los datos leidos de la base de datos al ejecutar el query ' - '---------------------------------------------------------------------------------------------------------' - Function getDataReader(ByVal query As String) As OleDbDataReader - Dim command As New OleDbCommand(query, connection) - Try - Return command.ExecuteReader(CommandBehavior.CloseConnection) - Catch OleDbex As OleDbException - Dim err As String - err = "Error de base de datos al ejecutar el query" & vbCrLf & _ - OleDbex.Message - msgError(err) - Catch ex As Exception - msgError("Error al ejecutar el query") - End Try - Return Nothing - End Function - - '---------------------------------------------------------------------------------------------------------' - ' Esta funcin utiliza la conexin abierta para realizar el query pasado como parmetro y regresa un ' - ' DataTable con los datos leidos ' - ' ' - ' @param query El query que se va a ejecutar en la base de datos ' - ' @return Un DataTable con los datos leidos de la base de datos al ejecutar el query ' - '---------------------------------------------------------------------------------------------------------' - Function getDataTable(ByVal query As String) As DataTable - Dim command As New OleDbCommand(query, connection) - Dim adapter As New OleDbDataAdapter(command) - Dim table As New DataTable - - Try - adapter.Fill(table) - If table.Rows.Count > 0 Then - Return table - Else - Return Nothing - End If - Catch OleDbex As OleDbException - Dim err As String - err = "Error de base de datos al ejecutar el query" & vbCrLf & _ - OleDbex.Message - msgError(err) - Catch ex As Exception - msgError("Error al ejecutar el query") - End Try - Return Nothing - End Function - - '---------------------------------------------------------------------------------------------------------' - ' Llena la forma pasada como parmetro utilizando el query pasado como parmetro. Dentro de la forma ' - ' deben haber controles que tengan los mismos nombres que las columnas que se encuentran en el query. ' - ' Por ejemplo, si el query es 'SELECT nombre FROM usuarios' debe haber un control llamado 'nombre' entre ' - ' los controles de la forma ' - ' ' - ' @param query El query que se quiere ejecutar en la base de datos. ' - ' @param form La forma que se quire llenar con los datos ' - '---------------------------------------------------------------------------------------------------------' - Sub showData(ByVal query As String, ByVal container As Control) - Dim dt As DataTable - Dim ctrl As Control - dt = getDataTable(query) - If Not dt Is Nothing Then - For Each ctrl In container.Controls - If dt.Columns.Contains(ctrl.Name) Then - If TypeOf (ctrl) Is TextBox Or TypeOf (ctrl) Is MaskedTextBox Then - ctrl.Text = dt.Rows(0)(ctrl.Name) - ElseIf TypeOf (ctrl) Is ComboBox Or TypeOf (ctrl) Is ListBox Then - DirectCast(ctrl, ComboBox).SelectedValue = dt.Rows(0)(ctrl.Name) - ElseIf TypeOf (ctrl) Is DateTimePicker Then - DirectCast(ctrl, DateTimePicker).Value = dt.Rows(0)(ctrl.Name) - Else - Try - ctrl.Text = dt.Rows(0)(ctrl.Name) - Catch ex As Exception - End Try - End If - End If - If ctrl.HasChildren Then - showData(query, ctrl) - End If - Next - End If - End Sub - - '---------------------------------------------------------------------------------------------------------' - ' Llena el ComboBox pasado como parmetro con los datos que se recuperan del query pasado como parmetro.' - ' El ComboBox se va a llenar mediante su ValueMember y su DisplayMember con la primera y segunda columna ' - ' regresadas del query respectivamente. ' - ' ' - ' @param lst El ComboBox que se va a llenar con los datos del query ' - ' @param query El query que se quiere ejecutar en la base de datos. El query debe tener la forma ' - ' SELECT INTEGER, $ FROM Tabla [...] ' - ' en donde $ es un dato de cualquier tipo. ' - '---------------------------------------------------------------------------------------------------------' - Sub fillList(ByVal lst As Windows.Forms.ComboBox, ByVal query As String) - Dim table As DataTable - table = getDataTable(query) - If Not table Is Nothing Then - lst.DataSource = Nothing - lst.Items.Clear() - lst.DataSource = table - If table.Columns.Count = 2 Then - lst.ValueMember = table.Columns(0).ToString - lst.DisplayMember = table.Columns(1).ToString - Else - lst.DisplayMember = table.Columns(0).ToString - End If - End If - End Sub - - '---------------------------------------------------------------------------------------------------------' - ' Llena el ListBox pasado como parmetro con los datos que se recuperan del query pasado como parmetro. ' - ' El ListBox se va a llenar mediante su ValueMember y su DisplayMember con la primera y segunda columna ' - ' regresadas del query respectivamente. ' - ' ' - ' @param lst El ListBox que se va a llenar con los datos del query ' - ' @param query El query que se quiere ejecutar en la base de datos. El query debe tener la forma ' - ' SELECT INTEGER, $ FROM Tabla [...] ' - ' en donde $ es un dato de cualquier tipo. ' - '---------------------------------------------------------------------------------------------------------' - Sub fillList(ByRef lst As Windows.Forms.ListBox, ByVal query As String) - Dim table As DataTable - table = getDataTable(query) - If Not table Is Nothing Then - lst.DataSource = table - If table.Columns.Count = 2 Then - lst.ValueMember = table.Columns(0).ToString - lst.DisplayMember = table.Columns(1).ToString - Else - lst.ValueMember = table.Columns(0).ToString - End If - End If - End Sub - - '---------------------------------------------------------------------------------------------------------' - ' Llena el DataGrid pasado como parmetro con los datos que se recuperan del query pasado como ' - ' parmetro. ' - ' ' - ' @param grid El DataGrid que se va a llenar con los datos del query ' - ' @param query El query que se quiere ejecutar en la base de datos. ' - '---------------------------------------------------------------------------------------------------------' - Sub fillGrid(ByVal grid As Windows.Forms.DataGridView, ByVal query As String) - Dim table As DataTable - table = getDataTable(query) - If Not table Is Nothing Then - grid.DataSource = table - Else - grid.DataSource = New DataTable - End If - End Sub - -End Module diff --git a/backup/recursos/proveedores.csv b/backup/recursos/proveedores.csv deleted file mode 100644 index 84432cf..0000000 --- a/backup/recursos/proveedores.csv +++ /dev/null @@ -1,8 +0,0 @@ -AAAA800101,La fragua -BBBB800101,Oviedo -CCCC800101,La Ferre -DDDD800101,Cecoferre -EEEE800101,Alvin -FFFF800101,Comex -GGGG800101,Tabiquera del centro -HHHH800101,Tubasa diff --git a/backup/recursos/proyectos.csv b/backup/recursos/proyectos.csv deleted file mode 100644 index 45f9ad7..0000000 --- a/backup/recursos/proyectos.csv +++ /dev/null @@ -1,20 +0,0 @@ -5000,Vamos Mexico -5001,Aztecn -5002,CIT Campeche -5003,Mexico sin ti no estamos completos -5004,Educando en Coahuila -5005,Infonavit Durango -5006,Reconstruccin del templo de Guadalupe -5007,Construccin de plaza Magnolias -5008,Televisa en accin -5009,Disco Atlantic -5010,Construccin de Hospital Infantil -5011,Remodelacin de aulas del IPP -5012,Restauracin de instalaciones del CEA -5013,Reparacin de la plaza Sonora -5014,Remodelacin de Soriana -5015,CIT Yucatan -5016,Ampliacin de la carretera a la huasteca -5017,Reparacin de la carretera del sol -5018,Tu cambio por la educacion -5019,Queretaro limpio diff --git a/backup/universo_alternativo.html b/backup/universo_alternativo.html deleted file mode 100644 index 957d45d..0000000 --- a/backup/universo_alternativo.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - Calendario | TC2005B Construcción de software y toma de decisiones - - - - - -
    -
    -
    -

    Universo Alternativo

    -
    -
    -
    -
    - -
    - - - - \ No newline at end of file diff --git a/backup/web4screenReaders.html b/backup/web4screenReaders.html deleted file mode 100644 index 32ace2e..0000000 --- a/backup/web4screenReaders.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - - - - - - Lab 26: Accesibilidad en aplicaciones web - - - -
    - -
    - - - -
    -
    -

    Lab 26: Accesibilidad en aplicaciones web

    -
    -
    - -
    - -
    -
    - - Descripción -
    -

    En este laboratorio abordaremos los aspectos para hacer las aplicaciones web accesibles para todos.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual. -
    -

    -
    -
    - -
    -
    - Objetivos de aprendizaje -
    -
      -
    • Que conozcas y apliques los lineamientos de accesibilidad para las aplicaciones web.
    • -
    • Que desarrolles tu capacidad de autoaprendizaje.
    • -
    • Que desarrolles tu conciencia de ciudadanía.
    • -
    -
    -
    - -
    -
    - Instrucciones -
    - -
    -
    - -
    -
    - Preguntas a responder -
    -
      -
    • ¿Por qué es importante la accesibilidad?
    • -
    • ¿Cuáles son los lineamientos de accesibilidad que consideras más importantes? ¿Por qué? -
    • -
    • Describe 3 cambios que harás en tu proyecto para hacerlo más accesible.
    • -
    -
    -
    - -
    -
    - - Especificaciones de entrega -
    -

    A través de tu repositorio personal (Bitbucket o GitHub).

    -
    - -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/backup/zombies.html b/backup/zombies.html deleted file mode 100644 index 346e659..0000000 --- a/backup/zombies.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - - - - - - - - Examen de segundo parcial: PETZ - - - -
    - -
    - - - -
    - -
    -

    Examen de segundo parcial: Personas por la Ética en el Trato de los Zombis (PETZ)

    -
    - -
    -
    Código de ética
    - "Apegándome al Código de Ética de los Estudiantes del Tecnológico de Monterrey, me comprometo a que mi actuación en esta actividad de evaluación esté regida por la honestidad académica. En congruencia con el mismo, realizaré esta actividad de forma honesta y personal, para reflejar a través de ella mis conocimientos y competencias." -
    -
    - -
    -
    Información
    - - - - - -

    El virus DAWBD te convierte en zombie y te acabas de contagiar. Una persona contagiada se convierte en Zombi DAWBD en 170 minutos, más vale tener el siguiente sistema listo para las 12:55pm para asegurarte que te traten considerando que alguna vez fuiste humano.

    -
    -
    - -
    -
    - - Modalidad -
    -

    - Individual. -
    -

    -
    -
    - -
    -
    - - Competencias a observar
    -
      -
    • 3. Implementa sistemas de bases de datos que satisfacen requisitos de información y permiten la escalabilidad del sistema
    • -
    • 5. Desarrolla aplicaciones web con interacción asíncrona con el servidor y que consumen servicios web
    • -
    -
    -
    - -
    -
    Instrucciones
    -
      -
    • - Para observar el nivel mínimo de desarrollo de competencias esperado hasta este punto: -

      La organización denominada Personas por la Ética en el Trato de los Zombis (PETZ) requiere un sistema accesible desde Internet con una base de datos centralizada para llevar un registro de zombis. Con este registro, PETZ podrá darle seguimiento a los zombis para asegurarse que reciban un trato adecuado considerando que alguna vez fueron humanos.

      - -

      La aplicación debe permitir 2 tipos de registro:

      -
        -
      • 1. Nuevos zombis con su nombre completo.
      • -
      • 2. El estado actual del zombi (infección, desorientación, violencia, desmayo, transformación), con su fecha y hora de registro del nuevo estado, de tal forma que sea posible tener el histórico de todos los estados por los que ha pasado un zombi. El usuario no debe ingresar la fecha y hora, la aplicación debe hacerlo de manera automática.
      • -
      - -

      Además, el sitio debe tener una sección para mostrar las siguientes consultas:

      -
        -
      • 1. Todos los registros de zombis con todas las actualizaciones de cada uno.
      • -
      • 2. La cantidad total de zombis registrados, y la cantidad de zombis en cada estado.
      • -
      • 3. Todos los registros de actualización de estado de zombis del más reciente al más antiguo por la fecha de su registro.
      • -
      • 4. Los registros de zombis con el estado elegido por el usuario y la cantidad de ellos.
      • -
      -

      Debido a la política de transparencia y participación ciudadana, la aplicación debe permitir a cualquier persona hacer los registros y las consultas.

      -

      Para tu fortuna, Ellie (única persona inmune al virus DAWDB) implementó la interfaz del usuario, pero no le fue posible implementar el back-end por no haber realizado los laboratorios del segundo parcial. Su código está disponible en: https://bitbucket.org/ejuarez/the_last_of_us).

      -

      Nota 1: Recuerda que puedes manejar el guardado de las fechas y horas directamente con el motor de la base de datos, es decir, no necesitas un datepicker para manejar las fechas, ni generar la fecha desde php.

      -

      Nota 2: El examen es abierto, puedes consultar cualquier referencia (excepto comunicarte con tus compañeros).

      -
    • -
    • - Para obtener los grados más altos esperados en el desarrollo de competencias: -

      Idealmente, la aplicación debe ser una RIA (Rich Internet Application), es decir, las interacciones con el servidor deben ser asíncronas.

      -

      Idealmente las interacciones con la base de datos deben ser por medio de procedimientos almacenados.

      -
    • -
    -
    -
    - -
    -
    - - Entregables por mensaje directo de slack a edjuarezp -
    -

    1. URL de la aplicación funcionando en la web.

    -

    2. Enlace al repositorio de git. El repositorio debe incluir el script de la base de datos y todos los archivos de código.

    -
    -
    - - -
    -
    - assessment - Evaluación -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CompetenciaNivel “Don't keep calm ... Run!” (Practicante)Nivel “Let me eat your br-a-a-a-a-a-a-i-n-s” (Ing. Junior)Nivel “Get that screwdriver out of my head!” (Ing. Senior)Nivel “Zombies, they love you for what is on the inside” (Arquitecto)
    3. Implementa sistemas de bases de datos que satisfacen requisitos de información y permiten la escalabilidad del sistemaNo hay evidencia de implementación de sistemas de bases de datosDiseña un modelo de datos que atiende de manera parcial las necesidades de información de un sistema de cómputo.Diseña un modelo de datos que atiende las necesidades de información de un sistema de cómputo considerando los posibles cambios que se presenten en el futuro. Es evidente el uso adecuado de consultas para la extracción de datos.Diseña un modelo de datos que atiende las necesidades de información de un sistema de cómputo considerando los posibles cambios que se presenten en el futuro. Es evidente el uso adecuado de consultas para la extracción de datos. Hay técnicas de automatización para creación de estructuras de bases de datos, cargas masivas de datos y procedimientos almacenados.
    5. Desarrolla aplicaciones web con interacción asíncrona con el servidor y que consumen servicios webNo hay evidencia del desarrollo de una aplicación con comunicación entre un cliente y un servidorDesarrolla aplicaciones web sencillas con un uso adecuado de las peticiones HTTP, manejo correcto de sesiones, estilo arquitectónico MVC e interacción con una base de datos con operaciones para crear, modificar y borrar datos, así como consultas complejas y un nivel básico de seguridad.Desarrolla aplicaciones web enriquecidas con un uso adecuado de las peticiones HTTP, manejo correcto de sesiones, estilo arquitectónico MVC e interacción con una base de datos con operaciones para crear, modificar y borrar datos, así como consultas complejas, un nivel básico de seguridad e interacción asíncrona para las características usadas más frecuentemente.Se evalúa hasta el periodo final.
    -
    -
    -
    -
    - - - - - - - - - - \ No newline at end of file diff --git a/css/materialize.css b/css/materialize.css deleted file mode 100644 index 6b76355..0000000 --- a/css/materialize.css +++ /dev/null @@ -1,8139 +0,0 @@ -/*! - * Materialize v0.97.0 (http://materializecss.com) - * Copyright 2014-2015 Materialize - * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) - */ -.materialize-red.lighten-5 { - background-color: #fdeaeb !important; } - -.materialize-red-text.text-lighten-5 { - color: #fdeaeb !important; } - -.materialize-red.lighten-4 { - background-color: #f8c1c3 !important; } - -.materialize-red-text.text-lighten-4 { - color: #f8c1c3 !important; } - -.materialize-red.lighten-3 { - background-color: #f3989b !important; } - -.materialize-red-text.text-lighten-3 { - color: #f3989b !important; } - -.materialize-red.lighten-2 { - background-color: #ee6e73 !important; } - -.materialize-red-text.text-lighten-2 { - color: #ee6e73 !important; } - -.materialize-red.lighten-1 { - background-color: #ea454b !important; } - -.materialize-red-text.text-lighten-1 { - color: #ea454b !important; } - -.materialize-red { - background-color: #e51c23 !important; } - -.materialize-red-text { - color: #e51c23 !important; } - -.materialize-red.darken-1 { - background-color: #d0181e !important; } - -.materialize-red-text.text-darken-1 { - color: #d0181e !important; } - -.materialize-red.darken-2 { - background-color: #b9151b !important; } - -.materialize-red-text.text-darken-2 { - color: #b9151b !important; } - -.materialize-red.darken-3 { - background-color: #a21318 !important; } - -.materialize-red-text.text-darken-3 { - color: #a21318 !important; } - -.materialize-red.darken-4 { - background-color: #8b1014 !important; } - -.materialize-red-text.text-darken-4 { - color: #8b1014 !important; } - -.red.lighten-5 { - background-color: #FFEBEE !important; } - -.red-text.text-lighten-5 { - color: #FFEBEE !important; } - -.red.lighten-4 { - background-color: #FFCDD2 !important; } - -.red-text.text-lighten-4 { - color: #FFCDD2 !important; } - -.red.lighten-3 { - background-color: #EF9A9A !important; } - -.red-text.text-lighten-3 { - color: #EF9A9A !important; } - -.red.lighten-2 { - background-color: #E57373 !important; } - -.red-text.text-lighten-2 { - color: #E57373 !important; } - -.red.lighten-1 { - background-color: #EF5350 !important; } - -.red-text.text-lighten-1 { - color: #EF5350 !important; } - -.red { - background-color: #F44336 !important; } - -.red-text { - color: #F44336 !important; } - -.red.darken-1 { - background-color: #E53935 !important; } - -.red-text.text-darken-1 { - color: #E53935 !important; } - -.red.darken-2 { - background-color: #D32F2F !important; } - -.red-text.text-darken-2 { - color: #D32F2F !important; } - -.red.darken-3 { - background-color: #C62828 !important; } - -.red-text.text-darken-3 { - color: #C62828 !important; } - -.red.darken-4 { - background-color: #B71C1C !important; } - -.red-text.text-darken-4 { - color: #B71C1C !important; } - -.red.accent-1 { - background-color: #FF8A80 !important; } - -.red-text.text-accent-1 { - color: #FF8A80 !important; } - -.red.accent-2 { - background-color: #FF5252 !important; } - -.red-text.text-accent-2 { - color: #FF5252 !important; } - -.red.accent-3 { - background-color: #FF1744 !important; } - -.red-text.text-accent-3 { - color: #FF1744 !important; } - -.red.accent-4 { - background-color: #D50000 !important; } - -.red-text.text-accent-4 { - color: #D50000 !important; } - -.pink.lighten-5 { - background-color: #fce4ec !important; } - -.pink-text.text-lighten-5 { - color: #fce4ec !important; } - -.pink.lighten-4 { - background-color: #f8bbd0 !important; } - -.pink-text.text-lighten-4 { - color: #f8bbd0 !important; } - -.pink.lighten-3 { - background-color: #f48fb1 !important; } - -.pink-text.text-lighten-3 { - color: #f48fb1 !important; } - -.pink.lighten-2 { - background-color: #f06292 !important; } - -.pink-text.text-lighten-2 { - color: #f06292 !important; } - -.pink.lighten-1 { - background-color: #ec407a !important; } - -.pink-text.text-lighten-1 { - color: #ec407a !important; } - -.pink { - background-color: #e91e63 !important; } - -.pink-text { - color: #e91e63 !important; } - -.pink.darken-1 { - background-color: #d81b60 !important; } - -.pink-text.text-darken-1 { - color: #d81b60 !important; } - -.pink.darken-2 { - background-color: #c2185b !important; } - -.pink-text.text-darken-2 { - color: #c2185b !important; } - -.pink.darken-3 { - background-color: #ad1457 !important; } - -.pink-text.text-darken-3 { - color: #ad1457 !important; } - -.pink.darken-4 { - background-color: #880e4f !important; } - -.pink-text.text-darken-4 { - color: #880e4f !important; } - -.pink.accent-1 { - background-color: #ff80ab !important; } - -.pink-text.text-accent-1 { - color: #ff80ab !important; } - -.pink.accent-2 { - background-color: #ff4081 !important; } - -.pink-text.text-accent-2 { - color: #ff4081 !important; } - -.pink.accent-3 { - background-color: #f50057 !important; } - -.pink-text.text-accent-3 { - color: #f50057 !important; } - -.pink.accent-4 { - background-color: #c51162 !important; } - -.pink-text.text-accent-4 { - color: #c51162 !important; } - -.purple.lighten-5 { - background-color: #f3e5f5 !important; } - -.purple-text.text-lighten-5 { - color: #f3e5f5 !important; } - -.purple.lighten-4 { - background-color: #e1bee7 !important; } - -.purple-text.text-lighten-4 { - color: #e1bee7 !important; } - -.purple.lighten-3 { - background-color: #ce93d8 !important; } - -.purple-text.text-lighten-3 { - color: #ce93d8 !important; } - -.purple.lighten-2 { - background-color: #ba68c8 !important; } - -.purple-text.text-lighten-2 { - color: #ba68c8 !important; } - -.purple.lighten-1 { - background-color: #ab47bc !important; } - -.purple-text.text-lighten-1 { - color: #ab47bc !important; } - -.purple { - background-color: #9c27b0 !important; } - -.purple-text { - color: #9c27b0 !important; } - -.purple.darken-1 { - background-color: #8e24aa !important; } - -.purple-text.text-darken-1 { - color: #8e24aa !important; } - -.purple.darken-2 { - background-color: #7b1fa2 !important; } - -.purple-text.text-darken-2 { - color: #7b1fa2 !important; } - -.purple.darken-3 { - background-color: #6a1b9a !important; } - -.purple-text.text-darken-3 { - color: #6a1b9a !important; } - -.purple.darken-4 { - background-color: #4a148c !important; } - -.purple-text.text-darken-4 { - color: #4a148c !important; } - -.purple.accent-1 { - background-color: #ea80fc !important; } - -.purple-text.text-accent-1 { - color: #ea80fc !important; } - -.purple.accent-2 { - background-color: #e040fb !important; } - -.purple-text.text-accent-2 { - color: #e040fb !important; } - -.purple.accent-3 { - background-color: #d500f9 !important; } - -.purple-text.text-accent-3 { - color: #d500f9 !important; } - -.purple.accent-4 { - background-color: #aa00ff !important; } - -.purple-text.text-accent-4 { - color: #aa00ff !important; } - -.deep-purple.lighten-5 { - background-color: #ede7f6 !important; } - -.deep-purple-text.text-lighten-5 { - color: #ede7f6 !important; } - -.deep-purple.lighten-4 { - background-color: #d1c4e9 !important; } - -.deep-purple-text.text-lighten-4 { - color: #d1c4e9 !important; } - -.deep-purple.lighten-3 { - background-color: #b39ddb !important; } - -.deep-purple-text.text-lighten-3 { - color: #b39ddb !important; } - -.deep-purple.lighten-2 { - background-color: #9575cd !important; } - -.deep-purple-text.text-lighten-2 { - color: #9575cd !important; } - -.deep-purple.lighten-1 { - background-color: #7e57c2 !important; } - -.deep-purple-text.text-lighten-1 { - color: #7e57c2 !important; } - -.deep-purple { - background-color: #673ab7 !important; } - -.deep-purple-text { - color: #673ab7 !important; } - -.deep-purple.darken-1 { - background-color: #5e35b1 !important; } - -.deep-purple-text.text-darken-1 { - color: #5e35b1 !important; } - -.deep-purple.darken-2 { - background-color: #512da8 !important; } - -.deep-purple-text.text-darken-2 { - color: #512da8 !important; } - -.deep-purple.darken-3 { - background-color: #4527a0 !important; } - -.deep-purple-text.text-darken-3 { - color: #4527a0 !important; } - -.deep-purple.darken-4 { - background-color: #311b92 !important; } - -.deep-purple-text.text-darken-4 { - color: #311b92 !important; } - -.deep-purple.accent-1 { - background-color: #b388ff !important; } - -.deep-purple-text.text-accent-1 { - color: #b388ff !important; } - -.deep-purple.accent-2 { - background-color: #7c4dff !important; } - -.deep-purple-text.text-accent-2 { - color: #7c4dff !important; } - -.deep-purple.accent-3 { - background-color: #651fff !important; } - -.deep-purple-text.text-accent-3 { - color: #651fff !important; } - -.deep-purple.accent-4 { - background-color: #6200ea !important; } - -.deep-purple-text.text-accent-4 { - color: #6200ea !important; } - -.indigo.lighten-5 { - background-color: #e8eaf6 !important; } - -.indigo-text.text-lighten-5 { - color: #e8eaf6 !important; } - -.indigo.lighten-4 { - background-color: #c5cae9 !important; } - -.indigo-text.text-lighten-4 { - color: #c5cae9 !important; } - -.indigo.lighten-3 { - background-color: #9fa8da !important; } - -.indigo-text.text-lighten-3 { - color: #9fa8da !important; } - -.indigo.lighten-2 { - background-color: #7986cb !important; } - -.indigo-text.text-lighten-2 { - color: #7986cb !important; } - -.indigo.lighten-1 { - background-color: #5c6bc0 !important; } - -.indigo-text.text-lighten-1 { - color: #5c6bc0 !important; } - -.indigo { - background-color: #3f51b5 !important; } - -.indigo-text { - color: #3f51b5 !important; } - -.indigo.darken-1 { - background-color: #3949ab !important; } - -.indigo-text.text-darken-1 { - color: #3949ab !important; } - -.indigo.darken-2 { - background-color: #303f9f !important; } - -.indigo-text.text-darken-2 { - color: #303f9f !important; } - -.indigo.darken-3 { - background-color: #283593 !important; } - -.indigo-text.text-darken-3 { - color: #283593 !important; } - -.indigo.darken-4 { - background-color: #1a237e !important; } - -.indigo-text.text-darken-4 { - color: #1a237e !important; } - -.indigo.accent-1 { - background-color: #8c9eff !important; } - -.indigo-text.text-accent-1 { - color: #8c9eff !important; } - -.indigo.accent-2 { - background-color: #536dfe !important; } - -.indigo-text.text-accent-2 { - color: #536dfe !important; } - -.indigo.accent-3 { - background-color: #3d5afe !important; } - -.indigo-text.text-accent-3 { - color: #3d5afe !important; } - -.indigo.accent-4 { - background-color: #304ffe !important; } - -.indigo-text.text-accent-4 { - color: #304ffe !important; } - -.blue.lighten-5 { - background-color: #E3F2FD !important; } - -.blue-text.text-lighten-5 { - color: #E3F2FD !important; } - -.blue.lighten-4 { - background-color: #BBDEFB !important; } - -.blue-text.text-lighten-4 { - color: #BBDEFB !important; } - -.blue.lighten-3 { - background-color: #90CAF9 !important; } - -.blue-text.text-lighten-3 { - color: #90CAF9 !important; } - -.blue.lighten-2 { - background-color: #64B5F6 !important; } - -.blue-text.text-lighten-2 { - color: #64B5F6 !important; } - -.blue.lighten-1 { - background-color: #42A5F5 !important; } - -.blue-text.text-lighten-1 { - color: #42A5F5 !important; } - -.blue { - background-color: #2196F3 !important; } - -.blue-text { - color: #2196F3 !important; } - -.blue.darken-1 { - background-color: #1E88E5 !important; } - -.blue-text.text-darken-1 { - color: #1E88E5 !important; } - -.blue.darken-2 { - background-color: #1976D2 !important; } - -.blue-text.text-darken-2 { - color: #1976D2 !important; } - -.blue.darken-3 { - background-color: #1565C0 !important; } - -.blue-text.text-darken-3 { - color: #1565C0 !important; } - -.blue.darken-4 { - background-color: #0D47A1 !important; } - -.blue-text.text-darken-4 { - color: #0D47A1 !important; } - -.blue.accent-1 { - background-color: #82B1FF !important; } - -.blue-text.text-accent-1 { - color: #82B1FF !important; } - -.blue.accent-2 { - background-color: #448AFF !important; } - -.blue-text.text-accent-2 { - color: #448AFF !important; } - -.blue.accent-3 { - background-color: #2979FF !important; } - -.blue-text.text-accent-3 { - color: #2979FF !important; } - -.blue.accent-4 { - background-color: #2962FF !important; } - -.blue-text.text-accent-4 { - color: #2962FF !important; } - -.light-blue.lighten-5 { - background-color: #e1f5fe !important; } - -.light-blue-text.text-lighten-5 { - color: #e1f5fe !important; } - -.light-blue.lighten-4 { - background-color: #b3e5fc !important; } - -.light-blue-text.text-lighten-4 { - color: #b3e5fc !important; } - -.light-blue.lighten-3 { - background-color: #81d4fa !important; } - -.light-blue-text.text-lighten-3 { - color: #81d4fa !important; } - -.light-blue.lighten-2 { - background-color: #4fc3f7 !important; } - -.light-blue-text.text-lighten-2 { - color: #4fc3f7 !important; } - -.light-blue.lighten-1 { - background-color: #29b6f6 !important; } - -.light-blue-text.text-lighten-1 { - color: #29b6f6 !important; } - -.light-blue { - background-color: #03a9f4 !important; } - -.light-blue-text { - color: #03a9f4 !important; } - -.light-blue.darken-1 { - background-color: #039be5 !important; } - -.light-blue-text.text-darken-1 { - color: #039be5 !important; } - -.light-blue.darken-2 { - background-color: #0288d1 !important; } - -.light-blue-text.text-darken-2 { - color: #0288d1 !important; } - -.light-blue.darken-3 { - background-color: #0277bd !important; } - -.light-blue-text.text-darken-3 { - color: #0277bd !important; } - -.light-blue.darken-4 { - background-color: #01579b !important; } - -.light-blue-text.text-darken-4 { - color: #01579b !important; } - -.light-blue.accent-1 { - background-color: #80d8ff !important; } - -.light-blue-text.text-accent-1 { - color: #80d8ff !important; } - -.light-blue.accent-2 { - background-color: #40c4ff !important; } - -.light-blue-text.text-accent-2 { - color: #40c4ff !important; } - -.light-blue.accent-3 { - background-color: #00b0ff !important; } - -.light-blue-text.text-accent-3 { - color: #00b0ff !important; } - -.light-blue.accent-4 { - background-color: #0091ea !important; } - -.light-blue-text.text-accent-4 { - color: #0091ea !important; } - -.cyan.lighten-5 { - background-color: #e0f7fa !important; } - -.cyan-text.text-lighten-5 { - color: #e0f7fa !important; } - -.cyan.lighten-4 { - background-color: #b2ebf2 !important; } - -.cyan-text.text-lighten-4 { - color: #b2ebf2 !important; } - -.cyan.lighten-3 { - background-color: #80deea !important; } - -.cyan-text.text-lighten-3 { - color: #80deea !important; } - -.cyan.lighten-2 { - background-color: #4dd0e1 !important; } - -.cyan-text.text-lighten-2 { - color: #4dd0e1 !important; } - -.cyan.lighten-1 { - background-color: #26c6da !important; } - -.cyan-text.text-lighten-1 { - color: #26c6da !important; } - -.cyan { - background-color: #00bcd4 !important; } - -.cyan-text { - color: #00bcd4 !important; } - -.cyan.darken-1 { - background-color: #00acc1 !important; } - -.cyan-text.text-darken-1 { - color: #00acc1 !important; } - -.cyan.darken-2 { - background-color: #0097a7 !important; } - -.cyan-text.text-darken-2 { - color: #0097a7 !important; } - -.cyan.darken-3 { - background-color: #00838f !important; } - -.cyan-text.text-darken-3 { - color: #00838f !important; } - -.cyan.darken-4 { - background-color: #006064 !important; } - -.cyan-text.text-darken-4 { - color: #006064 !important; } - -.cyan.accent-1 { - background-color: #84ffff !important; } - -.cyan-text.text-accent-1 { - color: #84ffff !important; } - -.cyan.accent-2 { - background-color: #18ffff !important; } - -.cyan-text.text-accent-2 { - color: #18ffff !important; } - -.cyan.accent-3 { - background-color: #00e5ff !important; } - -.cyan-text.text-accent-3 { - color: #00e5ff !important; } - -.cyan.accent-4 { - background-color: #00b8d4 !important; } - -.cyan-text.text-accent-4 { - color: #00b8d4 !important; } - -.teal.lighten-5 { - background-color: #e0f2f1 !important; } - -.teal-text.text-lighten-5 { - color: #e0f2f1 !important; } - -.teal.lighten-4 { - background-color: #b2dfdb !important; } - -.teal-text.text-lighten-4 { - color: #b2dfdb !important; } - -.teal.lighten-3 { - background-color: #80cbc4 !important; } - -.teal-text.text-lighten-3 { - color: #80cbc4 !important; } - -.teal.lighten-2 { - background-color: #4db6ac !important; } - -.teal-text.text-lighten-2 { - color: #4db6ac !important; } - -.teal.lighten-1 { - background-color: #26a69a !important; } - -.teal-text.text-lighten-1 { - color: #26a69a !important; } - -.teal { - background-color: #009688 !important; } - -.teal-text { - color: #009688 !important; } - -.teal.darken-1 { - background-color: #00897b !important; } - -.teal-text.text-darken-1 { - color: #00897b !important; } - -.teal.darken-2 { - background-color: #00796b !important; } - -.teal-text.text-darken-2 { - color: #00796b !important; } - -.teal.darken-3 { - background-color: #00695c !important; } - -.teal-text.text-darken-3 { - color: #00695c !important; } - -.teal.darken-4 { - background-color: #004d40 !important; } - -.teal-text.text-darken-4 { - color: #004d40 !important; } - -.teal.accent-1 { - background-color: #a7ffeb !important; } - -.teal-text.text-accent-1 { - color: #a7ffeb !important; } - -.teal.accent-2 { - background-color: #64ffda !important; } - -.teal-text.text-accent-2 { - color: #64ffda !important; } - -.teal.accent-3 { - background-color: #1de9b6 !important; } - -.teal-text.text-accent-3 { - color: #1de9b6 !important; } - -.teal.accent-4 { - background-color: #00bfa5 !important; } - -.teal-text.text-accent-4 { - color: #00bfa5 !important; } - -.green.lighten-5 { - background-color: #E8F5E9 !important; } - -.green-text.text-lighten-5 { - color: #E8F5E9 !important; } - -.green.lighten-4 { - background-color: #C8E6C9 !important; } - -.green-text.text-lighten-4 { - color: #C8E6C9 !important; } - -.green.lighten-3 { - background-color: #A5D6A7 !important; } - -.green-text.text-lighten-3 { - color: #A5D6A7 !important; } - -.green.lighten-2 { - background-color: #81C784 !important; } - -.green-text.text-lighten-2 { - color: #81C784 !important; } - -.green.lighten-1 { - background-color: #66BB6A !important; } - -.green-text.text-lighten-1 { - color: #66BB6A !important; } - -.green { - background-color: #4CAF50 !important; } - -.green-text { - color: #4CAF50 !important; } - -.green.darken-1 { - background-color: #43A047 !important; } - -.green-text.text-darken-1 { - color: #43A047 !important; } - -.green.darken-2 { - background-color: #388E3C !important; } - -.green-text.text-darken-2 { - color: #388E3C !important; } - -.green.darken-3 { - background-color: #2E7D32 !important; } - -.green-text.text-darken-3 { - color: #2E7D32 !important; } - -.green.darken-4 { - background-color: #1B5E20 !important; } - -.green-text.text-darken-4 { - color: #1B5E20 !important; } - -.green.accent-1 { - background-color: #B9F6CA !important; } - -.green-text.text-accent-1 { - color: #B9F6CA !important; } - -.green.accent-2 { - background-color: #69F0AE !important; } - -.green-text.text-accent-2 { - color: #69F0AE !important; } - -.green.accent-3 { - background-color: #00E676 !important; } - -.green-text.text-accent-3 { - color: #00E676 !important; } - -.green.accent-4 { - background-color: #00C853 !important; } - -.green-text.text-accent-4 { - color: #00C853 !important; } - -.light-green.lighten-5 { - background-color: #f1f8e9 !important; } - -.light-green-text.text-lighten-5 { - color: #f1f8e9 !important; } - -.light-green.lighten-4 { - background-color: #dcedc8 !important; } - -.light-green-text.text-lighten-4 { - color: #dcedc8 !important; } - -.light-green.lighten-3 { - background-color: #c5e1a5 !important; } - -.light-green-text.text-lighten-3 { - color: #c5e1a5 !important; } - -.light-green.lighten-2 { - background-color: #aed581 !important; } - -.light-green-text.text-lighten-2 { - color: #aed581 !important; } - -.light-green.lighten-1 { - background-color: #9ccc65 !important; } - -.light-green-text.text-lighten-1 { - color: #9ccc65 !important; } - -.light-green { - background-color: #8bc34a !important; } - -.light-green-text { - color: #8bc34a !important; } - -.light-green.darken-1 { - background-color: #7cb342 !important; } - -.light-green-text.text-darken-1 { - color: #7cb342 !important; } - -.light-green.darken-2 { - background-color: #689f38 !important; } - -.light-green-text.text-darken-2 { - color: #689f38 !important; } - -.light-green.darken-3 { - background-color: #558b2f !important; } - -.light-green-text.text-darken-3 { - color: #558b2f !important; } - -.light-green.darken-4 { - background-color: #33691e !important; } - -.light-green-text.text-darken-4 { - color: #33691e !important; } - -.light-green.accent-1 { - background-color: #ccff90 !important; } - -.light-green-text.text-accent-1 { - color: #ccff90 !important; } - -.light-green.accent-2 { - background-color: #b2ff59 !important; } - -.light-green-text.text-accent-2 { - color: #b2ff59 !important; } - -.light-green.accent-3 { - background-color: #76ff03 !important; } - -.light-green-text.text-accent-3 { - color: #76ff03 !important; } - -.light-green.accent-4 { - background-color: #64dd17 !important; } - -.light-green-text.text-accent-4 { - color: #64dd17 !important; } - -.lime.lighten-5 { - background-color: #f9fbe7 !important; } - -.lime-text.text-lighten-5 { - color: #f9fbe7 !important; } - -.lime.lighten-4 { - background-color: #f0f4c3 !important; } - -.lime-text.text-lighten-4 { - color: #f0f4c3 !important; } - -.lime.lighten-3 { - background-color: #e6ee9c !important; } - -.lime-text.text-lighten-3 { - color: #e6ee9c !important; } - -.lime.lighten-2 { - background-color: #dce775 !important; } - -.lime-text.text-lighten-2 { - color: #dce775 !important; } - -.lime.lighten-1 { - background-color: #d4e157 !important; } - -.lime-text.text-lighten-1 { - color: #d4e157 !important; } - -.lime { - background-color: #cddc39 !important; } - -.lime-text { - color: #cddc39 !important; } - -.lime.darken-1 { - background-color: #c0ca33 !important; } - -.lime-text.text-darken-1 { - color: #c0ca33 !important; } - -.lime.darken-2 { - background-color: #afb42b !important; } - -.lime-text.text-darken-2 { - color: #afb42b !important; } - -.lime.darken-3 { - background-color: #9e9d24 !important; } - -.lime-text.text-darken-3 { - color: #9e9d24 !important; } - -.lime.darken-4 { - background-color: #827717 !important; } - -.lime-text.text-darken-4 { - color: #827717 !important; } - -.lime.accent-1 { - background-color: #f4ff81 !important; } - -.lime-text.text-accent-1 { - color: #f4ff81 !important; } - -.lime.accent-2 { - background-color: #eeff41 !important; } - -.lime-text.text-accent-2 { - color: #eeff41 !important; } - -.lime.accent-3 { - background-color: #c6ff00 !important; } - -.lime-text.text-accent-3 { - color: #c6ff00 !important; } - -.lime.accent-4 { - background-color: #aeea00 !important; } - -.lime-text.text-accent-4 { - color: #aeea00 !important; } - -.yellow.lighten-5 { - background-color: #fffde7 !important; } - -.yellow-text.text-lighten-5 { - color: #fffde7 !important; } - -.yellow.lighten-4 { - background-color: #fff9c4 !important; } - -.yellow-text.text-lighten-4 { - color: #fff9c4 !important; } - -.yellow.lighten-3 { - background-color: #fff59d !important; } - -.yellow-text.text-lighten-3 { - color: #fff59d !important; } - -.yellow.lighten-2 { - background-color: #fff176 !important; } - -.yellow-text.text-lighten-2 { - color: #fff176 !important; } - -.yellow.lighten-1 { - background-color: #ffee58 !important; } - -.yellow-text.text-lighten-1 { - color: #ffee58 !important; } - -.yellow { - background-color: #ffeb3b !important; } - -.yellow-text { - color: #ffeb3b !important; } - -.yellow.darken-1 { - background-color: #fdd835 !important; } - -.yellow-text.text-darken-1 { - color: #fdd835 !important; } - -.yellow.darken-2 { - background-color: #fbc02d !important; } - -.yellow-text.text-darken-2 { - color: #fbc02d !important; } - -.yellow.darken-3 { - background-color: #f9a825 !important; } - -.yellow-text.text-darken-3 { - color: #f9a825 !important; } - -.yellow.darken-4 { - background-color: #f57f17 !important; } - -.yellow-text.text-darken-4 { - color: #f57f17 !important; } - -.yellow.accent-1 { - background-color: #ffff8d !important; } - -.yellow-text.text-accent-1 { - color: #ffff8d !important; } - -.yellow.accent-2 { - background-color: #ffff00 !important; } - -.yellow-text.text-accent-2 { - color: #ffff00 !important; } - -.yellow.accent-3 { - background-color: #ffea00 !important; } - -.yellow-text.text-accent-3 { - color: #ffea00 !important; } - -.yellow.accent-4 { - background-color: #ffd600 !important; } - -.yellow-text.text-accent-4 { - color: #ffd600 !important; } - -.amber.lighten-5 { - background-color: #fff8e1 !important; } - -.amber-text.text-lighten-5 { - color: #fff8e1 !important; } - -.amber.lighten-4 { - background-color: #ffecb3 !important; } - -.amber-text.text-lighten-4 { - color: #ffecb3 !important; } - -.amber.lighten-3 { - background-color: #ffe082 !important; } - -.amber-text.text-lighten-3 { - color: #ffe082 !important; } - -.amber.lighten-2 { - background-color: #ffd54f !important; } - -.amber-text.text-lighten-2 { - color: #ffd54f !important; } - -.amber.lighten-1 { - background-color: #ffca28 !important; } - -.amber-text.text-lighten-1 { - color: #ffca28 !important; } - -.amber { - background-color: #ffc107 !important; } - -.amber-text { - color: #ffc107 !important; } - -.amber.darken-1 { - background-color: #ffb300 !important; } - -.amber-text.text-darken-1 { - color: #ffb300 !important; } - -.amber.darken-2 { - background-color: #ffa000 !important; } - -.amber-text.text-darken-2 { - color: #ffa000 !important; } - -.amber.darken-3 { - background-color: #ff8f00 !important; } - -.amber-text.text-darken-3 { - color: #ff8f00 !important; } - -.amber.darken-4 { - background-color: #ff6f00 !important; } - -.amber-text.text-darken-4 { - color: #ff6f00 !important; } - -.amber.accent-1 { - background-color: #ffe57f !important; } - -.amber-text.text-accent-1 { - color: #ffe57f !important; } - -.amber.accent-2 { - background-color: #ffd740 !important; } - -.amber-text.text-accent-2 { - color: #ffd740 !important; } - -.amber.accent-3 { - background-color: #ffc400 !important; } - -.amber-text.text-accent-3 { - color: #ffc400 !important; } - -.amber.accent-4 { - background-color: #ffab00 !important; } - -.amber-text.text-accent-4 { - color: #ffab00 !important; } - -.orange.lighten-5 { - background-color: #fff3e0 !important; } - -.orange-text.text-lighten-5 { - color: #fff3e0 !important; } - -.orange.lighten-4 { - background-color: #ffe0b2 !important; } - -.orange-text.text-lighten-4 { - color: #ffe0b2 !important; } - -.orange.lighten-3 { - background-color: #ffcc80 !important; } - -.orange-text.text-lighten-3 { - color: #ffcc80 !important; } - -.orange.lighten-2 { - background-color: #ffb74d !important; } - -.orange-text.text-lighten-2 { - color: #ffb74d !important; } - -.orange.lighten-1 { - background-color: #ffa726 !important; } - -.orange-text.text-lighten-1 { - color: #ffa726 !important; } - -.orange { - background-color: #ff9800 !important; } - -.orange-text { - color: #ff9800 !important; } - -.orange.darken-1 { - background-color: #fb8c00 !important; } - -.orange-text.text-darken-1 { - color: #fb8c00 !important; } - -.orange.darken-2 { - background-color: #f57c00 !important; } - -.orange-text.text-darken-2 { - color: #f57c00 !important; } - -.orange.darken-3 { - background-color: #ef6c00 !important; } - -.orange-text.text-darken-3 { - color: #ef6c00 !important; } - -.orange.darken-4 { - background-color: #e65100 !important; } - -.orange-text.text-darken-4 { - color: #e65100 !important; } - -.orange.accent-1 { - background-color: #ffd180 !important; } - -.orange-text.text-accent-1 { - color: #ffd180 !important; } - -.orange.accent-2 { - background-color: #ffab40 !important; } - -.orange-text.text-accent-2 { - color: #ffab40 !important; } - -.orange.accent-3 { - background-color: #ff9100 !important; } - -.orange-text.text-accent-3 { - color: #ff9100 !important; } - -.orange.accent-4 { - background-color: #ff6d00 !important; } - -.orange-text.text-accent-4 { - color: #ff6d00 !important; } - -.deep-orange.lighten-5 { - background-color: #fbe9e7 !important; } - -.deep-orange-text.text-lighten-5 { - color: #fbe9e7 !important; } - -.deep-orange.lighten-4 { - background-color: #ffccbc !important; } - -.deep-orange-text.text-lighten-4 { - color: #ffccbc !important; } - -.deep-orange.lighten-3 { - background-color: #ffab91 !important; } - -.deep-orange-text.text-lighten-3 { - color: #ffab91 !important; } - -.deep-orange.lighten-2 { - background-color: #ff8a65 !important; } - -.deep-orange-text.text-lighten-2 { - color: #ff8a65 !important; } - -.deep-orange.lighten-1 { - background-color: #ff7043 !important; } - -.deep-orange-text.text-lighten-1 { - color: #ff7043 !important; } - -.deep-orange { - background-color: #ff5722 !important; } - -.deep-orange-text { - color: #ff5722 !important; } - -.deep-orange.darken-1 { - background-color: #f4511e !important; } - -.deep-orange-text.text-darken-1 { - color: #f4511e !important; } - -.deep-orange.darken-2 { - background-color: #e64a19 !important; } - -.deep-orange-text.text-darken-2 { - color: #e64a19 !important; } - -.deep-orange.darken-3 { - background-color: #d84315 !important; } - -.deep-orange-text.text-darken-3 { - color: #d84315 !important; } - -.deep-orange.darken-4 { - background-color: #bf360c !important; } - -.deep-orange-text.text-darken-4 { - color: #bf360c !important; } - -.deep-orange.accent-1 { - background-color: #ff9e80 !important; } - -.deep-orange-text.text-accent-1 { - color: #ff9e80 !important; } - -.deep-orange.accent-2 { - background-color: #ff6e40 !important; } - -.deep-orange-text.text-accent-2 { - color: #ff6e40 !important; } - -.deep-orange.accent-3 { - background-color: #ff3d00 !important; } - -.deep-orange-text.text-accent-3 { - color: #ff3d00 !important; } - -.deep-orange.accent-4 { - background-color: #dd2c00 !important; } - -.deep-orange-text.text-accent-4 { - color: #dd2c00 !important; } - -.brown.lighten-5 { - background-color: #efebe9 !important; } - -.brown-text.text-lighten-5 { - color: #efebe9 !important; } - -.brown.lighten-4 { - background-color: #d7ccc8 !important; } - -.brown-text.text-lighten-4 { - color: #d7ccc8 !important; } - -.brown.lighten-3 { - background-color: #bcaaa4 !important; } - -.brown-text.text-lighten-3 { - color: #bcaaa4 !important; } - -.brown.lighten-2 { - background-color: #a1887f !important; } - -.brown-text.text-lighten-2 { - color: #a1887f !important; } - -.brown.lighten-1 { - background-color: #8d6e63 !important; } - -.brown-text.text-lighten-1 { - color: #8d6e63 !important; } - -.brown { - background-color: #795548 !important; } - -.brown-text { - color: #795548 !important; } - -.brown.darken-1 { - background-color: #6d4c41 !important; } - -.brown-text.text-darken-1 { - color: #6d4c41 !important; } - -.brown.darken-2 { - background-color: #5d4037 !important; } - -.brown-text.text-darken-2 { - color: #5d4037 !important; } - -.brown.darken-3 { - background-color: #4e342e !important; } - -.brown-text.text-darken-3 { - color: #4e342e !important; } - -.brown.darken-4 { - background-color: #3e2723 !important; } - -.brown-text.text-darken-4 { - color: #3e2723 !important; } - -.blue-grey.lighten-5 { - background-color: #eceff1 !important; } - -.blue-grey-text.text-lighten-5 { - color: #eceff1 !important; } - -.blue-grey.lighten-4 { - background-color: #cfd8dc !important; } - -.blue-grey-text.text-lighten-4 { - color: #cfd8dc !important; } - -.blue-grey.lighten-3 { - background-color: #b0bec5 !important; } - -.blue-grey-text.text-lighten-3 { - color: #b0bec5 !important; } - -.blue-grey.lighten-2 { - background-color: #90a4ae !important; } - -.blue-grey-text.text-lighten-2 { - color: #90a4ae !important; } - -.blue-grey.lighten-1 { - background-color: #78909c !important; } - -.blue-grey-text.text-lighten-1 { - color: #78909c !important; } - -.blue-grey { - background-color: #607d8b !important; } - -.blue-grey-text { - color: #607d8b !important; } - -.blue-grey.darken-1 { - background-color: #546e7a !important; } - -.blue-grey-text.text-darken-1 { - color: #546e7a !important; } - -.blue-grey.darken-2 { - background-color: #455a64 !important; } - -.blue-grey-text.text-darken-2 { - color: #455a64 !important; } - -.blue-grey.darken-3 { - background-color: #37474f !important; } - -.blue-grey-text.text-darken-3 { - color: #37474f !important; } - -.blue-grey.darken-4 { - background-color: #263238 !important; } - -.blue-grey-text.text-darken-4 { - color: #263238 !important; } - -.grey.lighten-5 { - background-color: #fafafa !important; } - -.grey-text.text-lighten-5 { - color: #fafafa !important; } - -.grey.lighten-4 { - background-color: #f5f5f5 !important; } - -.grey-text.text-lighten-4 { - color: #f5f5f5 !important; } - -.grey.lighten-3 { - background-color: #eeeeee !important; } - -.grey-text.text-lighten-3 { - color: #eeeeee !important; } - -.grey.lighten-2 { - background-color: #e0e0e0 !important; } - -.grey-text.text-lighten-2 { - color: #e0e0e0 !important; } - -.grey.lighten-1 { - background-color: #bdbdbd !important; } - -.grey-text.text-lighten-1 { - color: #bdbdbd !important; } - -.grey { - background-color: #9e9e9e !important; } - -.grey-text { - color: #9e9e9e !important; } - -.grey.darken-1 { - background-color: #757575 !important; } - -.grey-text.text-darken-1 { - color: #757575 !important; } - -.grey.darken-2 { - background-color: #616161 !important; } - -.grey-text.text-darken-2 { - color: #616161 !important; } - -.grey.darken-3 { - background-color: #424242 !important; } - -.grey-text.text-darken-3 { - color: #424242 !important; } - -.grey.darken-4 { - background-color: #212121 !important; } - -.grey-text.text-darken-4 { - color: #212121 !important; } - -.shades.black { - background-color: #000000 !important; } - -.shades-text.text-black { - color: #000000 !important; } - -.shades.white { - background-color: #FFFFFF !important; } - -.shades-text.text-white { - color: #FFFFFF !important; } - -.shades.transparent { - background-color: transparent !important; } - -.shades-text.text-transparent { - color: transparent !important; } - -.black { - background-color: #000000 !important; } - -.black-text { - color: #000000 !important; } - -.white { - background-color: #FFFFFF !important; } - -.white-text { - color: #FFFFFF !important; } - -.transparent { - background-color: transparent !important; } - -.transparent-text { - color: transparent !important; } - -/*** Colors ***/ -/*** Badges ***/ -/*** Buttons ***/ -/*** Cards ***/ -/*** Collapsible ***/ -/*** Dropdown ***/ -/*** Fonts ***/ -/*** Forms ***/ -/*** Global ***/ -/*** Navbar ***/ -/*** SideNav ***/ -/*** Photo Slider ***/ -/*** Tabs ***/ -/*** Tables ***/ -/*** Toasts ***/ -/*** Typography ***/ -/*** Collections ***/ -/* Progress Bar */ -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ -/** - * 1. Set default font family to sans-serif. - * 2. Prevent iOS text size adjust after orientation change, without disabling - * user zoom. - */ -html { - font-family: sans-serif; - /* 1 */ - -ms-text-size-adjust: 100%; - /* 2 */ - -webkit-text-size-adjust: 100%; - /* 2 */ } - -/** - * Remove default margin. - */ -body { - margin: 0; } - -/* HTML5 display definitions - ========================================================================== */ -/** - * Correct `block` display not defined for any HTML5 element in IE 8/9. - * Correct `block` display not defined for `details` or `summary` in IE 10/11 - * and Firefox. - * Correct `block` display not defined for `main` in IE 11. - */ -article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { - display: block; } - -/** - * 1. Correct `inline-block` display not defined in IE 8/9. - * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. - */ -audio, canvas, progress, video { - display: inline-block; - /* 1 */ - vertical-align: baseline; - /* 2 */ } - -/** - * Prevent modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. - */ -audio:not([controls]) { - display: none; - height: 0; } - -/** - * Address `[hidden]` styling not present in IE 8/9/10. - * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. - */ -[hidden], template { - display: none; } - -/* Links - ========================================================================== */ -/** - * Remove the gray background color from active links in IE 10. - */ -a { - background-color: transparent; } - -/** - * Improve readability when focused and also mouse hovered in all browsers. - */ -a:active, a:hover { - outline: 0; } - -/* Text-level semantics - ========================================================================== */ -/** - * Address styling not present in IE 8/9/10/11, Safari, and Chrome. - */ -abbr[title] { - border-bottom: 1px dotted; } - -/** - * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. - */ -b, strong { - font-weight: bold; } - -/** - * Address styling not present in Safari and Chrome. - */ -dfn { - font-style: italic; } - -/** - * Address variable `h1` font-size and margin within `section` and `article` - * contexts in Firefox 4+, Safari, and Chrome. - */ -h1 { - font-size: 2em; - margin: 0.67em 0; } - -/** - * Address styling not present in IE 8/9. - */ -mark { - background: #ff0; - color: #000; } - -/** - * Address inconsistent and variable font size in all browsers. - */ -small { - font-size: 80%; } - -/** - * Prevent `sub` and `sup` affecting `line-height` in all browsers. - */ -sub, sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; } - -sup { - top: -0.5em; } - -sub { - bottom: -0.25em; } - -/* Embedded content - ========================================================================== */ -/** - * Remove border when inside `a` element in IE 8/9/10. - */ -img { - border: 0; } - -/** - * Correct overflow not hidden in IE 9/10/11. - */ -svg:not(:root) { - overflow: hidden; } - -/* Grouping content - ========================================================================== */ -/** - * Address margin not present in IE 8/9 and Safari. - */ -figure { - margin: 1em 40px; } - -/** - * Address differences between Firefox and other browsers. - */ -hr { - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; } - -/** - * Contain overflow in all browsers. - */ -pre { - overflow: auto; } - -/** - * Address odd `em`-unit font size rendering in all browsers. - */ -code, kbd, pre, samp { - font-family: monospace, monospace; - font-size: 1em; } - -/* Forms - ========================================================================== */ -/** - * Known limitation: by default, Chrome and Safari on OS X allow very limited - * styling of `select`, unless a `border` property is set. - */ -/** - * 1. Correct color not being inherited. - * Known issue: affects color of disabled elements. - * 2. Correct font properties not being inherited. - * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. - */ -button, input, optgroup, select, textarea { - color: inherit; - /* 1 */ - font: inherit; - /* 2 */ - margin: 0; - /* 3 */ } - -/** - * Address `overflow` set to `hidden` in IE 8/9/10/11. - */ -button { - overflow: visible; } - -/** - * Address inconsistent `text-transform` inheritance for `button` and `select`. - * All other form control elements do not inherit `text-transform` values. - * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. - * Correct `select` style inheritance in Firefox. - */ -button, select { - text-transform: none; } - -/** - * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` - * and `video` controls. - * 2. Correct inability to style clickable `input` types in iOS. - * 3. Improve usability and consistency of cursor style between image-type - * `input` and others. - */ -/* 1 */ -html input[type="button"], button, input[type="reset"], input[type="submit"] { - -webkit-appearance: button; - /* 2 */ - cursor: pointer; - /* 3 */ } - -/** - * Re-set default cursor for disabled elements. - */ -button[disabled], html input[disabled] { - cursor: default; } - -/** - * Remove inner padding and border in Firefox 4+. - */ -button::-moz-focus-inner, input::-moz-focus-inner { - border: 0; - padding: 0; } - -/** - * Address Firefox 4+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. - */ -input { - line-height: normal; } - -/** - * It's recommended that you don't attempt to style these elements. - * Firefox's implementation doesn't respect box-sizing, padding, or width. - * - * 1. Address box sizing set to `content-box` in IE 8/9/10. - * 2. Remove excess padding in IE 8/9/10. - */ -input[type="checkbox"], input[type="radio"] { - box-sizing: border-box; - /* 1 */ - padding: 0; - /* 2 */ } - -/** - * Fix the cursor style for Chrome's increment/decrement buttons. For certain - * `font-size` values of the `input`, it causes the cursor style of the - * decrement button to change from `default` to `text`. - */ -input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { - height: auto; } - -/** - * 1. Address `appearance` set to `searchfield` in Safari and Chrome. - * 2. Address `box-sizing` set to `border-box` in Safari and Chrome - * (include `-moz` to future-proof). - */ -input[type="search"] { - -webkit-appearance: textfield; - /* 1 */ - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - /* 2 */ - box-sizing: content-box; } - -/** - * Remove inner padding and search cancel button in Safari and Chrome on OS X. - * Safari (but not Chrome) clips the cancel button when the search input has - * padding (and `textfield` appearance). - */ -input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; } - -/** - * Define consistent border, margin, and padding. - */ -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; } - -/** - * 1. Correct `color` not being inherited in IE 8/9/10/11. - * 2. Remove padding so people aren't caught out if they zero out fieldsets. - */ -legend { - border: 0; - /* 1 */ - padding: 0; - /* 2 */ } - -/** - * Remove default vertical scrollbar in IE 8/9/10/11. - */ -textarea { - overflow: auto; } - -/** - * Don't inherit the `font-weight` (applied by a rule above). - * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. - */ -optgroup { - font-weight: bold; } - -/* Tables - ========================================================================== */ -/** - * Remove most spacing between table cells. - */ -table { - border-collapse: collapse; - border-spacing: 0; } - -td, th { - padding: 0; } - -html { - box-sizing: border-box; } - -*, *:before, *:after { - box-sizing: inherit; } - -ul { - list-style-type: none; } - -a { - color: #039be5; - text-decoration: none; - -webkit-tap-highlight-color: transparent; } - -.valign-wrapper { - display: -webkit-box; - display: -moz-box; - display: -ms-flexbox; - display: -webkit-flex; - display: flex; - -webkit-flex-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; } - .valign-wrapper .valign { - display: block; } - -ul { - padding: 0; } - ul li { - list-style-type: none; } - -.clearfix { - clear: both; } - -.z-depth-0 { - box-shadow: none !important; } - -.z-depth-1, nav, .card-panel, .card, .toast, .btn, .btn-large, .btn-floating, .dropdown-content, .collapsible, .side-nav { - box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); } - -.z-depth-1-half, .btn:hover, .btn-large:hover, .btn-floating:hover { - box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); } - -.z-depth-2 { - box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); } - -.z-depth-3 { - box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19); } - -.z-depth-4, .modal { - box-shadow: 0 16px 28px 0 rgba(0, 0, 0, 0.22), 0 25px 55px 0 rgba(0, 0, 0, 0.21); } - -.z-depth-5 { - box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22); } - -.hoverable:hover { - transition: box-shadow .25s; - box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); } - -.divider { - height: 1px; - overflow: hidden; - background-color: #e0e0e0; } - -blockquote { - margin: 20px 0; - padding-left: 1.5rem; - border-left: 5px solid #ee6e73; } - -i { - line-height: inherit; } - i.left { - float: left; - margin-right: 15px; } - i.right { - float: right; - margin-left: 15px; } - i.tiny { - font-size: 1rem; } - i.small { - font-size: 2rem; } - i.medium { - font-size: 4rem; } - i.large { - font-size: 6rem; } - -img.responsive-img, video.responsive-video { - max-width: 100%; - height: auto; } - -.pagination li { - float: left; - font-size: 1.2rem; - padding: 0 10px; - line-height: 30px; - border-radius: 2px; - text-align: center; } - .pagination li a { - color: #444; } - .pagination li.active a { - color: #fff; } - .pagination li.active { - background-color: #ee6e73; } - .pagination li.disabled a { - cursor: default; - color: #999; } - .pagination li i { - font-size: 2rem; } -.pagination li.pages ul li { - display: inline-block; - float: none; } - -@media only screen and (max-width : 992px) { - .pagination { - width: 100%; } - .pagination li.prev, .pagination li.next { - width: 10%; } - .pagination li.pages { - width: 80%; - overflow: hidden; - white-space: nowrap; } } - -.parallax-container { - position: relative; - overflow: hidden; - height: 500px; } - -.parallax { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: -1; } - .parallax img { - display: none; - position: absolute; - left: 50%; - bottom: 0; - min-width: 100%; - min-height: 100%; - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - transform: translateX(-50%); } - -.pin-top, .pin-bottom { - position: relative; } - -.pinned { - position: fixed !important; } - -/********************* - Transition Classes -**********************/ -ul.staggered-list li { - opacity: 0; } - -.fade-in { - opacity: 0; - transform-origin: 0 50%; } - -/********************* - Media Query Classes -**********************/ -@media only screen and (max-width : 600px) { - .hide-on-small-only, .hide-on-small-and-down { - display: none !important; } } - -@media only screen and (max-width : 992px) { - .hide-on-med-and-down { - display: none !important; } } - -@media only screen and (min-width : 601px) { - .hide-on-med-and-up { - display: none !important; } } - -@media only screen and (min-width: 600px) and (max-width: 992px) { - .hide-on-med-only { - display: none !important; } } - -@media only screen and (min-width : 993px) { - .hide-on-large-only { - display: none !important; } } - -@media only screen and (min-width : 993px) { - .show-on-large { - display: initial !important; } } - -@media only screen and (min-width: 600px) and (max-width: 992px) { - .show-on-medium { - display: initial !important; } } - -@media only screen and (max-width : 600px) { - .show-on-small { - display: initial !important; } } - -@media only screen and (min-width : 601px) { - .show-on-medium-and-up { - display: initial !important; } } - -@media only screen and (max-width : 992px) { - .show-on-medium-and-down { - display: initial !important; } } - -@media only screen and (max-width : 600px) { - .center-on-small-only { - text-align: center; } } - -footer.page-footer { - margin-top: 20px; - padding-top: 20px; - background-color: #ee6e73; } - footer.page-footer .footer-copyright { - overflow: hidden; - height: 50px; - line-height: 50px; - color: rgba(255, 255, 255, 0.8); - background-color: rgba(51, 51, 51, 0.08); } - -table, th, td { - border: none; } - -table { - width: 100%; - display: table; } - table.bordered > thead > tr, table.bordered > tbody > tr { - border-bottom: 1px solid #d0d0d0; } - table.striped > tbody > tr:nth-child(odd) { - background-color: #f2f2f2; } - table.striped > tbody > tr > td { - border-radius: 0px; } - table.hoverable > tbody > tr { - -webkit-transition: background-color .25s ease; - -moz-transition: background-color .25s ease; - -o-transition: background-color .25s ease; - -ms-transition: background-color .25s ease; - transition: background-color .25s ease; } - table.hoverable > tbody > tr:hover { - background-color: #f2f2f2; } - table.centered thead tr th, table.centered tbody tr td { - text-align: center; } - -thead { - border-bottom: 1px solid #d0d0d0; } - -td, th { - padding: 15px 5px; - display: table-cell; - text-align: left; - vertical-align: middle; - border-radius: 2px; } - -@media only screen and (max-width : 992px) { - table.responsive-table { - width: 100%; - border-collapse: collapse; - border-spacing: 0; - display: block; - position: relative; - /* sort out borders */ } - table.responsive-table th, table.responsive-table td { - margin: 0; - vertical-align: top; } - table.responsive-table th { - text-align: left; } - table.responsive-table thead { - display: block; - float: left; } - table.responsive-table thead tr { - display: block; - padding: 0 10px 0 0; } - table.responsive-table thead tr th::before { - content: "\00a0"; } - table.responsive-table tbody { - display: block; - width: auto; - position: relative; - overflow-x: auto; - white-space: nowrap; } - table.responsive-table tbody tr { - display: inline-block; - vertical-align: top; } - table.responsive-table th { - display: block; - text-align: right; } - table.responsive-table td { - display: block; - min-height: 1.25em; - text-align: left; } - table.responsive-table tr { - padding: 0 10px; } - table.responsive-table thead { - border: 0; - border-right: 1px solid #d0d0d0; } - table.responsive-table.bordered th { - border-bottom: 0; - border-left: 0; } - table.responsive-table.bordered td { - border-left: 0; - border-right: 0; - border-bottom: 0; } - table.responsive-table.bordered tr { - border: 0; } - table.responsive-table.bordered tbody tr { - border-right: 1px solid #d0d0d0; } } - -.collection { - margin: 0.5rem 0 1rem 0; - border: 1px solid #e0e0e0; - border-radius: 2px; - overflow: hidden; - position: relative; } - .collection .collection-item { - background-color: #fff; - line-height: 1.5rem; - padding: 10px 20px; - margin: 0; - border-bottom: 1px solid #e0e0e0; } - .collection .collection-item.avatar { - min-height: 84px; - padding-left: 72px; - position: relative; } - .collection .collection-item.avatar .circle { - position: absolute; - width: 42px; - height: 42px; - overflow: hidden; - left: 15px; - display: inline-block; - vertical-align: middle; } - .collection .collection-item.avatar i.circle { - font-size: 18px; - line-height: 42px; - color: #fff; - background-color: #999; - text-align: center; } - .collection .collection-item.avatar .title { - font-size: 16px; } - .collection .collection-item.avatar p { - margin: 0; } - .collection .collection-item.avatar .secondary-content { - position: absolute; - top: 16px; - right: 16px; } - .collection .collection-item:last-child { - border-bottom: none; } - .collection .collection-item.active { - background-color: #26a69a; - color: #eafaf9; } - .collection a.collection-item { - display: block; - -webkit-transition: 0.25s; - -moz-transition: 0.25s; - -o-transition: 0.25s; - -ms-transition: 0.25s; - transition: 0.25s; - color: #26a69a; } - .collection a.collection-item:not(.active):hover { - background-color: #ddd; } - .collection.with-header .collection-header { - background-color: #fff; - border-bottom: 1px solid #e0e0e0; - padding: 10px 20px; } - .collection.with-header .collection-item { - padding-left: 30px; } - .collection.with-header .collection-item.avatar { - padding-left: 72px; } - -.secondary-content { - float: right; - color: #26a69a; } - -span.badge { - min-width: 3rem; - padding: 0 6px; - text-align: center; - font-size: 1rem; - line-height: inherit; - color: #757575; - position: absolute; - right: 15px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; } - span.badge.new { - font-weight: 300; - font-size: 0.8rem; - color: #fff; - background-color: #26a69a; - border-radius: 2px; } - span.badge.new:after { - content: " new"; } - -.video-container { - position: relative; - padding-bottom: 56.25%; - padding-top: 30px; - height: 0; - overflow: hidden; } - .video-container.no-controls { - padding-top: 0; } - .video-container iframe, .video-container object, .video-container embed { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; } - -.progress { - position: relative; - height: 4px; - display: block; - width: 100%; - background-color: #acece6; - border-radius: 2px; - margin: 0.5rem 0 1rem 0; - overflow: hidden; } - .progress .determinate { - position: absolute; - background-color: inherit; - top: 0; - left: 0; - bottom: 0; - background-color: #26a69a; - -webkit-transition: width .3s linear; - -moz-transition: width .3s linear; - -o-transition: width .3s linear; - -ms-transition: width .3s linear; - transition: width .3s linear; } - .progress .indeterminate { - background-color: #26a69a; } - .progress .indeterminate:before { - content: ''; - position: absolute; - background-color: inherit; - top: 0; - left: 0; - bottom: 0; - will-change: left, right; - -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; - -moz-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; - -ms-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; - -o-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; - animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; } - .progress .indeterminate:after { - content: ''; - position: absolute; - background-color: inherit; - top: 0; - left: 0; - bottom: 0; - will-change: left, right; - -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; - -moz-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; - -ms-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; - -o-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; - animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; - -webkit-animation-delay: 1.15s; - -moz-animation-delay: 1.15s; - -ms-animation-delay: 1.15s; - -o-animation-delay: 1.15s; - animation-delay: 1.15s; } - -@-webkit-keyframes indeterminate { - 0% { - left: -35%; - right: 100%; } - - 60% { - left: 100%; - right: -90%; } - - 100% { - left: 100%; - right: -90%; } } - -@-moz-keyframes indeterminate { - 0% { - left: -35%; - right: 100%; } - - 60% { - left: 100%; - right: -90%; } - - 100% { - left: 100%; - right: -90%; } } - -@keyframes indeterminate { - 0% { - left: -35%; - right: 100%; } - - 60% { - left: 100%; - right: -90%; } - - 100% { - left: 100%; - right: -90%; } } - -@-webkit-keyframes indeterminate-short { - 0% { - left: -200%; - right: 100%; } - - 60% { - left: 107%; - right: -8%; } - - 100% { - left: 107%; - right: -8%; } } - -@-moz-keyframes indeterminate-short { - 0% { - left: -200%; - right: 100%; } - - 60% { - left: 107%; - right: -8%; } - - 100% { - left: 107%; - right: -8%; } } - -@keyframes indeterminate-short { - 0% { - left: -200%; - right: 100%; } - - 60% { - left: 107%; - right: -8%; } - - 100% { - left: 107%; - right: -8%; } } - -/******************* - Utility Classes -*******************/ -.hide { - display: none !important; } - -.left-align { - text-align: left; } - -.right-align { - text-align: right; } - -.center, .center-align { - text-align: center; } - -.left { - float: left !important; } - -.right { - float: right !important; } - -.no-select, input[type=range], input[type=range] + .thumb { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; } - -.circle { - border-radius: 50%; } - -.center-block { - display: block; - margin-left: auto; - margin-right: auto; } - -.truncate { - display: block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; } - -.no-padding { - padding: 0 !important; } - -@font-face { - font-family: "Material-Design-Icons"; - src: url("../font/material-design-icons/Material-Design-Icons.eot?#iefix") format("embedded-opentype"), url("../font/material-design-icons/Material-Design-Icons.woff2") format("woff2"), url("../font/material-design-icons/Material-Design-Icons.woff") format("woff"), url("../font/material-design-icons/Material-Design-Icons.ttf") format("truetype"), url("../font/material-design-icons/Material-Design-Icons.svg#Material-Design-Icons") format("svg"); - font-weight: normal; - font-style: normal; } - -[class^="mdi-"], [class*="mdi-"] { - speak: none; - display: inline-block; - font-family: "Material-Design-Icons"; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-rendering: auto; - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - transform: translate(0, 0); } - [class^="mdi-"]:before, [class*="mdi-"]:before { - display: inline-block; - speak: none; - text-decoration: inherit; } - [class^="mdi-"].pull-left, [class*="mdi-"].pull-left { - margin-right: .3em; } - [class^="mdi-"].pull-right, [class*="mdi-"].pull-right { - margin-left: .3em; } - [class^="mdi-"].mdi-lg:before, [class^="mdi-"].mdi-lg:after, [class*="mdi-"].mdi-lg:before, [class*="mdi-"].mdi-lg:after { - font-size: 1.33333333em; - line-height: 0.75em; - vertical-align: -15%; } - [class^="mdi-"].mdi-2x:before, [class^="mdi-"].mdi-2x:after, [class*="mdi-"].mdi-2x:before, [class*="mdi-"].mdi-2x:after { - font-size: 2em; } - [class^="mdi-"].mdi-3x:before, [class^="mdi-"].mdi-3x:after, [class*="mdi-"].mdi-3x:before, [class*="mdi-"].mdi-3x:after { - font-size: 3em; } - [class^="mdi-"].mdi-4x:before, [class^="mdi-"].mdi-4x:after, [class*="mdi-"].mdi-4x:before, [class*="mdi-"].mdi-4x:after { - font-size: 4em; } - [class^="mdi-"].mdi-5x:before, [class^="mdi-"].mdi-5x:after, [class*="mdi-"].mdi-5x:before, [class*="mdi-"].mdi-5x:after { - font-size: 5em; } - -[class^="mdi-device-signal-cellular-"]:after, [class^="mdi-device-battery-"]:after, [class^="mdi-device-battery-charging-"]:after, [class^="mdi-device-signal-cellular-connected-no-internet-"]:after, [class^="mdi-device-signal-wifi-"]:after, [class^="mdi-device-signal-wifi-statusbar-not-connected"]:after, .mdi-device-network-wifi:after { - opacity: .3; - position: absolute; - left: 0; - top: 0; - z-index: 1; - display: inline-block; - speak: none; - text-decoration: inherit; } - -[class^="mdi-device-signal-cellular-"]:after { - content: "\e758"; } - -[class^="mdi-device-battery-"]:after { - content: "\e735"; } - -[class^="mdi-device-battery-charging-"]:after { - content: "\e733"; } - -[class^="mdi-device-signal-cellular-connected-no-internet-"]:after { - content: "\e75d"; } - -[class^="mdi-device-signal-wifi-"]:after, .mdi-device-network-wifi:after { - content: "\e765"; } - -[class^="mdi-device-signal-wifi-statusbasr-not-connected"]:after { - content: "\e8f7"; } - -.mdi-device-signal-cellular-off:after, .mdi-device-signal-cellular-null:after, .mdi-device-signal-cellular-no-sim:after, .mdi-device-signal-wifi-off:after, .mdi-device-signal-wifi-4-bar:after, .mdi-device-signal-cellular-4-bar:after, .mdi-device-battery-alert:after, .mdi-device-signal-cellular-connected-no-internet-4-bar:after, .mdi-device-battery-std:after, .mdi-device-battery-full .mdi-device-battery-unknown:after { - content: ""; } - -.mdi-fw { - width: 1.28571429em; - text-align: center; } - -.mdi-ul { - padding-left: 0; - margin-left: 2.14285714em; - list-style-type: none; } - -.mdi-ul > li { - position: relative; } - -.mdi-li { - position: absolute; - left: -2.14285714em; - width: 2.14285714em; - top: 0.14285714em; - text-align: center; } - -.mdi-li.mdi-lg { - left: -1.85714286em; } - -.mdi-border { - padding: .2em .25em .15em; - border: solid 0.08em #eeeeee; - border-radius: .1em; } - -.mdi-spin { - -webkit-animation: mdi-spin 2s infinite linear; - animation: mdi-spin 2s infinite linear; - -webkit-transform-origin: 50% 50%; - -moz-transform-origin: 50% 50%; - -o-transform-origin: 50% 50%; - transform-origin: 50% 50%; } - -.mdi-pulse { - -webkit-animation: mdi-spin 1s steps(8) infinite; - animation: mdi-spin 1s steps(8) infinite; - -webkit-transform-origin: 50% 50%; - -moz-transform-origin: 50% 50%; - -o-transform-origin: 50% 50%; - transform-origin: 50% 50%; } - -@-webkit-keyframes mdi-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } - - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); } } - -@keyframes mdi-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } - - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); } } - -.mdi-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); } - -.mdi-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); } - -.mdi-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); } - -.mdi-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); } - -.mdi-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); } - -:root .mdi-rotate-90, :root .mdi-rotate-180, :root .mdi-rotate-270, :root .mdi-flip-horizontal, :root .mdi-flip-vertical { - filter: none; } - -.mdi-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; } - -.mdi-stack-1x, .mdi-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; } - -.mdi-stack-1x { - line-height: inherit; } - -.mdi-stack-2x { - font-size: 2em; } - -.mdi-inverse { - color: #ffffff; } - -/* Start Icons */ -.mdi-action-3d-rotation:before { - content: "\e600"; } - -.mdi-action-accessibility:before { - content: "\e601"; } - -.mdi-action-account-balance-wallet:before { - content: "\e602"; } - -.mdi-action-account-balance:before { - content: "\e603"; } - -.mdi-action-account-box:before { - content: "\e604"; } - -.mdi-action-account-child:before { - content: "\e605"; } - -.mdi-action-account-circle:before { - content: "\e606"; } - -.mdi-action-add-shopping-cart:before { - content: "\e607"; } - -.mdi-action-alarm-add:before { - content: "\e608"; } - -.mdi-action-alarm-off:before { - content: "\e609"; } - -.mdi-action-alarm-on:before { - content: "\e60a"; } - -.mdi-action-alarm:before { - content: "\e60b"; } - -.mdi-action-android:before { - content: "\e60c"; } - -.mdi-action-announcement:before { - content: "\e60d"; } - -.mdi-action-aspect-ratio:before { - content: "\e60e"; } - -.mdi-action-assessment:before { - content: "\e60f"; } - -.mdi-action-assignment-ind:before { - content: "\e610"; } - -.mdi-action-assignment-late:before { - content: "\e611"; } - -.mdi-action-assignment-return:before { - content: "\e612"; } - -.mdi-action-assignment-returned:before { - content: "\e613"; } - -.mdi-action-assignment-turned-in:before { - content: "\e614"; } - -.mdi-action-assignment:before { - content: "\e615"; } - -.mdi-action-autorenew:before { - content: "\e616"; } - -.mdi-action-backup:before { - content: "\e617"; } - -.mdi-action-book:before { - content: "\e618"; } - -.mdi-action-bookmark-outline:before { - content: "\e619"; } - -.mdi-action-bookmark:before { - content: "\e61a"; } - -.mdi-action-bug-report:before { - content: "\e61b"; } - -.mdi-action-cached:before { - content: "\e61c"; } - -.mdi-action-check-circle:before { - content: "\e61d"; } - -.mdi-action-class:before { - content: "\e61e"; } - -.mdi-action-credit-card:before { - content: "\e61f"; } - -.mdi-action-dashboard:before { - content: "\e620"; } - -.mdi-action-delete:before { - content: "\e621"; } - -.mdi-action-description:before { - content: "\e622"; } - -.mdi-action-dns:before { - content: "\e623"; } - -.mdi-action-done-all:before { - content: "\e624"; } - -.mdi-action-done:before { - content: "\e625"; } - -.mdi-action-event:before { - content: "\e626"; } - -.mdi-action-exit-to-app:before { - content: "\e627"; } - -.mdi-action-explore:before { - content: "\e628"; } - -.mdi-action-extension:before { - content: "\e629"; } - -.mdi-action-face-unlock:before { - content: "\e62a"; } - -.mdi-action-favorite-outline:before { - content: "\e62b"; } - -.mdi-action-favorite:before { - content: "\e62c"; } - -.mdi-action-find-in-page:before { - content: "\e62d"; } - -.mdi-action-find-replace:before { - content: "\e62e"; } - -.mdi-action-flip-to-back:before { - content: "\e62f"; } - -.mdi-action-flip-to-front:before { - content: "\e630"; } - -.mdi-action-get-app:before { - content: "\e631"; } - -.mdi-action-grade:before { - content: "\e632"; } - -.mdi-action-group-work:before { - content: "\e633"; } - -.mdi-action-help:before { - content: "\e634"; } - -.mdi-action-highlight-remove:before { - content: "\e635"; } - -.mdi-action-history:before { - content: "\e636"; } - -.mdi-action-home:before { - content: "\e637"; } - -.mdi-action-https:before { - content: "\e638"; } - -.mdi-action-info-outline:before { - content: "\e639"; } - -.mdi-action-info:before { - content: "\e63a"; } - -.mdi-action-input:before { - content: "\e63b"; } - -.mdi-action-invert-colors:before { - content: "\e63c"; } - -.mdi-action-label-outline:before { - content: "\e63d"; } - -.mdi-action-label:before { - content: "\e63e"; } - -.mdi-action-language:before { - content: "\e63f"; } - -.mdi-action-launch:before { - content: "\e640"; } - -.mdi-action-list:before { - content: "\e641"; } - -.mdi-action-lock-open:before { - content: "\e642"; } - -.mdi-action-lock-outline:before { - content: "\e643"; } - -.mdi-action-lock:before { - content: "\e644"; } - -.mdi-action-loyalty:before { - content: "\e645"; } - -.mdi-action-markunread-mailbox:before { - content: "\e646"; } - -.mdi-action-note-add:before { - content: "\e647"; } - -.mdi-action-open-in-browser:before { - content: "\e648"; } - -.mdi-action-open-in-new:before { - content: "\e649"; } - -.mdi-action-open-with:before { - content: "\e64a"; } - -.mdi-action-pageview:before { - content: "\e64b"; } - -.mdi-action-payment:before { - content: "\e64c"; } - -.mdi-action-perm-camera-mic:before { - content: "\e64d"; } - -.mdi-action-perm-contact-cal:before { - content: "\e64e"; } - -.mdi-action-perm-data-setting:before { - content: "\e64f"; } - -.mdi-action-perm-device-info:before { - content: "\e650"; } - -.mdi-action-perm-identity:before { - content: "\e651"; } - -.mdi-action-perm-media:before { - content: "\e652"; } - -.mdi-action-perm-phone-msg:before { - content: "\e653"; } - -.mdi-action-perm-scan-wifi:before { - content: "\e654"; } - -.mdi-action-picture-in-picture:before { - content: "\e655"; } - -.mdi-action-polymer:before { - content: "\e656"; } - -.mdi-action-print:before { - content: "\e657"; } - -.mdi-action-query-builder:before { - content: "\e658"; } - -.mdi-action-question-answer:before { - content: "\e659"; } - -.mdi-action-receipt:before { - content: "\e65a"; } - -.mdi-action-redeem:before { - content: "\e65b"; } - -.mdi-action-reorder:before { - content: "\e65c"; } - -.mdi-action-report-problem:before { - content: "\e65d"; } - -.mdi-action-restore:before { - content: "\e65e"; } - -.mdi-action-room:before { - content: "\e65f"; } - -.mdi-action-schedule:before { - content: "\e660"; } - -.mdi-action-search:before { - content: "\e661"; } - -.mdi-action-settings-applications:before { - content: "\e662"; } - -.mdi-action-settings-backup-restore:before { - content: "\e663"; } - -.mdi-action-settings-bluetooth:before { - content: "\e664"; } - -.mdi-action-settings-cell:before { - content: "\e665"; } - -.mdi-action-settings-display:before { - content: "\e666"; } - -.mdi-action-settings-ethernet:before { - content: "\e667"; } - -.mdi-action-settings-input-antenna:before { - content: "\e668"; } - -.mdi-action-settings-input-component:before { - content: "\e669"; } - -.mdi-action-settings-input-composite:before { - content: "\e66a"; } - -.mdi-action-settings-input-hdmi:before { - content: "\e66b"; } - -.mdi-action-settings-input-svideo:before { - content: "\e66c"; } - -.mdi-action-settings-overscan:before { - content: "\e66d"; } - -.mdi-action-settings-phone:before { - content: "\e66e"; } - -.mdi-action-settings-power:before { - content: "\e66f"; } - -.mdi-action-settings-remote:before { - content: "\e670"; } - -.mdi-action-settings-voice:before { - content: "\e671"; } - -.mdi-action-settings:before { - content: "\e672"; } - -.mdi-action-shop-two:before { - content: "\e673"; } - -.mdi-action-shop:before { - content: "\e674"; } - -.mdi-action-shopping-basket:before { - content: "\e675"; } - -.mdi-action-shopping-cart:before { - content: "\e676"; } - -.mdi-action-speaker-notes:before { - content: "\e677"; } - -.mdi-action-spellcheck:before { - content: "\e678"; } - -.mdi-action-star-rate:before { - content: "\e679"; } - -.mdi-action-stars:before { - content: "\e67a"; } - -.mdi-action-store:before { - content: "\e67b"; } - -.mdi-action-subject:before { - content: "\e67c"; } - -.mdi-action-supervisor-account:before { - content: "\e67d"; } - -.mdi-action-swap-horiz:before { - content: "\e67e"; } - -.mdi-action-swap-vert-circle:before { - content: "\e67f"; } - -.mdi-action-swap-vert:before { - content: "\e680"; } - -.mdi-action-system-update-tv:before { - content: "\e681"; } - -.mdi-action-tab-unselected:before { - content: "\e682"; } - -.mdi-action-tab:before { - content: "\e683"; } - -.mdi-action-theaters:before { - content: "\e684"; } - -.mdi-action-thumb-down:before { - content: "\e685"; } - -.mdi-action-thumb-up:before { - content: "\e686"; } - -.mdi-action-thumbs-up-down:before { - content: "\e687"; } - -.mdi-action-toc:before { - content: "\e688"; } - -.mdi-action-today:before { - content: "\e689"; } - -.mdi-action-track-changes:before { - content: "\e68a"; } - -.mdi-action-translate:before { - content: "\e68b"; } - -.mdi-action-trending-down:before { - content: "\e68c"; } - -.mdi-action-trending-neutral:before { - content: "\e68d"; } - -.mdi-action-trending-up:before { - content: "\e68e"; } - -.mdi-action-turned-in-not:before { - content: "\e68f"; } - -.mdi-action-turned-in:before { - content: "\e690"; } - -.mdi-action-verified-user:before { - content: "\e691"; } - -.mdi-action-view-agenda:before { - content: "\e692"; } - -.mdi-action-view-array:before { - content: "\e693"; } - -.mdi-action-view-carousel:before { - content: "\e694"; } - -.mdi-action-view-column:before { - content: "\e695"; } - -.mdi-action-view-day:before { - content: "\e696"; } - -.mdi-action-view-headline:before { - content: "\e697"; } - -.mdi-action-view-list:before { - content: "\e698"; } - -.mdi-action-view-module:before { - content: "\e699"; } - -.mdi-action-view-quilt:before { - content: "\e69a"; } - -.mdi-action-view-stream:before { - content: "\e69b"; } - -.mdi-action-view-week:before { - content: "\e69c"; } - -.mdi-action-visibility-off:before { - content: "\e69d"; } - -.mdi-action-visibility:before { - content: "\e69e"; } - -.mdi-action-wallet-giftcard:before { - content: "\e69f"; } - -.mdi-action-wallet-membership:before { - content: "\e6a0"; } - -.mdi-action-wallet-travel:before { - content: "\e6a1"; } - -.mdi-action-work:before { - content: "\e6a2"; } - -.mdi-alert-error:before { - content: "\e6a3"; } - -.mdi-alert-warning:before { - content: "\e6a4"; } - -.mdi-av-album:before { - content: "\e6a5"; } - -.mdi-av-closed-caption:before { - content: "\e6a6"; } - -.mdi-av-equalizer:before { - content: "\e6a7"; } - -.mdi-av-explicit:before { - content: "\e6a8"; } - -.mdi-av-fast-forward:before { - content: "\e6a9"; } - -.mdi-av-fast-rewind:before { - content: "\e6aa"; } - -.mdi-av-games:before { - content: "\e6ab"; } - -.mdi-av-hearing:before { - content: "\e6ac"; } - -.mdi-av-high-quality:before { - content: "\e6ad"; } - -.mdi-av-loop:before { - content: "\e6ae"; } - -.mdi-av-mic-none:before { - content: "\e6af"; } - -.mdi-av-mic-off:before { - content: "\e6b0"; } - -.mdi-av-mic:before { - content: "\e6b1"; } - -.mdi-av-movie:before { - content: "\e6b2"; } - -.mdi-av-my-library-add:before { - content: "\e6b3"; } - -.mdi-av-my-library-books:before { - content: "\e6b4"; } - -.mdi-av-my-library-music:before { - content: "\e6b5"; } - -.mdi-av-new-releases:before { - content: "\e6b6"; } - -.mdi-av-not-interested:before { - content: "\e6b7"; } - -.mdi-av-pause-circle-fill:before { - content: "\e6b8"; } - -.mdi-av-pause-circle-outline:before { - content: "\e6b9"; } - -.mdi-av-pause:before { - content: "\e6ba"; } - -.mdi-av-play-arrow:before { - content: "\e6bb"; } - -.mdi-av-play-circle-fill:before { - content: "\e6bc"; } - -.mdi-av-play-circle-outline:before { - content: "\e6bd"; } - -.mdi-av-play-shopping-bag:before { - content: "\e6be"; } - -.mdi-av-playlist-add:before { - content: "\e6bf"; } - -.mdi-av-queue-music:before { - content: "\e6c0"; } - -.mdi-av-queue:before { - content: "\e6c1"; } - -.mdi-av-radio:before { - content: "\e6c2"; } - -.mdi-av-recent-actors:before { - content: "\e6c3"; } - -.mdi-av-repeat-one:before { - content: "\e6c4"; } - -.mdi-av-repeat:before { - content: "\e6c5"; } - -.mdi-av-replay:before { - content: "\e6c6"; } - -.mdi-av-shuffle:before { - content: "\e6c7"; } - -.mdi-av-skip-next:before { - content: "\e6c8"; } - -.mdi-av-skip-previous:before { - content: "\e6c9"; } - -.mdi-av-snooze:before { - content: "\e6ca"; } - -.mdi-av-stop:before { - content: "\e6cb"; } - -.mdi-av-subtitles:before { - content: "\e6cc"; } - -.mdi-av-surround-sound:before { - content: "\e6cd"; } - -.mdi-av-timer:before { - content: "\e6ce"; } - -.mdi-av-video-collection:before { - content: "\e6cf"; } - -.mdi-av-videocam-off:before { - content: "\e6d0"; } - -.mdi-av-videocam:before { - content: "\e6d1"; } - -.mdi-av-volume-down:before { - content: "\e6d2"; } - -.mdi-av-volume-mute:before { - content: "\e6d3"; } - -.mdi-av-volume-off:before { - content: "\e6d4"; } - -.mdi-av-volume-up:before { - content: "\e6d5"; } - -.mdi-av-web:before { - content: "\e6d6"; } - -.mdi-communication-business:before { - content: "\e6d7"; } - -.mdi-communication-call-end:before { - content: "\e6d8"; } - -.mdi-communication-call-made:before { - content: "\e6d9"; } - -.mdi-communication-call-merge:before { - content: "\e6da"; } - -.mdi-communication-call-missed:before { - content: "\e6db"; } - -.mdi-communication-call-received:before { - content: "\e6dc"; } - -.mdi-communication-call-split:before { - content: "\e6dd"; } - -.mdi-communication-call:before { - content: "\e6de"; } - -.mdi-communication-chat:before { - content: "\e6df"; } - -.mdi-communication-clear-all:before { - content: "\e6e0"; } - -.mdi-communication-comment:before { - content: "\e6e1"; } - -.mdi-communication-contacts:before { - content: "\e6e2"; } - -.mdi-communication-dialer-sip:before { - content: "\e6e3"; } - -.mdi-communication-dialpad:before { - content: "\e6e4"; } - -.mdi-communication-dnd-on:before { - content: "\e6e5"; } - -.mdi-communication-email:before { - content: "\e6e6"; } - -.mdi-communication-forum:before { - content: "\e6e7"; } - -.mdi-communication-import-export:before { - content: "\e6e8"; } - -.mdi-communication-invert-colors-off:before { - content: "\e6e9"; } - -.mdi-communication-invert-colors-on:before { - content: "\e6ea"; } - -.mdi-communication-live-help:before { - content: "\e6eb"; } - -.mdi-communication-location-off:before { - content: "\e6ec"; } - -.mdi-communication-location-on:before { - content: "\e6ed"; } - -.mdi-communication-message:before { - content: "\e6ee"; } - -.mdi-communication-messenger:before { - content: "\e6ef"; } - -.mdi-communication-no-sim:before { - content: "\e6f0"; } - -.mdi-communication-phone:before { - content: "\e6f1"; } - -.mdi-communication-portable-wifi-off:before { - content: "\e6f2"; } - -.mdi-communication-quick-contacts-dialer:before { - content: "\e6f3"; } - -.mdi-communication-quick-contacts-mail:before { - content: "\e6f4"; } - -.mdi-communication-ring-volume:before { - content: "\e6f5"; } - -.mdi-communication-stay-current-landscape:before { - content: "\e6f6"; } - -.mdi-communication-stay-current-portrait:before { - content: "\e6f7"; } - -.mdi-communication-stay-primary-landscape:before { - content: "\e6f8"; } - -.mdi-communication-stay-primary-portrait:before { - content: "\e6f9"; } - -.mdi-communication-swap-calls:before { - content: "\e6fa"; } - -.mdi-communication-textsms:before { - content: "\e6fb"; } - -.mdi-communication-voicemail:before { - content: "\e6fc"; } - -.mdi-communication-vpn-key:before { - content: "\e6fd"; } - -.mdi-content-add-box:before { - content: "\e6fe"; } - -.mdi-content-add-circle-outline:before { - content: "\e6ff"; } - -.mdi-content-add-circle:before { - content: "\e700"; } - -.mdi-content-add:before { - content: "\e701"; } - -.mdi-content-archive:before { - content: "\e702"; } - -.mdi-content-backspace:before { - content: "\e703"; } - -.mdi-content-block:before { - content: "\e704"; } - -.mdi-content-clear:before { - content: "\e705"; } - -.mdi-content-content-copy:before { - content: "\e706"; } - -.mdi-content-content-cut:before { - content: "\e707"; } - -.mdi-content-content-paste:before { - content: "\e708"; } - -.mdi-content-create:before { - content: "\e709"; } - -.mdi-content-drafts:before { - content: "\e70a"; } - -.mdi-content-filter-list:before { - content: "\e70b"; } - -.mdi-content-flag:before { - content: "\e70c"; } - -.mdi-content-forward:before { - content: "\e70d"; } - -.mdi-content-gesture:before { - content: "\e70e"; } - -.mdi-content-inbox:before { - content: "\e70f"; } - -.mdi-content-link:before { - content: "\e710"; } - -.mdi-content-mail:before { - content: "\e711"; } - -.mdi-content-markunread:before { - content: "\e712"; } - -.mdi-content-redo:before { - content: "\e713"; } - -.mdi-content-remove-circle-outline:before { - content: "\e714"; } - -.mdi-content-remove-circle:before { - content: "\e715"; } - -.mdi-content-remove:before { - content: "\e716"; } - -.mdi-content-reply-all:before { - content: "\e717"; } - -.mdi-content-reply:before { - content: "\e718"; } - -.mdi-content-report:before { - content: "\e719"; } - -.mdi-content-save:before { - content: "\e71a"; } - -.mdi-content-select-all:before { - content: "\e71b"; } - -.mdi-content-send:before { - content: "\e71c"; } - -.mdi-content-sort:before { - content: "\e71d"; } - -.mdi-content-text-format:before { - content: "\e71e"; } - -.mdi-content-undo:before { - content: "\e71f"; } - -.mdi-editor-attach-file:before { - content: "\e776"; } - -.mdi-editor-attach-money:before { - content: "\e777"; } - -.mdi-editor-border-all:before { - content: "\e778"; } - -.mdi-editor-border-bottom:before { - content: "\e779"; } - -.mdi-editor-border-clear:before { - content: "\e77a"; } - -.mdi-editor-border-color:before { - content: "\e77b"; } - -.mdi-editor-border-horizontal:before { - content: "\e77c"; } - -.mdi-editor-border-inner:before { - content: "\e77d"; } - -.mdi-editor-border-left:before { - content: "\e77e"; } - -.mdi-editor-border-outer:before { - content: "\e77f"; } - -.mdi-editor-border-right:before { - content: "\e780"; } - -.mdi-editor-border-style:before { - content: "\e781"; } - -.mdi-editor-border-top:before { - content: "\e782"; } - -.mdi-editor-border-vertical:before { - content: "\e783"; } - -.mdi-editor-format-align-center:before { - content: "\e784"; } - -.mdi-editor-format-align-justify:before { - content: "\e785"; } - -.mdi-editor-format-align-left:before { - content: "\e786"; } - -.mdi-editor-format-align-right:before { - content: "\e787"; } - -.mdi-editor-format-bold:before { - content: "\e788"; } - -.mdi-editor-format-clear:before { - content: "\e789"; } - -.mdi-editor-format-color-fill:before { - content: "\e78a"; } - -.mdi-editor-format-color-reset:before { - content: "\e78b"; } - -.mdi-editor-format-color-text:before { - content: "\e78c"; } - -.mdi-editor-format-indent-decrease:before { - content: "\e78d"; } - -.mdi-editor-format-indent-increase:before { - content: "\e78e"; } - -.mdi-editor-format-italic:before { - content: "\e78f"; } - -.mdi-editor-format-line-spacing:before { - content: "\e790"; } - -.mdi-editor-format-list-bulleted:before { - content: "\e791"; } - -.mdi-editor-format-list-numbered:before { - content: "\e792"; } - -.mdi-editor-format-paint:before { - content: "\e793"; } - -.mdi-editor-format-quote:before { - content: "\e794"; } - -.mdi-editor-format-size:before { - content: "\e795"; } - -.mdi-editor-format-strikethrough:before { - content: "\e796"; } - -.mdi-editor-format-textdirection-l-to-r:before { - content: "\e797"; } - -.mdi-editor-format-textdirection-r-to-l:before { - content: "\e798"; } - -.mdi-editor-format-underline:before { - content: "\e799"; } - -.mdi-editor-functions:before { - content: "\e79a"; } - -.mdi-editor-insert-chart:before { - content: "\e79b"; } - -.mdi-editor-insert-comment:before { - content: "\e79c"; } - -.mdi-editor-insert-drive-file:before { - content: "\e79d"; } - -.mdi-editor-insert-emoticon:before { - content: "\e79e"; } - -.mdi-editor-insert-invitation:before { - content: "\e79f"; } - -.mdi-editor-insert-link:before { - content: "\e7a0"; } - -.mdi-editor-insert-photo:before { - content: "\e7a1"; } - -.mdi-editor-merge-type:before { - content: "\e7a2"; } - -.mdi-editor-mode-comment:before { - content: "\e7a3"; } - -.mdi-editor-mode-edit:before { - content: "\e7a4"; } - -.mdi-editor-publish:before { - content: "\e7a5"; } - -.mdi-editor-vertical-align-bottom:before { - content: "\e7a6"; } - -.mdi-editor-vertical-align-center:before { - content: "\e7a7"; } - -.mdi-editor-vertical-align-top:before { - content: "\e7a8"; } - -.mdi-editor-wrap-text:before { - content: "\e7a9"; } - -.mdi-file-attachment:before { - content: "\e7aa"; } - -.mdi-file-cloud-circle:before { - content: "\e7ab"; } - -.mdi-file-cloud-done:before { - content: "\e7ac"; } - -.mdi-file-cloud-download:before { - content: "\e7ad"; } - -.mdi-file-cloud-off:before { - content: "\e7ae"; } - -.mdi-file-cloud-queue:before { - content: "\e7af"; } - -.mdi-file-cloud-upload:before { - content: "\e7b0"; } - -.mdi-file-cloud:before { - content: "\e7b1"; } - -.mdi-file-file-download:before { - content: "\e7b2"; } - -.mdi-file-file-upload:before { - content: "\e7b3"; } - -.mdi-file-folder-open:before { - content: "\e7b4"; } - -.mdi-file-folder-shared:before { - content: "\e7b5"; } - -.mdi-file-folder:before { - content: "\e7b6"; } - -.mdi-device-access-alarm:before { - content: "\e720"; } - -.mdi-device-access-alarms:before { - content: "\e721"; } - -.mdi-device-access-time:before { - content: "\e722"; } - -.mdi-device-add-alarm:before { - content: "\e723"; } - -.mdi-device-airplanemode-off:before { - content: "\e724"; } - -.mdi-device-airplanemode-on:before { - content: "\e725"; } - -.mdi-device-battery-20:before { - content: "\e726"; } - -.mdi-device-battery-30:before { - content: "\e727"; } - -.mdi-device-battery-50:before { - content: "\e728"; } - -.mdi-device-battery-60:before { - content: "\e729"; } - -.mdi-device-battery-80:before { - content: "\e72a"; } - -.mdi-device-battery-90:before { - content: "\e72b"; } - -.mdi-device-battery-alert:before { - content: "\e72c"; } - -.mdi-device-battery-charging-20:before { - content: "\e72d"; } - -.mdi-device-battery-charging-30:before { - content: "\e72e"; } - -.mdi-device-battery-charging-50:before { - content: "\e72f"; } - -.mdi-device-battery-charging-60:before { - content: "\e730"; } - -.mdi-device-battery-charging-80:before { - content: "\e731"; } - -.mdi-device-battery-charging-90:before { - content: "\e732"; } - -.mdi-device-battery-charging-full:before { - content: "\e733"; } - -.mdi-device-battery-full:before { - content: "\e734"; } - -.mdi-device-battery-std:before { - content: "\e735"; } - -.mdi-device-battery-unknown:before { - content: "\e736"; } - -.mdi-device-bluetooth-connected:before { - content: "\e737"; } - -.mdi-device-bluetooth-disabled:before { - content: "\e738"; } - -.mdi-device-bluetooth-searching:before { - content: "\e739"; } - -.mdi-device-bluetooth:before { - content: "\e73a"; } - -.mdi-device-brightness-auto:before { - content: "\e73b"; } - -.mdi-device-brightness-high:before { - content: "\e73c"; } - -.mdi-device-brightness-low:before { - content: "\e73d"; } - -.mdi-device-brightness-medium:before { - content: "\e73e"; } - -.mdi-device-data-usage:before { - content: "\e73f"; } - -.mdi-device-developer-mode:before { - content: "\e740"; } - -.mdi-device-devices:before { - content: "\e741"; } - -.mdi-device-dvr:before { - content: "\e742"; } - -.mdi-device-gps-fixed:before { - content: "\e743"; } - -.mdi-device-gps-not-fixed:before { - content: "\e744"; } - -.mdi-device-gps-off:before { - content: "\e745"; } - -.mdi-device-location-disabled:before { - content: "\e746"; } - -.mdi-device-location-searching:before { - content: "\e747"; } - -.mdi-device-multitrack-audio:before { - content: "\e748"; } - -.mdi-device-network-cell:before { - content: "\e749"; } - -.mdi-device-network-wifi:before { - content: "\e74a"; } - -.mdi-device-nfc:before { - content: "\e74b"; } - -.mdi-device-now-wallpaper:before { - content: "\e74c"; } - -.mdi-device-now-widgets:before { - content: "\e74d"; } - -.mdi-device-screen-lock-landscape:before { - content: "\e74e"; } - -.mdi-device-screen-lock-portrait:before { - content: "\e74f"; } - -.mdi-device-screen-lock-rotation:before { - content: "\e750"; } - -.mdi-device-screen-rotation:before { - content: "\e751"; } - -.mdi-device-sd-storage:before { - content: "\e752"; } - -.mdi-device-settings-system-daydream:before { - content: "\e753"; } - -.mdi-device-signal-cellular-0-bar:before { - content: "\e754"; } - -.mdi-device-signal-cellular-1-bar:before { - content: "\e755"; } - -.mdi-device-signal-cellular-2-bar:before { - content: "\e756"; } - -.mdi-device-signal-cellular-3-bar:before { - content: "\e757"; } - -.mdi-device-signal-cellular-4-bar:before { - content: "\e758"; } - -.mdi-signal-wifi-statusbar-connected-no-internet-after:before { - content: "\e8f6"; } - -.mdi-device-signal-cellular-connected-no-internet-0-bar:before { - content: "\e759"; } - -.mdi-device-signal-cellular-connected-no-internet-1-bar:before { - content: "\e75a"; } - -.mdi-device-signal-cellular-connected-no-internet-2-bar:before { - content: "\e75b"; } - -.mdi-device-signal-cellular-connected-no-internet-3-bar:before { - content: "\e75c"; } - -.mdi-device-signal-cellular-connected-no-internet-4-bar:before { - content: "\e75d"; } - -.mdi-device-signal-cellular-no-sim:before { - content: "\e75e"; } - -.mdi-device-signal-cellular-null:before { - content: "\e75f"; } - -.mdi-device-signal-cellular-off:before { - content: "\e760"; } - -.mdi-device-signal-wifi-0-bar:before { - content: "\e761"; } - -.mdi-device-signal-wifi-1-bar:before { - content: "\e762"; } - -.mdi-device-signal-wifi-2-bar:before { - content: "\e763"; } - -.mdi-device-signal-wifi-3-bar:before { - content: "\e764"; } - -.mdi-device-signal-wifi-4-bar:before { - content: "\e765"; } - -.mdi-device-signal-wifi-off:before { - content: "\e766"; } - -.mdi-device-signal-wifi-statusbar-1-bar:before { - content: "\e767"; } - -.mdi-device-signal-wifi-statusbar-2-bar:before { - content: "\e768"; } - -.mdi-device-signal-wifi-statusbar-3-bar:before { - content: "\e769"; } - -.mdi-device-signal-wifi-statusbar-4-bar:before { - content: "\e76a"; } - -.mdi-device-signal-wifi-statusbar-connected-no-internet-:before { - content: "\e76b"; } - -.mdi-device-signal-wifi-statusbar-connected-no-internet:before { - content: "\e76f"; } - -.mdi-device-signal-wifi-statusbar-connected-no-internet-2:before { - content: "\e76c"; } - -.mdi-device-signal-wifi-statusbar-connected-no-internet-3:before { - content: "\e76d"; } - -.mdi-device-signal-wifi-statusbar-connected-no-internet-4:before { - content: "\e76e"; } - -.mdi-signal-wifi-statusbar-not-connected-after:before { - content: "\e8f7"; } - -.mdi-device-signal-wifi-statusbar-not-connected:before { - content: "\e770"; } - -.mdi-device-signal-wifi-statusbar-null:before { - content: "\e771"; } - -.mdi-device-storage:before { - content: "\e772"; } - -.mdi-device-usb:before { - content: "\e773"; } - -.mdi-device-wifi-lock:before { - content: "\e774"; } - -.mdi-device-wifi-tethering:before { - content: "\e775"; } - -.mdi-hardware-cast-connected:before { - content: "\e7b7"; } - -.mdi-hardware-cast:before { - content: "\e7b8"; } - -.mdi-hardware-computer:before { - content: "\e7b9"; } - -.mdi-hardware-desktop-mac:before { - content: "\e7ba"; } - -.mdi-hardware-desktop-windows:before { - content: "\e7bb"; } - -.mdi-hardware-dock:before { - content: "\e7bc"; } - -.mdi-hardware-gamepad:before { - content: "\e7bd"; } - -.mdi-hardware-headset-mic:before { - content: "\e7be"; } - -.mdi-hardware-headset:before { - content: "\e7bf"; } - -.mdi-hardware-keyboard-alt:before { - content: "\e7c0"; } - -.mdi-hardware-keyboard-arrow-down:before { - content: "\e7c1"; } - -.mdi-hardware-keyboard-arrow-left:before { - content: "\e7c2"; } - -.mdi-hardware-keyboard-arrow-right:before { - content: "\e7c3"; } - -.mdi-hardware-keyboard-arrow-up:before { - content: "\e7c4"; } - -.mdi-hardware-keyboard-backspace:before { - content: "\e7c5"; } - -.mdi-hardware-keyboard-capslock:before { - content: "\e7c6"; } - -.mdi-hardware-keyboard-control:before { - content: "\e7c7"; } - -.mdi-hardware-keyboard-hide:before { - content: "\e7c8"; } - -.mdi-hardware-keyboard-return:before { - content: "\e7c9"; } - -.mdi-hardware-keyboard-tab:before { - content: "\e7ca"; } - -.mdi-hardware-keyboard-voice:before { - content: "\e7cb"; } - -.mdi-hardware-keyboard:before { - content: "\e7cc"; } - -.mdi-hardware-laptop-chromebook:before { - content: "\e7cd"; } - -.mdi-hardware-laptop-mac:before { - content: "\e7ce"; } - -.mdi-hardware-laptop-windows:before { - content: "\e7cf"; } - -.mdi-hardware-laptop:before { - content: "\e7d0"; } - -.mdi-hardware-memory:before { - content: "\e7d1"; } - -.mdi-hardware-mouse:before { - content: "\e7d2"; } - -.mdi-hardware-phone-android:before { - content: "\e7d3"; } - -.mdi-hardware-phone-iphone:before { - content: "\e7d4"; } - -.mdi-hardware-phonelink-off:before { - content: "\e7d5"; } - -.mdi-hardware-phonelink:before { - content: "\e7d6"; } - -.mdi-hardware-security:before { - content: "\e7d7"; } - -.mdi-hardware-sim-card:before { - content: "\e7d8"; } - -.mdi-hardware-smartphone:before { - content: "\e7d9"; } - -.mdi-hardware-speaker:before { - content: "\e7da"; } - -.mdi-hardware-tablet-android:before { - content: "\e7db"; } - -.mdi-hardware-tablet-mac:before { - content: "\e7dc"; } - -.mdi-hardware-tablet:before { - content: "\e7dd"; } - -.mdi-hardware-tv:before { - content: "\e7de"; } - -.mdi-hardware-watch:before { - content: "\e7df"; } - -.mdi-image-add-to-photos:before { - content: "\e7e0"; } - -.mdi-image-adjust:before { - content: "\e7e1"; } - -.mdi-image-assistant-photo:before { - content: "\e7e2"; } - -.mdi-image-audiotrack:before { - content: "\e7e3"; } - -.mdi-image-blur-circular:before { - content: "\e7e4"; } - -.mdi-image-blur-linear:before { - content: "\e7e5"; } - -.mdi-image-blur-off:before { - content: "\e7e6"; } - -.mdi-image-blur-on:before { - content: "\e7e7"; } - -.mdi-image-brightness-1:before { - content: "\e7e8"; } - -.mdi-image-brightness-2:before { - content: "\e7e9"; } - -.mdi-image-brightness-3:before { - content: "\e7ea"; } - -.mdi-image-brightness-4:before { - content: "\e7eb"; } - -.mdi-image-brightness-5:before { - content: "\e7ec"; } - -.mdi-image-brightness-6:before { - content: "\e7ed"; } - -.mdi-image-brightness-7:before { - content: "\e7ee"; } - -.mdi-image-brush:before { - content: "\e7ef"; } - -.mdi-image-camera-alt:before { - content: "\e7f0"; } - -.mdi-image-camera-front:before { - content: "\e7f1"; } - -.mdi-image-camera-rear:before { - content: "\e7f2"; } - -.mdi-image-camera-roll:before { - content: "\e7f3"; } - -.mdi-image-camera:before { - content: "\e7f4"; } - -.mdi-image-center-focus-strong:before { - content: "\e7f5"; } - -.mdi-image-center-focus-weak:before { - content: "\e7f6"; } - -.mdi-image-collections:before { - content: "\e7f7"; } - -.mdi-image-color-lens:before { - content: "\e7f8"; } - -.mdi-image-colorize:before { - content: "\e7f9"; } - -.mdi-image-compare:before { - content: "\e7fa"; } - -.mdi-image-control-point-duplicate:before { - content: "\e7fb"; } - -.mdi-image-control-point:before { - content: "\e7fc"; } - -.mdi-image-crop-3-2:before { - content: "\e7fd"; } - -.mdi-image-crop-5-4:before { - content: "\e7fe"; } - -.mdi-image-crop-7-5:before { - content: "\e7ff"; } - -.mdi-image-crop-16-9:before { - content: "\e800"; } - -.mdi-image-crop-din:before { - content: "\e801"; } - -.mdi-image-crop-free:before { - content: "\e802"; } - -.mdi-image-crop-landscape:before { - content: "\e803"; } - -.mdi-image-crop-original:before { - content: "\e804"; } - -.mdi-image-crop-portrait:before { - content: "\e805"; } - -.mdi-image-crop-square:before { - content: "\e806"; } - -.mdi-image-crop:before { - content: "\e807"; } - -.mdi-image-dehaze:before { - content: "\e808"; } - -.mdi-image-details:before { - content: "\e809"; } - -.mdi-image-edit:before { - content: "\e80a"; } - -.mdi-image-exposure-minus-1:before { - content: "\e80b"; } - -.mdi-image-exposure-minus-2:before { - content: "\e80c"; } - -.mdi-image-exposure-plus-1:before { - content: "\e80d"; } - -.mdi-image-exposure-plus-2:before { - content: "\e80e"; } - -.mdi-image-exposure-zero:before { - content: "\e80f"; } - -.mdi-image-exposure:before { - content: "\e810"; } - -.mdi-image-filter-1:before { - content: "\e811"; } - -.mdi-image-filter-2:before { - content: "\e812"; } - -.mdi-image-filter-3:before { - content: "\e813"; } - -.mdi-image-filter-4:before { - content: "\e814"; } - -.mdi-image-filter-5:before { - content: "\e815"; } - -.mdi-image-filter-6:before { - content: "\e816"; } - -.mdi-image-filter-7:before { - content: "\e817"; } - -.mdi-image-filter-8:before { - content: "\e818"; } - -.mdi-image-filter-9-plus:before { - content: "\e819"; } - -.mdi-image-filter-9:before { - content: "\e81a"; } - -.mdi-image-filter-b-and-w:before { - content: "\e81b"; } - -.mdi-image-filter-center-focus:before { - content: "\e81c"; } - -.mdi-image-filter-drama:before { - content: "\e81d"; } - -.mdi-image-filter-frames:before { - content: "\e81e"; } - -.mdi-image-filter-hdr:before { - content: "\e81f"; } - -.mdi-image-filter-none:before { - content: "\e820"; } - -.mdi-image-filter-tilt-shift:before { - content: "\e821"; } - -.mdi-image-filter-vintage:before { - content: "\e822"; } - -.mdi-image-filter:before { - content: "\e823"; } - -.mdi-image-flare:before { - content: "\e824"; } - -.mdi-image-flash-auto:before { - content: "\e825"; } - -.mdi-image-flash-off:before { - content: "\e826"; } - -.mdi-image-flash-on:before { - content: "\e827"; } - -.mdi-image-flip:before { - content: "\e828"; } - -.mdi-image-gradient:before { - content: "\e829"; } - -.mdi-image-grain:before { - content: "\e82a"; } - -.mdi-image-grid-off:before { - content: "\e82b"; } - -.mdi-image-grid-on:before { - content: "\e82c"; } - -.mdi-image-hdr-off:before { - content: "\e82d"; } - -.mdi-image-hdr-on:before { - content: "\e82e"; } - -.mdi-image-hdr-strong:before { - content: "\e82f"; } - -.mdi-image-hdr-weak:before { - content: "\e830"; } - -.mdi-image-healing:before { - content: "\e831"; } - -.mdi-image-image-aspect-ratio:before { - content: "\e832"; } - -.mdi-image-image:before { - content: "\e833"; } - -.mdi-image-iso:before { - content: "\e834"; } - -.mdi-image-landscape:before { - content: "\e835"; } - -.mdi-image-leak-add:before { - content: "\e836"; } - -.mdi-image-leak-remove:before { - content: "\e837"; } - -.mdi-image-lens:before { - content: "\e838"; } - -.mdi-image-looks-3:before { - content: "\e839"; } - -.mdi-image-looks-4:before { - content: "\e83a"; } - -.mdi-image-looks-5:before { - content: "\e83b"; } - -.mdi-image-looks-6:before { - content: "\e83c"; } - -.mdi-image-looks-one:before { - content: "\e83d"; } - -.mdi-image-looks-two:before { - content: "\e83e"; } - -.mdi-image-looks:before { - content: "\e83f"; } - -.mdi-image-loupe:before { - content: "\e840"; } - -.mdi-image-movie-creation:before { - content: "\e841"; } - -.mdi-image-nature-people:before { - content: "\e842"; } - -.mdi-image-nature:before { - content: "\e843"; } - -.mdi-image-navigate-before:before { - content: "\e844"; } - -.mdi-image-navigate-next:before { - content: "\e845"; } - -.mdi-image-palette:before { - content: "\e846"; } - -.mdi-image-panorama-fisheye:before { - content: "\e847"; } - -.mdi-image-panorama-horizontal:before { - content: "\e848"; } - -.mdi-image-panorama-vertical:before { - content: "\e849"; } - -.mdi-image-panorama-wide-angle:before { - content: "\e84a"; } - -.mdi-image-panorama:before { - content: "\e84b"; } - -.mdi-image-photo-album:before { - content: "\e84c"; } - -.mdi-image-photo-camera:before { - content: "\e84d"; } - -.mdi-image-photo-library:before { - content: "\e84e"; } - -.mdi-image-photo:before { - content: "\e84f"; } - -.mdi-image-portrait:before { - content: "\e850"; } - -.mdi-image-remove-red-eye:before { - content: "\e851"; } - -.mdi-image-rotate-left:before { - content: "\e852"; } - -.mdi-image-rotate-right:before { - content: "\e853"; } - -.mdi-image-slideshow:before { - content: "\e854"; } - -.mdi-image-straighten:before { - content: "\e855"; } - -.mdi-image-style:before { - content: "\e856"; } - -.mdi-image-switch-camera:before { - content: "\e857"; } - -.mdi-image-switch-video:before { - content: "\e858"; } - -.mdi-image-tag-faces:before { - content: "\e859"; } - -.mdi-image-texture:before { - content: "\e85a"; } - -.mdi-image-timelapse:before { - content: "\e85b"; } - -.mdi-image-timer-3:before { - content: "\e85c"; } - -.mdi-image-timer-10:before { - content: "\e85d"; } - -.mdi-image-timer-auto:before { - content: "\e85e"; } - -.mdi-image-timer-off:before { - content: "\e85f"; } - -.mdi-image-timer:before { - content: "\e860"; } - -.mdi-image-tonality:before { - content: "\e861"; } - -.mdi-image-transform:before { - content: "\e862"; } - -.mdi-image-tune:before { - content: "\e863"; } - -.mdi-image-wb-auto:before { - content: "\e864"; } - -.mdi-image-wb-cloudy:before { - content: "\e865"; } - -.mdi-image-wb-incandescent:before { - content: "\e866"; } - -.mdi-image-wb-irradescent:before { - content: "\e867"; } - -.mdi-image-wb-sunny:before { - content: "\e868"; } - -.mdi-maps-beenhere:before { - content: "\e869"; } - -.mdi-maps-directions-bike:before { - content: "\e86a"; } - -.mdi-maps-directions-bus:before { - content: "\e86b"; } - -.mdi-maps-directions-car:before { - content: "\e86c"; } - -.mdi-maps-directions-ferry:before { - content: "\e86d"; } - -.mdi-maps-directions-subway:before { - content: "\e86e"; } - -.mdi-maps-directions-train:before { - content: "\e86f"; } - -.mdi-maps-directions-transit:before { - content: "\e870"; } - -.mdi-maps-directions-walk:before { - content: "\e871"; } - -.mdi-maps-directions:before { - content: "\e872"; } - -.mdi-maps-flight:before { - content: "\e873"; } - -.mdi-maps-hotel:before { - content: "\e874"; } - -.mdi-maps-layers-clear:before { - content: "\e875"; } - -.mdi-maps-layers:before { - content: "\e876"; } - -.mdi-maps-local-airport:before { - content: "\e877"; } - -.mdi-maps-local-atm:before { - content: "\e878"; } - -.mdi-maps-local-attraction:before { - content: "\e879"; } - -.mdi-maps-local-bar:before { - content: "\e87a"; } - -.mdi-maps-local-cafe:before { - content: "\e87b"; } - -.mdi-maps-local-car-wash:before { - content: "\e87c"; } - -.mdi-maps-local-convenience-store:before { - content: "\e87d"; } - -.mdi-maps-local-drink:before { - content: "\e87e"; } - -.mdi-maps-local-florist:before { - content: "\e87f"; } - -.mdi-maps-local-gas-station:before { - content: "\e880"; } - -.mdi-maps-local-grocery-store:before { - content: "\e881"; } - -.mdi-maps-local-hospital:before { - content: "\e882"; } - -.mdi-maps-local-hotel:before { - content: "\e883"; } - -.mdi-maps-local-laundry-service:before { - content: "\e884"; } - -.mdi-maps-local-library:before { - content: "\e885"; } - -.mdi-maps-local-mall:before { - content: "\e886"; } - -.mdi-maps-local-movies:before { - content: "\e887"; } - -.mdi-maps-local-offer:before { - content: "\e888"; } - -.mdi-maps-local-parking:before { - content: "\e889"; } - -.mdi-maps-local-pharmacy:before { - content: "\e88a"; } - -.mdi-maps-local-phone:before { - content: "\e88b"; } - -.mdi-maps-local-pizza:before { - content: "\e88c"; } - -.mdi-maps-local-play:before { - content: "\e88d"; } - -.mdi-maps-local-post-office:before { - content: "\e88e"; } - -.mdi-maps-local-print-shop:before { - content: "\e88f"; } - -.mdi-maps-local-restaurant:before { - content: "\e890"; } - -.mdi-maps-local-see:before { - content: "\e891"; } - -.mdi-maps-local-shipping:before { - content: "\e892"; } - -.mdi-maps-local-taxi:before { - content: "\e893"; } - -.mdi-maps-location-history:before { - content: "\e894"; } - -.mdi-maps-map:before { - content: "\e895"; } - -.mdi-maps-my-location:before { - content: "\e896"; } - -.mdi-maps-navigation:before { - content: "\e897"; } - -.mdi-maps-pin-drop:before { - content: "\e898"; } - -.mdi-maps-place:before { - content: "\e899"; } - -.mdi-maps-rate-review:before { - content: "\e89a"; } - -.mdi-maps-restaurant-menu:before { - content: "\e89b"; } - -.mdi-maps-satellite:before { - content: "\e89c"; } - -.mdi-maps-store-mall-directory:before { - content: "\e89d"; } - -.mdi-maps-terrain:before { - content: "\e89e"; } - -.mdi-maps-traffic:before { - content: "\e89f"; } - -.mdi-navigation-apps:before { - content: "\e8a0"; } - -.mdi-navigation-arrow-back:before { - content: "\e8a1"; } - -.mdi-navigation-arrow-drop-down-circle:before { - content: "\e8a2"; } - -.mdi-navigation-arrow-drop-down:before { - content: "\e8a3"; } - -.mdi-navigation-arrow-drop-up:before { - content: "\e8a4"; } - -.mdi-navigation-arrow-forward:before { - content: "\e8a5"; } - -.mdi-navigation-cancel:before { - content: "\e8a6"; } - -.mdi-navigation-check:before { - content: "\e8a7"; } - -.mdi-navigation-chevron-left:before { - content: "\e8a8"; } - -.mdi-navigation-chevron-right:before { - content: "\e8a9"; } - -.mdi-navigation-close:before { - content: "\e8aa"; } - -.mdi-navigation-expand-less:before { - content: "\e8ab"; } - -.mdi-navigation-expand-more:before { - content: "\e8ac"; } - -.mdi-navigation-fullscreen-exit:before { - content: "\e8ad"; } - -.mdi-navigation-fullscreen:before { - content: "\e8ae"; } - -.mdi-navigation-menu:before { - content: "\e8af"; } - -.mdi-navigation-more-horiz:before { - content: "\e8b0"; } - -.mdi-navigation-more-vert:before { - content: "\e8b1"; } - -.mdi-navigation-refresh:before { - content: "\e8b2"; } - -.mdi-navigation-unfold-less:before { - content: "\e8b3"; } - -.mdi-navigation-unfold-more:before { - content: "\e8b4"; } - -.mdi-notification-adb:before { - content: "\e8b5"; } - -.mdi-notification-bluetooth-audio:before { - content: "\e8b6"; } - -.mdi-notification-disc-full:before { - content: "\e8b7"; } - -.mdi-notification-dnd-forwardslash:before { - content: "\e8b8"; } - -.mdi-notification-do-not-disturb:before { - content: "\e8b9"; } - -.mdi-notification-drive-eta:before { - content: "\e8ba"; } - -.mdi-notification-event-available:before { - content: "\e8bb"; } - -.mdi-notification-event-busy:before { - content: "\e8bc"; } - -.mdi-notification-event-note:before { - content: "\e8bd"; } - -.mdi-notification-folder-special:before { - content: "\e8be"; } - -.mdi-notification-mms:before { - content: "\e8bf"; } - -.mdi-notification-more:before { - content: "\e8c0"; } - -.mdi-notification-network-locked:before { - content: "\e8c1"; } - -.mdi-notification-phone-bluetooth-speaker:before { - content: "\e8c2"; } - -.mdi-notification-phone-forwarded:before { - content: "\e8c3"; } - -.mdi-notification-phone-in-talk:before { - content: "\e8c4"; } - -.mdi-notification-phone-locked:before { - content: "\e8c5"; } - -.mdi-notification-phone-missed:before { - content: "\e8c6"; } - -.mdi-notification-phone-paused:before { - content: "\e8c7"; } - -.mdi-notification-play-download:before { - content: "\e8c8"; } - -.mdi-notification-play-install:before { - content: "\e8c9"; } - -.mdi-notification-sd-card:before { - content: "\e8ca"; } - -.mdi-notification-sim-card-alert:before { - content: "\e8cb"; } - -.mdi-notification-sms-failed:before { - content: "\e8cc"; } - -.mdi-notification-sms:before { - content: "\e8cd"; } - -.mdi-notification-sync-disabled:before { - content: "\e8ce"; } - -.mdi-notification-sync-problem:before { - content: "\e8cf"; } - -.mdi-notification-sync:before { - content: "\e8d0"; } - -.mdi-notification-system-update:before { - content: "\e8d1"; } - -.mdi-notification-tap-and-play:before { - content: "\e8d2"; } - -.mdi-notification-time-to-leave:before { - content: "\e8d3"; } - -.mdi-notification-vibration:before { - content: "\e8d4"; } - -.mdi-notification-voice-chat:before { - content: "\e8d5"; } - -.mdi-notification-vpn-lock:before { - content: "\e8d6"; } - -.mdi-social-cake:before { - content: "\e8d7"; } - -.mdi-social-domain:before { - content: "\e8d8"; } - -.mdi-social-group-add:before { - content: "\e8d9"; } - -.mdi-social-group:before { - content: "\e8da"; } - -.mdi-social-location-city:before { - content: "\e8db"; } - -.mdi-social-mood:before { - content: "\e8dc"; } - -.mdi-social-notifications-none:before { - content: "\e8dd"; } - -.mdi-social-notifications-off:before { - content: "\e8de"; } - -.mdi-social-notifications-on:before { - content: "\e8df"; } - -.mdi-social-notifications-paused:before { - content: "\e8e0"; } - -.mdi-social-notifications:before { - content: "\e8e1"; } - -.mdi-social-pages:before { - content: "\e8e2"; } - -.mdi-social-party-mode:before { - content: "\e8e3"; } - -.mdi-social-people-outline:before { - content: "\e8e4"; } - -.mdi-social-people:before { - content: "\e8e5"; } - -.mdi-social-person-add:before { - content: "\e8e6"; } - -.mdi-social-person-outline:before { - content: "\e8e7"; } - -.mdi-social-person:before { - content: "\e8e8"; } - -.mdi-social-plus-one:before { - content: "\e8e9"; } - -.mdi-social-poll:before { - content: "\e8ea"; } - -.mdi-social-public:before { - content: "\e8eb"; } - -.mdi-social-school:before { - content: "\e8ec"; } - -.mdi-social-share:before { - content: "\e8ed"; } - -.mdi-social-whatshot:before { - content: "\e8ee"; } - -.mdi-toggle-check-box-outline-blank:before { - content: "\e8ef"; } - -.mdi-toggle-check-box:before { - content: "\e8f0"; } - -.mdi-toggle-radio-button-off:before { - content: "\e8f1"; } - -.mdi-toggle-radio-button-on:before { - content: "\e8f2"; } - -.mdi-toggle-star-half:before { - content: "\e8f3"; } - -.mdi-toggle-star-outline:before { - content: "\e8f4"; } - -.mdi-toggle-star:before { - content: "\e8f5"; } - -.container { - margin: 0 auto; - max-width: 1280px; - width: 90%; } - -@media only screen and (min-width : 601px) { - .container { - width: 85%; } } - -@media only screen and (min-width : 993px) { - .container { - width: 70%; } } - -.container .row { - margin-left: -0.75rem; - margin-right: -0.75rem; } - -.section { - padding-top: 1rem; - padding-bottom: 1rem; } - .section.no-pad { - padding: 0; } - .section.no-pad-bot { - padding-bottom: 0; } - .section.no-pad-top { - padding-top: 0; } - -.row { - margin-left: auto; - margin-right: auto; - margin-bottom: 20px; } - .row:after { - content: ""; - display: table; - clear: both; } - .row .col { - float: left; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0 0.75rem; } - .row .col.s1 { - width: 8.33333%; - margin-left: 0; } - .row .col.s2 { - width: 16.66667%; - margin-left: 0; } - .row .col.s3 { - width: 25%; - margin-left: 0; } - .row .col.s4 { - width: 33.33333%; - margin-left: 0; } - .row .col.s5 { - width: 41.66667%; - margin-left: 0; } - .row .col.s6 { - width: 50%; - margin-left: 0; } - .row .col.s7 { - width: 58.33333%; - margin-left: 0; } - .row .col.s8 { - width: 66.66667%; - margin-left: 0; } - .row .col.s9 { - width: 75%; - margin-left: 0; } - .row .col.s10 { - width: 83.33333%; - margin-left: 0; } - .row .col.s11 { - width: 91.66667%; - margin-left: 0; } - .row .col.s12 { - width: 100%; - margin-left: 0; } - .row .col.offset-s1 { - margin-left: 8.33333%; } - .row .col.offset-s2 { - margin-left: 16.66667%; } - .row .col.offset-s3 { - margin-left: 25%; } - .row .col.offset-s4 { - margin-left: 33.33333%; } - .row .col.offset-s5 { - margin-left: 41.66667%; } - .row .col.offset-s6 { - margin-left: 50%; } - .row .col.offset-s7 { - margin-left: 58.33333%; } - .row .col.offset-s8 { - margin-left: 66.66667%; } - .row .col.offset-s9 { - margin-left: 75%; } - .row .col.offset-s10 { - margin-left: 83.33333%; } - .row .col.offset-s11 { - margin-left: 91.66667%; } - .row .col.offset-s12 { - margin-left: 100%; } - @media only screen and (min-width : 601px) { - .row .col.m1 { - width: 8.33333%; - margin-left: 0; } - .row .col.m2 { - width: 16.66667%; - margin-left: 0; } - .row .col.m3 { - width: 25%; - margin-left: 0; } - .row .col.m4 { - width: 33.33333%; - margin-left: 0; } - .row .col.m5 { - width: 41.66667%; - margin-left: 0; } - .row .col.m6 { - width: 50%; - margin-left: 0; } - .row .col.m7 { - width: 58.33333%; - margin-left: 0; } - .row .col.m8 { - width: 66.66667%; - margin-left: 0; } - .row .col.m9 { - width: 75%; - margin-left: 0; } - .row .col.m10 { - width: 83.33333%; - margin-left: 0; } - .row .col.m11 { - width: 91.66667%; - margin-left: 0; } - .row .col.m12 { - width: 100%; - margin-left: 0; } - .row .col.offset-m1 { - margin-left: 8.33333%; } - .row .col.offset-m2 { - margin-left: 16.66667%; } - .row .col.offset-m3 { - margin-left: 25%; } - .row .col.offset-m4 { - margin-left: 33.33333%; } - .row .col.offset-m5 { - margin-left: 41.66667%; } - .row .col.offset-m6 { - margin-left: 50%; } - .row .col.offset-m7 { - margin-left: 58.33333%; } - .row .col.offset-m8 { - margin-left: 66.66667%; } - .row .col.offset-m9 { - margin-left: 75%; } - .row .col.offset-m10 { - margin-left: 83.33333%; } - .row .col.offset-m11 { - margin-left: 91.66667%; } - .row .col.offset-m12 { - margin-left: 100%; } } - @media only screen and (min-width : 993px) { - .row .col.l1 { - width: 8.33333%; - margin-left: 0; } - .row .col.l2 { - width: 16.66667%; - margin-left: 0; } - .row .col.l3 { - width: 25%; - margin-left: 0; } - .row .col.l4 { - width: 33.33333%; - margin-left: 0; } - .row .col.l5 { - width: 41.66667%; - margin-left: 0; } - .row .col.l6 { - width: 50%; - margin-left: 0; } - .row .col.l7 { - width: 58.33333%; - margin-left: 0; } - .row .col.l8 { - width: 66.66667%; - margin-left: 0; } - .row .col.l9 { - width: 75%; - margin-left: 0; } - .row .col.l10 { - width: 83.33333%; - margin-left: 0; } - .row .col.l11 { - width: 91.66667%; - margin-left: 0; } - .row .col.l12 { - width: 100%; - margin-left: 0; } - .row .col.offset-l1 { - margin-left: 8.33333%; } - .row .col.offset-l2 { - margin-left: 16.66667%; } - .row .col.offset-l3 { - margin-left: 25%; } - .row .col.offset-l4 { - margin-left: 33.33333%; } - .row .col.offset-l5 { - margin-left: 41.66667%; } - .row .col.offset-l6 { - margin-left: 50%; } - .row .col.offset-l7 { - margin-left: 58.33333%; } - .row .col.offset-l8 { - margin-left: 66.66667%; } - .row .col.offset-l9 { - margin-left: 75%; } - .row .col.offset-l10 { - margin-left: 83.33333%; } - .row .col.offset-l11 { - margin-left: 91.66667%; } - .row .col.offset-l12 { - margin-left: 100%; } } - -nav { - color: #fff; - background-color: #ee6e73; - width: 100%; - height: 56px; - line-height: 56px; } - nav a { - color: #fff; } - nav .nav-wrapper { - position: relative; - height: 100%; } - nav .nav-wrapper i { - display: block; - font-size: 2rem; } - @media only screen and (min-width : 993px) { - nav a.button-collapse { - display: none; } } - nav .button-collapse { - float: left; - position: relative; - z-index: 1; - height: 56px; } - nav .button-collapse i { - font-size: 2.7rem; - height: 56px; - line-height: 56px; } - nav .brand-logo { - position: absolute; - color: #fff; - display: inline-block; - font-size: 2.1rem; - padding: 0; - white-space: nowrap; } - nav .brand-logo.center { - left: 50%; - -webkit-transform: translateX(-50%); - -moz-transform: translateX(-50%); - -ms-transform: translateX(-50%); - -o-transform: translateX(-50%); - transform: translateX(-50%); } - @media only screen and (max-width : 992px) { - nav .brand-logo { - left: 50%; - -webkit-transform: translateX(-50%); - -moz-transform: translateX(-50%); - -ms-transform: translateX(-50%); - -o-transform: translateX(-50%); - transform: translateX(-50%); } } - nav .brand-logo.right { - right: 0.5rem; - padding: 0; } - nav ul { - margin: 0; } - nav ul li { - -webkit-transition: background-color .3s; - -moz-transition: background-color .3s; - -o-transition: background-color .3s; - -ms-transition: background-color .3s; - transition: background-color .3s; - float: left; - padding: 0; } - nav ul li:hover, nav ul li.active { - background-color: rgba(0, 0, 0, 0.1); } - nav ul a { - font-size: 1rem; - color: #fff; - display: block; - padding: 0 15px; } - nav ul.left { - float: left; } - nav .input-field { - margin: 0; } - nav .input-field input { - height: 100%; - font-size: 1.2rem; - border: none; - padding-left: 2rem; } - nav .input-field input:focus, nav .input-field input[type=text]:valid, nav .input-field input[type=password]:valid, nav .input-field input[type=email]:valid, nav .input-field input[type=url]:valid, nav .input-field input[type=date]:valid { - border: none; - box-shadow: none; } - nav .input-field label { - top: 0; - left: 0; } - nav .input-field label i { - color: rgba(255, 255, 255, 0.7); - -webkit-transition: color .3s; - -moz-transition: color .3s; - -o-transition: color .3s; - -ms-transition: color .3s; - transition: color .3s; } - nav .input-field label.active i { - color: #fff; } - nav .input-field label.active { - -webkit-transform: translateY(0); - -moz-transform: translateY(0); - -ms-transform: translateY(0); - -o-transform: translateY(0); - transform: translateY(0); } - -.navbar-fixed { - position: relative; - height: 56px; - z-index: 998; } - .navbar-fixed nav { - position: fixed; } - -@media only screen and (min-width : 601px) { - nav, nav .nav-wrapper i, nav a.button-collapse, nav a.button-collapse i { - height: 64px; - line-height: 64px; } - .navbar-fixed { - height: 64px; } } - -@font-face { - font-family: "Roboto"; - src: url("../font/roboto/Roboto-Thin.woff2") format("woff2"), url("../font/roboto/Roboto-Thin.woff") format("woff"), url("../font/roboto/Roboto-Thin.ttf") format("truetype"); - font-weight: 200; } - -@font-face { - font-family: "Roboto"; - src: url("../font/roboto/Roboto-Light.woff2") format("woff2"), url("../font/roboto/Roboto-Light.woff") format("woff"), url("../font/roboto/Roboto-Light.ttf") format("truetype"); - font-weight: 300; } - -@font-face { - font-family: "Roboto"; - src: url("../font/roboto/Roboto-Regular.woff2") format("woff2"), url("../font/roboto/Roboto-Regular.woff") format("woff"), url("../font/roboto/Roboto-Regular.ttf") format("truetype"); - font-weight: 400; } - -@font-face { - font-family: "Roboto"; - src: url("../font/roboto/Roboto-Medium.woff2") format("woff2"), url("../font/roboto/Roboto-Medium.woff") format("woff"), url("../font/roboto/Roboto-Medium.ttf") format("truetype"); - font-weight: 500; } - -@font-face { - font-family: "Roboto"; - src: url("../font/roboto/Roboto-Bold.woff2") format("woff2"), url("../font/roboto/Roboto-Bold.woff") format("woff"), url("../font/roboto/Roboto-Bold.ttf") format("truetype"); - font-weight: 700; } - -a { - text-decoration: none; } - -html { - line-height: 1.5; - font-family: "Roboto", sans-serif; - font-weight: normal; - color: rgba(0, 0, 0, 0.87); } - @media only screen and (min-width: 0) { - html { - font-size: 14px; } } - @media only screen and (min-width: 992px) { - html { - font-size: 14.5px; } } - @media only screen and (min-width: 1200px) { - html { - font-size: 15px; } } - -h1, h2, h3, h4, h5, h6 { - font-weight: 400; - line-height: 1.1; } - -h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { - font-weight: inherit; } - -h1 { - font-size: 4.2rem; - line-height: 110%; - margin: 2.1rem 0 1.68rem 0; } - -h2 { - font-size: 3.56rem; - line-height: 110%; - margin: 1.78rem 0 1.424rem 0; } - -h3 { - font-size: 2.92rem; - line-height: 110%; - margin: 1.46rem 0 1.168rem 0; } - -h4 { - font-size: 2.28rem; - line-height: 110%; - margin: 1.14rem 0 0.912rem 0; } - -h5 { - font-size: 1.64rem; - line-height: 110%; - margin: 0.82rem 0 0.656rem 0; } - -h6 { - font-size: 1rem; - line-height: 110%; - margin: 0.5rem 0 0.4rem 0; } - -em { - font-style: italic; } - -strong { - font-weight: 500; } - -small { - font-size: 75%; } - -.light, footer.page-footer .footer-copyright { - font-weight: 300; } - -.thin { - font-weight: 200; } - -.flow-text { - font-weight: 300; } - @media only screen and (min-width: 360px) { - .flow-text { - font-size: 1.2rem; } } - @media only screen and (min-width: 390px) { - .flow-text { - font-size: 1.224rem; } } - @media only screen and (min-width: 420px) { - .flow-text { - font-size: 1.248rem; } } - @media only screen and (min-width: 450px) { - .flow-text { - font-size: 1.272rem; } } - @media only screen and (min-width: 480px) { - .flow-text { - font-size: 1.296rem; } } - @media only screen and (min-width: 510px) { - .flow-text { - font-size: 1.32rem; } } - @media only screen and (min-width: 540px) { - .flow-text { - font-size: 1.344rem; } } - @media only screen and (min-width: 570px) { - .flow-text { - font-size: 1.368rem; } } - @media only screen and (min-width: 600px) { - .flow-text { - font-size: 1.392rem; } } - @media only screen and (min-width: 630px) { - .flow-text { - font-size: 1.416rem; } } - @media only screen and (min-width: 660px) { - .flow-text { - font-size: 1.44rem; } } - @media only screen and (min-width: 690px) { - .flow-text { - font-size: 1.464rem; } } - @media only screen and (min-width: 720px) { - .flow-text { - font-size: 1.488rem; } } - @media only screen and (min-width: 750px) { - .flow-text { - font-size: 1.512rem; } } - @media only screen and (min-width: 780px) { - .flow-text { - font-size: 1.536rem; } } - @media only screen and (min-width: 810px) { - .flow-text { - font-size: 1.56rem; } } - @media only screen and (min-width: 840px) { - .flow-text { - font-size: 1.584rem; } } - @media only screen and (min-width: 870px) { - .flow-text { - font-size: 1.608rem; } } - @media only screen and (min-width: 900px) { - .flow-text { - font-size: 1.632rem; } } - @media only screen and (min-width: 930px) { - .flow-text { - font-size: 1.656rem; } } - @media only screen and (min-width: 960px) { - .flow-text { - font-size: 1.68rem; } } - @media only screen and (max-width: 360px) { - .flow-text { - font-size: 1.2rem; } } - -.card-panel { - transition: box-shadow .25s; - padding: 20px; - margin: 0.5rem 0 1rem 0; - border-radius: 2px; - background-color: #fff; } - -.card { - position: relative; - overflow: hidden; - margin: 0.5rem 0 1rem 0; - background-color: #fff; - transition: box-shadow .25s; - border-radius: 2px; } - .card .card-title { - color: #fff; - font-size: 24px; - font-weight: 300; } - .card .card-title.activator { - cursor: pointer; } - .card.small, .card.medium, .card.large { - position: relative; } - .card.small .card-image, .card.medium .card-image, .card.large .card-image { - overflow: hidden; } - .card.small .card-content, .card.medium .card-content, .card.large .card-content { - overflow: hidden; } - .card.small .card-action, .card.medium .card-action, .card.large .card-action { - position: absolute; - bottom: 0; - left: 0; - right: 0; } - .card.small { - height: 300px; } - .card.small .card-image { - height: 150px; } - .card.small .card-content { - height: 150px; } - .card.medium { - height: 400px; } - .card.medium .card-image { - height: 250px; } - .card.medium .card-content { - height: 150px; } - .card.large { - height: 500px; } - .card.large .card-image { - height: 330px; } - .card.large .card-content { - height: 170px; } - .card .card-image { - position: relative; } - .card .card-image img { - border-radius: 2px 2px 0 0; - position: relative; - left: 0; - right: 0; - top: 0; - bottom: 0; - width: 100%; } - .card .card-image .card-title { - position: absolute; - bottom: 0; - left: 0; - padding: 20px; } - .card .card-content { - padding: 20px; - border-radius: 0 0 2px 2px; } - .card .card-content p { - margin: 0; - color: inherit; } - .card .card-content .card-title { - line-height: 48px; } - .card .card-action { - border-top: 1px solid rgba(160, 160, 160, 0.2); - padding: 20px; } - .card .card-action a { - color: #ffab40; - margin-right: 20px; - -webkit-transition: color .3s ease; - -moz-transition: color .3s ease; - -o-transition: color .3s ease; - -ms-transition: color .3s ease; - transition: color .3s ease; - text-transform: uppercase; } - .card .card-action a:hover { - color: #ffd8a6; } - .card .card-reveal { - padding: 20px; - position: absolute; - background-color: #fff; - width: 100%; - overflow-y: auto; - top: 100%; - height: 100%; - z-index: 1; - display: none; } - .card .card-reveal .card-title { - cursor: pointer; - display: block; } - -#toast-container { - display: block; - position: fixed; - z-index: 1001; } - @media only screen and (max-width : 600px) { - #toast-container { - min-width: 100%; - bottom: 0%; } } - @media only screen and (min-width : 601px) and (max-width : 992px) { - #toast-container { - min-width: 30%; - left: 5%; - bottom: 7%; } } - @media only screen and (min-width : 993px) { - #toast-container { - min-width: 8%; - top: 10%; - right: 7%; } } - -.toast { - border-radius: 2px; - top: 0; - width: auto; - clear: both; - margin-top: 10px; - position: relative; - max-width: 100%; - height: 48px; - line-height: 48px; - background-color: #323232; - padding: 0 25px; - font-size: 1.1rem; - font-weight: 300; - color: #fff; - display: -webkit-box; - display: -moz-box; - display: -ms-flexbox; - display: -webkit-flex; - display: flex; - -webkit-flex-align: center; - -ms-flex-align: center; - -webkit-align-items: center; - align-items: center; - -webkit-justify-content: space-between; - justify-content: space-between; } - .toast .btn, .toast .btn-large, .toast .btn-flat { - margin: 0; - margin-left: 3rem; } - .toast.rounded { - border-radius: 24px; } - @media only screen and (max-width : 600px) { - .toast { - width: 100%; - border-radius: 0; } } - @media only screen and (min-width : 601px) and (max-width : 992px) { - .toast { - float: left; } } - @media only screen and (min-width : 993px) { - .toast { - float: right; } } - -.tabs { - position: relative; - height: 48px; - background-color: #fff; - margin: 0 auto; - width: 100%; - white-space: nowrap; } - .tabs .tab { - display: block; - float: left; - text-align: center; - line-height: 48px; - height: 48px; - padding: 0 20px; - margin: 0; - text-transform: uppercase; - letter-spacing: .8px; - width: 15%; } - .tabs .tab a { - color: #ee6e73; - display: block; - width: 100%; - height: 100%; - -webkit-transition: color .28s ease; - -moz-transition: color .28s ease; - -o-transition: color .28s ease; - -ms-transition: color .28s ease; - transition: color .28s ease; } - .tabs .tab a:hover { - color: #f9c9cb; } - .tabs .tab.disabled a { - color: #f9c9cb; - cursor: default; } - .tabs .indicator { - position: absolute; - bottom: 0; - height: 2px; - background-color: #f6b2b5; - will-change: left, right; } - -.tabs .tab { - padding: 0; } - -.material-tooltip { - padding: 10px 8px; - font-size: 1rem; - z-index: 2000; - background-color: transparent; - border-radius: 2px; - color: #fff; - min-height: 36px; - line-height: 1rem; - opacity: 0; - display: none; - position: absolute; - text-align: center; - overflow: hidden; - left: 0; - top: 0; - will-change: top, left; } - -.backdrop { - position: absolute; - opacity: 0; - display: none; - height: 7px; - width: 14px; - border-radius: 0 0 14px 14px; - background-color: #323232; - z-index: -1; - -webkit-transform-origin: 50% 10%; - -moz-transform-origin: 50% 10%; - -ms-transform-origin: 50% 10%; - -o-transform-origin: 50% 10%; - transform-origin: 50% 10%; - will-change: transform, opacity; } - -.btn, .btn-large, .btn-flat { - border: none; - border-radius: 2px; - display: inline-block; - height: 36px; - line-height: 36px; - outline: 0; - padding: 0 2rem; - text-transform: uppercase; - vertical-align: middle; - -webkit-tap-highlight-color: transparent; } - -.btn.disabled, .disabled.btn-large, .btn-floating.disabled, .btn-large.disabled, .btn:disabled, .btn-large:disabled, .btn-large:disabled, .btn-floating:disabled { - background-color: #DFDFDF !important; - box-shadow: none; - color: #9F9F9F !important; - cursor: default; } - .btn.disabled *, .disabled.btn-large *, .btn-floating.disabled *, .btn-large.disabled *, .btn:disabled *, .btn-large:disabled *, .btn-large:disabled *, .btn-floating:disabled * { - pointer-events: none; } - .btn.disabled:hover, .disabled.btn-large:hover, .btn-floating.disabled:hover, .btn-large.disabled:hover, .btn:disabled:hover, .btn-large:disabled:hover, .btn-large:disabled:hover, .btn-floating:disabled:hover { - background-color: #DFDFDF; - color: #9F9F9F; } - -.btn i, .btn-large i, .btn-floating i, .btn-large i, .btn-flat i { - font-size: 1.3rem; - line-height: inherit; } - -.btn, .btn-large { - text-decoration: none; - color: #fff; - background-color: #26a69a; - text-align: center; - letter-spacing: .5px; - -webkit-transition: .2s ease-out; - -moz-transition: .2s ease-out; - -o-transition: .2s ease-out; - -ms-transition: .2s ease-out; - transition: .2s ease-out; - cursor: pointer; } - .btn:hover, .btn-large:hover { - background-color: #2bbbad; } - -.btn-floating { - display: inline-block; - color: #fff; - position: relative; - overflow: hidden; - z-index: 1; - width: 37px; - height: 37px; - line-height: 37px; - padding: 0; - background-color: #26a69a; - border-radius: 50%; - transition: .3s; - cursor: pointer; - vertical-align: middle; } - .btn-floating i { - width: inherit; - display: inline-block; - text-align: center; - color: #fff; - font-size: 1.6rem; - line-height: 37px; } - .btn-floating:before { - border-radius: 0; } - .btn-floating.btn-large { - width: 55.5px; - height: 55.5px; } - .btn-floating.btn-large i { - line-height: 55.5px; } - -button.btn-floating { - border: none; } - -.fixed-action-btn { - position: fixed; - right: 23px; - bottom: 23px; - padding-top: 15px; - margin-bottom: 0; - z-index: 998; } - .fixed-action-btn ul { - left: 0; - right: 0; - text-align: center; - position: absolute; - bottom: 64px; - margin: 0; } - .fixed-action-btn ul li { - margin-bottom: 15px; } - .fixed-action-btn ul a.btn-floating { - opacity: 0; } - -.btn-flat { - box-shadow: none; - background-color: transparent; - color: #343434; - cursor: pointer; } - .btn-flat.disabled { - color: #b3b3b3; - cursor: default; } - -.btn-large { - height: 54px; - line-height: 56px; } - .btn-large i { - font-size: 1.6rem; } - -.btn-block { - display: block; } - -.dropdown-content { - background-color: #fff; - margin: 0; - display: none; - min-width: 100px; - max-height: 650px; - overflow-y: auto; - opacity: 0; - position: absolute; - z-index: 999; - will-change: width, height; } - .dropdown-content li { - clear: both; - color: rgba(0, 0, 0, 0.87); - cursor: pointer; - line-height: 1.5rem; - width: 100%; - text-align: left; - text-transform: none; } - .dropdown-content li:hover, .dropdown-content li.active { - background-color: #eee; } - .dropdown-content li > a, .dropdown-content li > span { - font-size: 1.2rem; - color: #26a69a; - display: block; - padding: 1rem 1rem; } - .dropdown-content li > a > i { - height: inherit; - line-height: inherit; } - -/*! - * Waves v0.6.0 - * http://fian.my.id/Waves - * - * Copyright 2014 Alfiana E. Sibuea and other contributors - * Released under the MIT license - * https://github.com/fians/Waves/blob/master/LICENSE - */ -.waves-effect { - position: relative; - cursor: pointer; - display: inline-block; - overflow: hidden; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-tap-highlight-color: transparent; - vertical-align: middle; - z-index: 1; - will-change: opacity, transform; - -webkit-transition: all .3s ease-out; - -moz-transition: all .3s ease-out; - -o-transition: all .3s ease-out; - -ms-transition: all .3s ease-out; - transition: all .3s ease-out; } - .waves-effect .waves-ripple { - position: absolute; - border-radius: 50%; - width: 20px; - height: 20px; - margin-top: -10px; - margin-left: -10px; - opacity: 0; - background: rgba(0, 0, 0, 0.2); - -webkit-transition: all 0.7s ease-out; - -moz-transition: all 0.7s ease-out; - -o-transition: all 0.7s ease-out; - -ms-transition: all 0.7s ease-out; - transition: all 0.7s ease-out; - -webkit-transition-property: -webkit-transform, opacity; - -moz-transition-property: -moz-transform, opacity; - -o-transition-property: -o-transform, opacity; - transition-property: transform, opacity; - -webkit-transform: scale(0); - -moz-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); - pointer-events: none; } - .waves-effect.waves-light .waves-ripple { - background-color: rgba(255, 255, 255, 0.45); } - .waves-effect.waves-red .waves-ripple { - background-color: rgba(244, 67, 54, 0.7); } - .waves-effect.waves-yellow .waves-ripple { - background-color: rgba(255, 235, 59, 0.7); } - .waves-effect.waves-orange .waves-ripple { - background-color: rgba(255, 152, 0, 0.7); } - .waves-effect.waves-purple .waves-ripple { - background-color: rgba(156, 39, 176, 0.7); } - .waves-effect.waves-green .waves-ripple { - background-color: rgba(76, 175, 80, 0.7); } - .waves-effect.waves-teal .waves-ripple { - background-color: rgba(0, 150, 136, 0.7); } - -.waves-notransition { - -webkit-transition: none !important; - -moz-transition: none !important; - -o-transition: none !important; - -ms-transition: none !important; - transition: none !important; } - -.waves-circle { - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); - -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); } - -.waves-input-wrapper { - border-radius: 0.2em; - vertical-align: bottom; } - .waves-input-wrapper .waves-button-input { - position: relative; - top: 0; - left: 0; - z-index: 1; } - -.waves-circle { - text-align: center; - width: 2.5em; - height: 2.5em; - line-height: 2.5em; - border-radius: 50%; - -webkit-mask-image: none; } - -.waves-block { - display: block; } - -/* Firefox Bug: link not triggered */ -a.waves-effect .waves-ripple { - z-index: -1; } - -.modal { - display: none; - position: fixed; - left: 0; - right: 0; - background-color: #fafafa; - padding: 0; - max-height: 70%; - width: 55%; - margin: auto; - overflow-y: auto; - border-radius: 2px; - will-change: top, opacity; } - @media only screen and (max-width : 992px) { - .modal { - width: 80%; } } - .modal h1, .modal h2, .modal h3, .modal h4 { - margin-top: 0; } - .modal .modal-content { - padding: 24px; } - .modal .modal-close { - cursor: pointer; } - .modal .modal-footer { - border-radius: 0 0 2px 2px; - background-color: #fafafa; - padding: 4px 6px; - height: 56px; - width: 100%; } - .modal .modal-footer .btn, .modal .modal-footer .btn-large, .modal .modal-footer .btn-flat { - float: right; - margin: 6px 0; } - -.lean-overlay { - position: fixed; - z-index: 999; - top: -100px; - left: 0; - bottom: 0; - right: 0; - height: 125%; - width: 100%; - background: #000; - display: none; - will-change: opacity; } - -.modal.modal-fixed-footer { - padding: 0; - height: 70%; } - .modal.modal-fixed-footer .modal-content { - position: absolute; - height: calc(100% - 56px); - max-height: 100%; - width: 100%; - overflow-y: auto; } - .modal.modal-fixed-footer .modal-footer { - border-top: 1px solid rgba(0, 0, 0, 0.1); - position: absolute; - bottom: 0; } - -.modal.bottom-sheet { - top: auto; - bottom: -100%; - margin: 0; - width: 100%; - max-height: 45%; - border-radius: 0; - will-change: bottom, opacity; } - -.collapsible { - border-top: 1px solid #ddd; - border-right: 1px solid #ddd; - border-left: 1px solid #ddd; - margin: 0.5rem 0 1rem 0; } - -.collapsible-header { - display: block; - cursor: pointer; - height: 3rem; - line-height: 3rem; - padding: 0 1rem; - background-color: #fff; - border-bottom: 1px solid #ddd; } - .collapsible-header i { - width: 2rem; - font-size: 1.6rem; - line-height: 3rem; - display: block; - float: left; - text-align: center; - margin-right: 1rem; } - -.collapsible-body { - display: none; - border-bottom: 1px solid #ddd; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; } - .collapsible-body p { - margin: 0; - padding: 2rem; } - -.side-nav .collapsible { - border: none; - box-shadow: none; } - .side-nav .collapsible li { - padding: 0; } -.side-nav .collapsible-header { - background-color: transparent; - border: none; - line-height: inherit; - height: inherit; - margin: 0 1rem; } - .side-nav .collapsible-header i { - line-height: inherit; } -.side-nav .collapsible-body { - border: 0; - background-color: #fff; } - .side-nav .collapsible-body li a { - margin: 0 1rem 0 2rem; } - -.collapsible.popout { - border: none; - box-shadow: none; } - .collapsible.popout > li { - box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); - margin: 0 24px; - transition: margin .35s cubic-bezier(0.25, 0.46, 0.45, 0.94); } - .collapsible.popout > li.active { - box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); - margin: 16px 0; } - -.materialboxed { - cursor: zoom-in; - position: relative; - -webkit-transition: opacity .4s; - -moz-transition: opacity .4s; - -o-transition: opacity .4s; - -ms-transition: opacity .4s; - transition: opacity .4s; } - .materialboxed:hover { - will-change: left, top, width, height; } - .materialboxed:hover:not(.active) { - opacity: .8; } - -.materialboxed.active { - cursor: zoom-out; } - -#materialbox-overlay { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: #292929; - z-index: 999; - will-change: opacity; } - -.materialbox-caption { - position: fixed; - display: none; - color: #fff; - line-height: 50px; - bottom: 0; - width: 100%; - text-align: center; - padding: 0% 15%; - height: 50px; - z-index: 1000; - -webkit-font-smoothing: antialiased; } - -/* Remove Focus Boxes */ -select:focus { - outline: 1px solid #c9f3ef; } - -button:focus { - outline: none; - background-color: #2ab7a9; } - -label { - font-size: 0.8rem; - color: #9e9e9e; } - -/*************************** - Text Inputs + Textarea -****************************/ -::-webkit-input-placeholder { - color: #d1d1d1; } - -:-moz-placeholder { - /* Firefox 18- */ - color: #d1d1d1; } - -::-moz-placeholder { - /* Firefox 19+ */ - color: #d1d1d1; } - -:-ms-input-placeholder { - color: #d1d1d1; } - -input[type=text], input[type=password], input[type=email], input[type=url], input[type=time], input[type=date], input[type=datetime-local], input[type=tel], input[type=number], input[type=search], textarea.materialize-textarea { - background-color: transparent; - border: none; - border-bottom: 1px solid #9e9e9e; - border-radius: 0; - outline: none; - height: 3rem; - width: 100%; - font-size: 1rem; - margin: 0 0 15px 0; - padding: 0; - box-shadow: none; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - transition: all .3s; } - input[type=text]:disabled, input[type=text][readonly="readonly"], input[type=password]:disabled, input[type=password][readonly="readonly"], input[type=email]:disabled, input[type=email][readonly="readonly"], input[type=url]:disabled, input[type=url][readonly="readonly"], input[type=time]:disabled, input[type=time][readonly="readonly"], input[type=date]:disabled, input[type=date][readonly="readonly"], input[type=datetime-local]:disabled, input[type=datetime-local][readonly="readonly"], input[type=tel]:disabled, input[type=tel][readonly="readonly"], input[type=number]:disabled, input[type=number][readonly="readonly"], input[type=search]:disabled, input[type=search][readonly="readonly"], textarea.materialize-textarea:disabled, textarea.materialize-textarea[readonly="readonly"] { - color: rgba(0, 0, 0, 0.26); - border-bottom: 1px dotted rgba(0, 0, 0, 0.26); } - input[type=text]:disabled + label, input[type=text][readonly="readonly"] + label, input[type=password]:disabled + label, input[type=password][readonly="readonly"] + label, input[type=email]:disabled + label, input[type=email][readonly="readonly"] + label, input[type=url]:disabled + label, input[type=url][readonly="readonly"] + label, input[type=time]:disabled + label, input[type=time][readonly="readonly"] + label, input[type=date]:disabled + label, input[type=date][readonly="readonly"] + label, input[type=datetime-local]:disabled + label, input[type=datetime-local][readonly="readonly"] + label, input[type=tel]:disabled + label, input[type=tel][readonly="readonly"] + label, input[type=number]:disabled + label, input[type=number][readonly="readonly"] + label, input[type=search]:disabled + label, input[type=search][readonly="readonly"] + label, textarea.materialize-textarea:disabled + label, textarea.materialize-textarea[readonly="readonly"] + label { - color: rgba(0, 0, 0, 0.26); } - input[type=text]:focus:not([readonly]), input[type=password]:focus:not([readonly]), input[type=email]:focus:not([readonly]), input[type=url]:focus:not([readonly]), input[type=time]:focus:not([readonly]), input[type=date]:focus:not([readonly]), input[type=datetime-local]:focus:not([readonly]), input[type=tel]:focus:not([readonly]), input[type=number]:focus:not([readonly]), input[type=search]:focus:not([readonly]), textarea.materialize-textarea:focus:not([readonly]) { - border-bottom: 1px solid #26a69a; - box-shadow: 0 1px 0 0 #26a69a; } - input[type=text]:focus:not([readonly]) + label, input[type=password]:focus:not([readonly]) + label, input[type=email]:focus:not([readonly]) + label, input[type=url]:focus:not([readonly]) + label, input[type=time]:focus:not([readonly]) + label, input[type=date]:focus:not([readonly]) + label, input[type=datetime-local]:focus:not([readonly]) + label, input[type=tel]:focus:not([readonly]) + label, input[type=number]:focus:not([readonly]) + label, input[type=search]:focus:not([readonly]) + label, textarea.materialize-textarea:focus:not([readonly]) + label { - color: #26a69a; } - input[type=text].valid, input[type=text]:focus.valid, input[type=password].valid, input[type=password]:focus.valid, input[type=email].valid, input[type=email]:focus.valid, input[type=url].valid, input[type=url]:focus.valid, input[type=time].valid, input[type=time]:focus.valid, input[type=date].valid, input[type=date]:focus.valid, input[type=datetime-local].valid, input[type=datetime-local]:focus.valid, input[type=tel].valid, input[type=tel]:focus.valid, input[type=number].valid, input[type=number]:focus.valid, input[type=search].valid, input[type=search]:focus.valid, textarea.materialize-textarea.valid, textarea.materialize-textarea:focus.valid { - border-bottom: 1px solid #4CAF50; - box-shadow: 0 1px 0 0 #4CAF50; } - input[type=text].valid + label:after, input[type=text]:focus.valid + label:after, input[type=password].valid + label:after, input[type=password]:focus.valid + label:after, input[type=email].valid + label:after, input[type=email]:focus.valid + label:after, input[type=url].valid + label:after, input[type=url]:focus.valid + label:after, input[type=time].valid + label:after, input[type=time]:focus.valid + label:after, input[type=date].valid + label:after, input[type=date]:focus.valid + label:after, input[type=datetime-local].valid + label:after, input[type=datetime-local]:focus.valid + label:after, input[type=tel].valid + label:after, input[type=tel]:focus.valid + label:after, input[type=number].valid + label:after, input[type=number]:focus.valid + label:after, input[type=search].valid + label:after, input[type=search]:focus.valid + label:after, textarea.materialize-textarea.valid + label:after, textarea.materialize-textarea:focus.valid + label:after { - content: attr(data-success); - color: #4CAF50; - opacity: 1; } - input[type=text].invalid, input[type=text]:focus.invalid, input[type=password].invalid, input[type=password]:focus.invalid, input[type=email].invalid, input[type=email]:focus.invalid, input[type=url].invalid, input[type=url]:focus.invalid, input[type=time].invalid, input[type=time]:focus.invalid, input[type=date].invalid, input[type=date]:focus.invalid, input[type=datetime-local].invalid, input[type=datetime-local]:focus.invalid, input[type=tel].invalid, input[type=tel]:focus.invalid, input[type=number].invalid, input[type=number]:focus.invalid, input[type=search].invalid, input[type=search]:focus.invalid, textarea.materialize-textarea.invalid, textarea.materialize-textarea:focus.invalid { - border-bottom: 1px solid #F44336; - box-shadow: 0 1px 0 0 #F44336; } - input[type=text].invalid + label:after, input[type=text]:focus.invalid + label:after, input[type=password].invalid + label:after, input[type=password]:focus.invalid + label:after, input[type=email].invalid + label:after, input[type=email]:focus.invalid + label:after, input[type=url].invalid + label:after, input[type=url]:focus.invalid + label:after, input[type=time].invalid + label:after, input[type=time]:focus.invalid + label:after, input[type=date].invalid + label:after, input[type=date]:focus.invalid + label:after, input[type=datetime-local].invalid + label:after, input[type=datetime-local]:focus.invalid + label:after, input[type=tel].invalid + label:after, input[type=tel]:focus.invalid + label:after, input[type=number].invalid + label:after, input[type=number]:focus.invalid + label:after, input[type=search].invalid + label:after, input[type=search]:focus.invalid + label:after, textarea.materialize-textarea.invalid + label:after, textarea.materialize-textarea:focus.invalid + label:after { - content: attr(data-error); - color: #F44336; - opacity: 1; } - input[type=text] + label:after, input[type=password] + label:after, input[type=email] + label:after, input[type=url] + label:after, input[type=time] + label:after, input[type=date] + label:after, input[type=datetime-local] + label:after, input[type=tel] + label:after, input[type=number] + label:after, input[type=search] + label:after, textarea.materialize-textarea + label:after { - display: block; - content: ""; - position: absolute; - top: 65px; - opacity: 0; - transition: .2s opacity ease-out, .2s color ease-out; } - -.input-field { - position: relative; - margin-top: 1rem; } - .input-field label { - color: #9e9e9e; - position: absolute; - top: 0.8rem; - left: 0.75rem; - font-size: 1rem; - cursor: text; - -webkit-transition: .2s ease-out; - -moz-transition: .2s ease-out; - -o-transition: .2s ease-out; - -ms-transition: .2s ease-out; - transition: .2s ease-out; } - .input-field label.active { - font-size: 0.8rem; - -webkit-transform: translateY(-140%); - -moz-transform: translateY(-140%); - -ms-transform: translateY(-140%); - -o-transform: translateY(-140%); - transform: translateY(-140%); } - .input-field .prefix { - position: absolute; - width: 3rem; - font-size: 2rem; - -webkit-transition: color .2s; - -moz-transition: color .2s; - -o-transition: color .2s; - -ms-transition: color .2s; - transition: color .2s; } - .input-field .prefix.active { - color: #26a69a; } - .input-field .prefix ~ input, .input-field .prefix ~ textarea { - margin-left: 3rem; - width: 92%; - width: calc(100% - 3rem); } - .input-field .prefix ~ textarea { - padding-top: .8rem; } - .input-field .prefix ~ label { - margin-left: 3rem; } - @media only screen and (max-width : 992px) { - .input-field .prefix ~ input { - width: 86%; - width: calc(100% - 3rem); } } - @media only screen and (max-width : 600px) { - .input-field .prefix ~ input { - width: 80%; - width: calc(100% - 3rem); } } - -.input-field input[type=search] { - display: block; - line-height: inherit; - padding-left: 4rem; - width: calc(100% - 4rem); } - .input-field input[type=search]:focus { - background-color: #fff; - border: 0; - box-shadow: none; - color: #444; } - .input-field input[type=search]:focus + label i, .input-field input[type=search]:focus ~ .mdi-navigation-close { - color: #444; } - .input-field input[type=search] + label { - left: 1rem; } - .input-field input[type=search] ~ .mdi-navigation-close { - position: absolute; - top: 0; - right: 1rem; - color: transparent; - cursor: pointer; - font-size: 2rem; - transition: .3s color; } - -textarea { - width: 100%; - height: 3rem; - background-color: transparent; } - textarea.materialize-textarea { - overflow-y: hidden; - /* prevents scroll bar flash */ - padding: 1.6rem 0; - /* prevents text jump on Enter keypress */ - resize: none; - min-height: 3rem; } - -.hiddendiv { - display: none; - white-space: pre-wrap; - word-wrap: break-word; - overflow-wrap: break-word; - /* future version of deprecated 'word-wrap' */ - padding-top: 1.2rem; - /* prevents text jump on Enter keypress */ } - -/*************** - Radio Buttons -***************/ -/* Remove default Radio Buttons */ -[type="radio"]:not(:checked), [type="radio"]:checked { - position: absolute; - left: -9999px; - visibility: hidden; } - -[type="radio"]:not(:checked) + label, [type="radio"]:checked + label { - position: relative; - padding-left: 35px; - cursor: pointer; - display: inline-block; - height: 25px; - line-height: 25px; - font-size: 1rem; - -webkit-transition: .28s ease; - -moz-transition: .28s ease; - -o-transition: .28s ease; - -ms-transition: .28s ease; - transition: .28s ease; - -webkit-user-select: none; - /* webkit (safari, chrome) browsers */ - -moz-user-select: none; - /* mozilla browsers */ - -khtml-user-select: none; - /* webkit (konqueror) browsers */ - -ms-user-select: none; - /* IE10+ */ } - -[type="radio"] + label:before, [type="radio"] + label:after { - content: ''; - position: absolute; - left: 0; - top: 0; - margin: 4px; - width: 16px; - height: 16px; - z-index: 0; - -webkit-transition: .28s ease; - -moz-transition: .28s ease; - -o-transition: .28s ease; - -ms-transition: .28s ease; - transition: .28s ease; } - -/* Unchecked styles */ -[type="radio"]:not(:checked) + label:before { - border-radius: 50%; - border: 2px solid #5a5a5a; } - -[type="radio"]:not(:checked) + label:after { - border-radius: 50%; - border: 2px solid #5a5a5a; - z-index: -1; - -webkit-transform: scale(0); - -moz-transform: scale(0); - -ms-transform: scale(0); - -o-transform: scale(0); - transform: scale(0); } - -/* Checked styles */ -[type="radio"]:checked + label:before { - border-radius: 50%; - border: 2px solid transparent; } - -[type="radio"]:checked + label:after { - border-radius: 50%; - border: 2px solid #26a69a; - background-color: #26a69a; - z-index: 0; - -webkit-transform: scale(1.02); - -moz-transform: scale(1.02); - -ms-transform: scale(1.02); - -o-transform: scale(1.02); - transform: scale(1.02); } - -/* Radio With gap */ -[type="radio"].with-gap:checked + label:before { - border-radius: 50%; - border: 2px solid #26a69a; } - -[type="radio"].with-gap:checked + label:after { - border-radius: 50%; - border: 2px solid #26a69a; - background-color: #26a69a; - z-index: 0; - -webkit-transform: scale(.5); - -moz-transform: scale(.5); - -ms-transform: scale(.5); - -o-transform: scale(.5); - transform: scale(.5); } - -/* Disabled Radio With gap */ -[type="radio"].with-gap:disabled:checked + label:before { - border: 2px solid rgba(0, 0, 0, 0.26); } - -[type="radio"].with-gap:disabled:checked + label:after { - border: none; - background-color: rgba(0, 0, 0, 0.26); } - -/* Disabled style */ -[type="radio"]:disabled:not(:checked) + label:before, [type="radio"]:disabled:checked + label:before { - background-color: transparent; - border-color: rgba(0, 0, 0, 0.26); } - -[type="radio"]:disabled + label { - color: rgba(0, 0, 0, 0.26); } - -[type="radio"]:disabled:not(:checked) + label:before { - border-color: rgba(0, 0, 0, 0.26); } - -[type="radio"]:disabled:checked + label:after { - background-color: rgba(0, 0, 0, 0.26); - border-color: #BDBDBD; } - -/*************** - Checkboxes -***************/ -/* CUSTOM CSS CHECKBOXES */ -form p { - margin-bottom: 10px; - text-align: left; } - -form p:last-child { - margin-bottom: 0; } - -/* Remove default checkbox */ -[type="checkbox"]:not(:checked), [type="checkbox"]:checked { - position: absolute; - left: -9999px; - visibility: hidden; } - -[type="checkbox"] { - /* checkbox aspect */ } - [type="checkbox"] + label { - position: relative; - padding-left: 35px; - cursor: pointer; - display: inline-block; - height: 25px; - line-height: 25px; - font-size: 1rem; - -webkit-user-select: none; - /* webkit (safari, chrome) browsers */ - -moz-user-select: none; - /* mozilla browsers */ - -khtml-user-select: none; - /* webkit (konqueror) browsers */ - -ms-user-select: none; - /* IE10+ */ } - [type="checkbox"] + label:before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 18px; - height: 18px; - z-index: 0; - border: 2px solid #5a5a5a; - border-radius: 1px; - margin-top: 2px; - -webkit-transition: 0.2s; - -moz-transition: 0.2s; - -o-transition: 0.2s; - -ms-transition: 0.2s; - transition: 0.2s; } - [type="checkbox"]:not(:checked):disabled + label:before { - border: none; - background-color: rgba(0, 0, 0, 0.26); } - -[type="checkbox"]:checked + label:before { - top: -4px; - left: -3px; - width: 12px; - height: 22px; - border-top: 2px solid transparent; - border-left: 2px solid transparent; - border-right: 2px solid #26a69a; - border-bottom: 2px solid #26a69a; - -webkit-transform: rotate(40deg); - -moz-transform: rotate(40deg); - -ms-transform: rotate(40deg); - -o-transform: rotate(40deg); - transform: rotate(40deg); - -webkit-backface-visibility: hidden; - -webkit-transform-origin: 100% 100%; - -moz-transform-origin: 100% 100%; - -ms-transform-origin: 100% 100%; - -o-transform-origin: 100% 100%; - transform-origin: 100% 100%; } -[type="checkbox"]:checked:disabled + label:before { - border-right: 2px solid rgba(0, 0, 0, 0.26); - border-bottom: 2px solid rgba(0, 0, 0, 0.26); } - -/* Indeterminate checkbox */ -[type="checkbox"]:indeterminate + label:before { - left: -10px; - top: -11px; - width: 10px; - height: 22px; - border-top: none; - border-left: none; - border-right: 2px solid #26a69a; - border-bottom: none; - -webkit-transform: rotate(90deg); - -moz-transform: rotate(90deg); - -ms-transform: rotate(90deg); - -o-transform: rotate(90deg); - transform: rotate(90deg); - -webkit-backface-visibility: hidden; - -webkit-transform-origin: 100% 100%; - -moz-transform-origin: 100% 100%; - -ms-transform-origin: 100% 100%; - -o-transform-origin: 100% 100%; - transform-origin: 100% 100%; } -[type="checkbox"]:indeterminate:disabled + label:before { - border-right: 2px solid rgba(0, 0, 0, 0.26); - background-color: transparent; } - -[type="checkbox"].filled-in + label:after { - border-radius: 2px; } -[type="checkbox"].filled-in + label:before, [type="checkbox"].filled-in + label:after { - content: ''; - left: 0; - position: absolute; - /* .1s delay is for check animation */ - transition: border .25s, background-color .25s, width .2s .1s, height .2s .1s, top .2s .1s, left .2s .1s; - z-index: 1; } -[type="checkbox"].filled-in:not(:checked) + label:before { - width: 0; - height: 0; - border: 3px solid transparent; - left: 6px; - top: 10px; - -webkit-transform: rotateZ(37deg); - transform: rotateZ(37deg); - -webkit-transform-origin: 20% 40%; - transform-origin: 100% 100%; } -[type="checkbox"].filled-in:not(:checked) + label:after { - height: 20px; - width: 20px; - background-color: transparent; - border: 2px solid #5a5a5a; - top: 0px; - z-index: 0; } -[type="checkbox"].filled-in:checked + label:before { - top: 0; - left: 1px; - width: 8px; - height: 13px; - border-top: 2px solid transparent; - border-left: 2px solid transparent; - border-right: 2px solid #fff; - border-bottom: 2px solid #fff; - -webkit-transform: rotateZ(37deg); - transform: rotateZ(37deg); - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; } -[type="checkbox"].filled-in:checked + label:after { - top: 0px; - width: 20px; - height: 20px; - border: 2px solid #26a69a; - background-color: #26a69a; - z-index: 0; } -[type="checkbox"].filled-in:disabled:not(:checked) + label:before { - background-color: transparent; - border: 2px solid transparent; } -[type="checkbox"].filled-in:disabled:not(:checked) + label:after { - border-color: transparent; - background-color: #BDBDBD; } -[type="checkbox"].filled-in:disabled:checked + label:before { - background-color: transparent; } -[type="checkbox"].filled-in:disabled:checked + label:after { - background-color: #BDBDBD; - border-color: #BDBDBD; } - -/*************** - Switch -***************/ -.switch, .switch * { - -webkit-user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -ms-user-select: none; } - -.switch label { - cursor: pointer; } - -.switch label input[type=checkbox] { - opacity: 0; - width: 0; - height: 0; } - -.switch label input[type=checkbox]:checked + .lever { - background-color: #84c7c1; } - -.switch label input[type=checkbox]:checked + .lever:after { - background-color: #26a69a; } - -.switch label .lever { - content: ""; - display: inline-block; - position: relative; - width: 40px; - height: 15px; - background-color: #818181; - border-radius: 15px; - margin-right: 10px; - transition: background 0.3s ease; - vertical-align: middle; - margin: 0 16px; } - -.switch label .lever:after { - content: ""; - position: absolute; - display: inline-block; - width: 21px; - height: 21px; - background-color: #F1F1F1; - border-radius: 21px; - box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4); - left: -5px; - top: -3px; - transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease; } - -input[type=checkbox]:checked:not(:disabled) ~ .lever:active:after { - box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(38, 166, 154, 0.1); } - -input[type=checkbox]:not(:disabled) ~ .lever:active:after { - box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 0, 0, 0.08); } - -.switch label input[type=checkbox]:checked + .lever:after { - left: 24px; } - -.switch input[type=checkbox][disabled] + .lever { - cursor: default; } - -.switch label input[type=checkbox][disabled] + .lever:after, .switch label input[type=checkbox][disabled]:checked + .lever:after { - background-color: #BDBDBD; } - -/*************** - Select Field -***************/ -.select-label { - position: absolute; } - -.select-wrapper { - position: relative; } - .select-wrapper input.select-dropdown { - position: relative; - cursor: pointer; - background-color: transparent; - border: none; - border-bottom: 1px solid #9e9e9e; - outline: none; - height: 3rem; - line-height: 3rem; - width: 100%; - font-size: 1rem; - margin: 0 0 15px 0; - padding: 0; - display: block; } - .select-wrapper span.caret { - color: initial; - position: absolute; - right: 0; - top: 16px; - font-size: 10px; } - .select-wrapper span.caret.disabled { - color: rgba(0, 0, 0, 0.26); } - .select-wrapper + label { - position: absolute; - top: -14px; - font-size: 0.8rem; } - -select { - display: none; } - -select.browser-default { - display: block; } - -select:disabled { - color: rgba(0, 0, 0, 0.3); } - -.select-wrapper input.select-dropdown:disabled { - color: rgba(0, 0, 0, 0.3); - cursor: default; - -webkit-user-select: none; - /* webkit (safari, chrome) browsers */ - -moz-user-select: none; - /* mozilla browsers */ - -ms-user-select: none; - /* IE10+ */ - border-bottom: 1px solid rgba(0, 0, 0, 0.3); } - -.select-wrapper i { - color: rgba(0, 0, 0, 0.3); } - -.select-dropdown li.disabled { - color: rgba(0, 0, 0, 0.3); - background-color: transparent; } - -/********************* - File Input -**********************/ -.file-field { - position: relative; } - .file-field .file-path-wrapper { - overflow: hidden; - padding-left: 10px; } - .file-field input.file-path { - width: 100%; } - .file-field .btn, .file-field .btn-large { - float: left; - height: 3rem; - line-height: 3rem; } - .file-field span { - cursor: pointer; } - .file-field input[type=file] { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - width: 100%; - margin: 0; - padding: 0; - font-size: 20px; - cursor: pointer; - opacity: 0; - filter: alpha(opacity=0); } - -/*************** - Range -***************/ -.range-field { - position: relative; } - -input[type=range], input[type=range] + .thumb { - cursor: pointer; } - -input[type=range] { - position: relative; - background-color: transparent; - border: none; - outline: none; - width: 100%; - margin: 15px 0px; - padding: 0; } - -input[type=range] + .thumb { - position: absolute; - border: none; - height: 0; - width: 0; - border-radius: 50%; - background-color: #26a69a; - top: 10px; - margin-left: -6px; - -webkit-transform-origin: 50% 50%; - -moz-transform-origin: 50% 50%; - -ms-transform-origin: 50% 50%; - -o-transform-origin: 50% 50%; - transform-origin: 50% 50%; - -webkit-transform: rotate(-45deg); - -moz-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); - -o-transform: rotate(-45deg); - transform: rotate(-45deg); } - input[type=range] + .thumb .value { - display: block; - width: 30px; - text-align: center; - color: #26a69a; - font-size: 0; - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); } - input[type=range] + .thumb.active { - border-radius: 50% 50% 50% 0; } - input[type=range] + .thumb.active .value { - color: #fff; - margin-left: -1px; - margin-top: 8px; - font-size: 10px; } - -input[type=range]:focus { - outline: none; } - -input[type=range] { - -webkit-appearance: none; } - -input[type=range]::-webkit-slider-runnable-track { - height: 3px; - background: #c2c0c2; - border: none; } - -input[type=range]::-webkit-slider-thumb { - -webkit-appearance: none; - border: none; - height: 14px; - width: 14px; - border-radius: 50%; - background-color: #26a69a; - transform-origin: 50% 50%; - margin: -5px 0 0 0; - -webkit-transition: 0.3s; - -moz-transition: 0.3s; - -o-transition: 0.3s; - -ms-transition: 0.3s; - transition: 0.3s; } - -input[type=range]:focus::-webkit-slider-runnable-track { - background: #ccc; } - -input[type=range] { - /* fix for FF unable to apply focus style bug */ - border: 1px solid white; - /*required for proper track sizing in FF*/ } - -input[type=range]::-moz-range-track { - height: 3px; - background: #ddd; - border: none; } - -input[type=range]::-moz-range-thumb { - border: none; - height: 14px; - width: 14px; - border-radius: 50%; - background: #26a69a; - margin-top: -5px; } - -/*hide the outline behind the border*/ -input[type=range]:-moz-focusring { - outline: 1px solid white; - outline-offset: -1px; } - -input[type=range]:focus::-moz-range-track { - background: #ccc; } - -input[type=range]::-ms-track { - height: 3px; - /*remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead */ - background: transparent; - /*leave room for the larger thumb to overflow with a transparent border */ - border-color: transparent; - border-width: 6px 0; - /*remove default tick marks*/ - color: transparent; } - -input[type=range]::-ms-fill-lower { - background: #777; } - -input[type=range]::-ms-fill-upper { - background: #ddd; } - -input[type=range]::-ms-thumb { - border: none; - height: 14px; - width: 14px; - border-radius: 50%; - background: #26a69a; } - -input[type=range]:focus::-ms-fill-lower { - background: #888; } - -input[type=range]:focus::-ms-fill-upper { - background: #ccc; } - -/*************************** - Text Inputs + Textarea -****************************/ -select { - background-color: rgba(255, 255, 255, 0.9); - width: 100%; - padding: 5px; - border: 1px solid #f2f2f2; - border-radius: 2px; - height: 3rem; } - -/*************** - Nav List -***************/ -.table-of-contents.fixed { - position: fixed; } -.table-of-contents li { - padding: 2px 0; } -.table-of-contents a { - display: inline-block; - font-weight: 300; - color: #757575; - padding-left: 20px; - height: 1.5rem; - line-height: 1.5rem; - letter-spacing: .4; - display: inline-block; } - .table-of-contents a:hover { - color: #a8a8a8; - padding-left: 19px; - border-left: 1px solid #ea4a4f; } - .table-of-contents a.active { - font-weight: 500; - padding-left: 18px; - border-left: 2px solid #ea4a4f; } - -.side-nav { - position: fixed; - width: 240px; - left: -105%; - top: 0; - margin: 0; - height: 100%; - height: calc(100% + 60px); - height: -moz-calc(100%); - padding-bottom: 60px; - background-color: #fff; - z-index: 999; - overflow-y: auto; - will-change: left; } - .side-nav.right-aligned { - will-change: right; - right: -105%; - left: auto; } - .side-nav .collapsible { - margin: 0; } - .side-nav li { - float: none; - padding: 0 15px; } - .side-nav li:hover, .side-nav li.active { - background-color: #ddd; } - .side-nav a { - color: #444; - display: block; - font-size: 1rem; - height: 64px; - line-height: 64px; - padding: 0 15px; } - -.drag-target { - height: 100%; - width: 10px; - position: fixed; - top: 0; - z-index: 998; } - -.side-nav.fixed a { - display: block; - padding: 0 15px; - color: #444; } - -.side-nav.fixed { - left: 0; - position: fixed; } - .side-nav.fixed.right-aligned { - right: 0; - left: auto; } - -@media only screen and (max-width : 992px) { - .side-nav.fixed { - left: -105%; } - .side-nav.fixed.right-aligned { - right: -105%; - left: auto; } } - -.side-nav .collapsible-body li.active, .side-nav.fixed .collapsible-body li.active { - background-color: #ee6e73; } - .side-nav .collapsible-body li.active a, .side-nav.fixed .collapsible-body li.active a { - color: #fff; } - -#sidenav-overlay { - position: fixed; - top: 0; - left: 0; - right: 0; - height: 120vh; - background-color: rgba(0, 0, 0, 0.5); - z-index: 997; - will-change: opacity; } - -/* - @license - Copyright (c) 2014 The Polymer Project Authors. All rights reserved. - This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt - The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt - The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt - Code distributed by Google as part of the polymer project is also - subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt - */ -/**************************/ -/* STYLES FOR THE SPINNER */ -/**************************/ -/* - * Constants: - * STROKEWIDTH = 3px - * ARCSIZE = 270 degrees (amount of circle the arc takes up) - * ARCTIME = 1333ms (time it takes to expand and contract arc) - * ARCSTARTROT = 216 degrees (how much the start location of the arc - * should rotate each time, 216 gives us a - * 5 pointed star shape (it's 360/5 * 3). - * For a 7 pointed star, we might do - * 360/7 * 3 = 154.286) - * CONTAINERWIDTH = 28px - * SHRINK_TIME = 400ms - */ -.preloader-wrapper { - display: inline-block; - position: relative; - width: 48px; - height: 48px; } - .preloader-wrapper.small { - width: 36px; - height: 36px; } - .preloader-wrapper.big { - width: 64px; - height: 64px; } - .preloader-wrapper.active { - /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */ - -webkit-animation: container-rotate 1568ms linear infinite; - animation: container-rotate 1568ms linear infinite; } - -@-webkit-keyframes container-rotate { - to { - -webkit-transform: rotate(360deg); } } - -@keyframes container-rotate { - to { - transform: rotate(360deg); } } - -.spinner-layer { - position: absolute; - width: 100%; - height: 100%; - opacity: 0; } - -.spinner-blue, .spinner-blue-only { - border-color: #4285f4; } - -.spinner-red, .spinner-red-only { - border-color: #db4437; } - -.spinner-yellow, .spinner-yellow-only { - border-color: #f4b400; } - -.spinner-green, .spinner-green-only { - border-color: #0f9d58; } - -/** - * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee): - * - * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't - * guarantee that the animation will start _exactly_ after that value. So we avoid using - * animation-delay and instead set custom keyframes for each color (as redundant as it - * seems). - * - * We write out each animation in full (instead of separating animation-name, - * animation-duration, etc.) because under the polyfill, Safari does not recognize those - * specific properties properly, treats them as -webkit-animation, and overrides the - * other animation rules. See https://github.com/Polymer/platform/issues/53. - */ -.active .spinner-layer.spinner-blue { - /* durations: 4 * ARCTIME */ - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } - -.active .spinner-layer.spinner-red { - /* durations: 4 * ARCTIME */ - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } - -.active .spinner-layer.spinner-yellow { - /* durations: 4 * ARCTIME */ - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } - -.active .spinner-layer.spinner-green { - /* durations: 4 * ARCTIME */ - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } - -.active .spinner-layer.spinner-blue-only, .active .spinner-layer.spinner-red-only, .active .spinner-layer.spinner-yellow-only, .active .spinner-layer.spinner-green-only { - /* durations: 4 * ARCTIME */ - opacity: 1; - -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } - -@-webkit-keyframes fill-unfill-rotate { - /* 0.5 * ARCSIZE */ - /* 1 * ARCSIZE */ - /* 1.5 * ARCSIZE */ - /* 2 * ARCSIZE */ - /* 2.5 * ARCSIZE */ - /* 3 * ARCSIZE */ - /* 3.5 * ARCSIZE */ - /* 4 * ARCSIZE */ - 12.5% { - -webkit-transform: rotate(135deg); } - - 25% { - -webkit-transform: rotate(270deg); } - - 37.5% { - -webkit-transform: rotate(405deg); } - - 50% { - -webkit-transform: rotate(540deg); } - - 62.5% { - -webkit-transform: rotate(675deg); } - - 75% { - -webkit-transform: rotate(810deg); } - - 87.5% { - -webkit-transform: rotate(945deg); } - - to { - -webkit-transform: rotate(1080deg); } } - -@keyframes fill-unfill-rotate { - /* 0.5 * ARCSIZE */ - /* 1 * ARCSIZE */ - /* 1.5 * ARCSIZE */ - /* 2 * ARCSIZE */ - /* 2.5 * ARCSIZE */ - /* 3 * ARCSIZE */ - /* 3.5 * ARCSIZE */ - /* 4 * ARCSIZE */ - 12.5% { - transform: rotate(135deg); } - - 25% { - transform: rotate(270deg); } - - 37.5% { - transform: rotate(405deg); } - - 50% { - transform: rotate(540deg); } - - 62.5% { - transform: rotate(675deg); } - - 75% { - transform: rotate(810deg); } - - 87.5% { - transform: rotate(945deg); } - - to { - transform: rotate(1080deg); } } - -@-webkit-keyframes blue-fade-in-out { - from { - opacity: 1; } - - 25% { - opacity: 1; } - - 26% { - opacity: 0; } - - 89% { - opacity: 0; } - - 90% { - opacity: 1; } - - 100% { - opacity: 1; } } - -@keyframes blue-fade-in-out { - from { - opacity: 1; } - - 25% { - opacity: 1; } - - 26% { - opacity: 0; } - - 89% { - opacity: 0; } - - 90% { - opacity: 1; } - - 100% { - opacity: 1; } } - -@-webkit-keyframes red-fade-in-out { - from { - opacity: 0; } - - 15% { - opacity: 0; } - - 25% { - opacity: 1; } - - 50% { - opacity: 1; } - - 51% { - opacity: 0; } } - -@keyframes red-fade-in-out { - from { - opacity: 0; } - - 15% { - opacity: 0; } - - 25% { - opacity: 1; } - - 50% { - opacity: 1; } - - 51% { - opacity: 0; } } - -@-webkit-keyframes yellow-fade-in-out { - from { - opacity: 0; } - - 40% { - opacity: 0; } - - 50% { - opacity: 1; } - - 75% { - opacity: 1; } - - 76% { - opacity: 0; } } - -@keyframes yellow-fade-in-out { - from { - opacity: 0; } - - 40% { - opacity: 0; } - - 50% { - opacity: 1; } - - 75% { - opacity: 1; } - - 76% { - opacity: 0; } } - -@-webkit-keyframes green-fade-in-out { - from { - opacity: 0; } - - 65% { - opacity: 0; } - - 75% { - opacity: 1; } - - 90% { - opacity: 1; } - - 100% { - opacity: 0; } } - -@keyframes green-fade-in-out { - from { - opacity: 0; } - - 65% { - opacity: 0; } - - 75% { - opacity: 1; } - - 90% { - opacity: 1; } - - 100% { - opacity: 0; } } - -/** - * Patch the gap that appear between the two adjacent div.circle-clipper while the - * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11). - */ -.gap-patch { - position: absolute; - top: 0; - left: 45%; - width: 10%; - height: 100%; - overflow: hidden; - border-color: inherit; } - -.gap-patch .circle { - width: 1000%; - left: -450%; } - -.circle-clipper { - display: inline-block; - position: relative; - width: 50%; - height: 100%; - overflow: hidden; - border-color: inherit; } - .circle-clipper .circle { - width: 200%; - height: 100%; - border-width: 3px; - /* STROKEWIDTH */ - border-style: solid; - border-color: inherit; - border-bottom-color: transparent !important; - border-radius: 50%; - -webkit-animation: none; - animation: none; - position: absolute; - top: 0; - right: 0; - bottom: 0; } - .circle-clipper.left .circle { - left: 0; - border-right-color: transparent !important; - -webkit-transform: rotate(129deg); - transform: rotate(129deg); } - .circle-clipper.right .circle { - left: -100%; - border-left-color: transparent !important; - -webkit-transform: rotate(-129deg); - transform: rotate(-129deg); } - -.active .circle-clipper.left .circle { - /* duration: ARCTIME */ - -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } - -.active .circle-clipper.right .circle { - /* duration: ARCTIME */ - -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; - animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } - -@-webkit-keyframes left-spin { - from { - -webkit-transform: rotate(130deg); } - - 50% { - -webkit-transform: rotate(-5deg); } - - to { - -webkit-transform: rotate(130deg); } } - -@keyframes left-spin { - from { - transform: rotate(130deg); } - - 50% { - transform: rotate(-5deg); } - - to { - transform: rotate(130deg); } } - -@-webkit-keyframes right-spin { - from { - -webkit-transform: rotate(-130deg); } - - 50% { - -webkit-transform: rotate(5deg); } - - to { - -webkit-transform: rotate(-130deg); } } - -@keyframes right-spin { - from { - transform: rotate(-130deg); } - - 50% { - transform: rotate(5deg); } - - to { - transform: rotate(-130deg); } } - -#spinnerContainer.cooldown { - /* duration: SHRINK_TIME */ - -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); - animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); } - -@-webkit-keyframes fade-out { - from { - opacity: 1; } - - to { - opacity: 0; } } - -@keyframes fade-out { - from { - opacity: 1; } - - to { - opacity: 0; } } - -.slider { - position: relative; - height: 400px; - width: 100%; } - .slider.fullscreen { - height: 100%; - width: 100%; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; } - .slider.fullscreen ul.slides { - height: 100%; } - .slider.fullscreen ul.indicators { - z-index: 2; - bottom: 30px; } - .slider .slides { - background-color: #9e9e9e; - margin: 0; - height: 400px; } - .slider .slides li { - opacity: 0; - position: absolute; - top: 0; - left: 0; - z-index: 1; - width: 100%; - height: inherit; - overflow: hidden; } - .slider .slides li img { - height: 100%; - width: 100%; - background-size: cover; - background-position: center; } - .slider .slides li .caption { - color: #fff; - position: absolute; - top: 15%; - left: 15%; - width: 70%; - opacity: 0; } - .slider .slides li .caption p { - color: #e0e0e0; } - .slider .slides li.active { - z-index: 2; } - .slider .indicators { - position: absolute; - text-align: center; - left: 0; - right: 0; - bottom: 0; - margin: 0; } - .slider .indicators .indicator-item { - display: inline-block; - position: relative; - cursor: pointer; - height: 16px; - width: 16px; - margin: 0 12px; - background-color: #e0e0e0; - -webkit-transition: background-color .3s; - -moz-transition: background-color .3s; - -o-transition: background-color .3s; - -ms-transition: background-color .3s; - transition: background-color .3s; - border-radius: 50%; } - .slider .indicators .indicator-item.active { - background-color: #4CAF50; } - -/* ========================================================================== - $BASE-PICKER - ========================================================================== */ -/** - * Note: the root picker element should *NOT* be styled more than what's here. - */ -.picker { - font-size: 16px; - text-align: left; - line-height: 1.2; - color: #000000; - position: absolute; - z-index: 10000; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; } - -/** - * The picker input element. - */ -.picker__input { - cursor: default; } - -/** - * When the picker is opened, the input element is "activated". - */ -.picker__input.picker__input--active { - border-color: #0089ec; } - -/** - * The holder is the only "scrollable" top-level container element. - */ -.picker__holder { - width: 100%; - overflow-y: auto; - -webkit-overflow-scrolling: touch; } - -/*! - * Default mobile-first, responsive styling for pickadate.js - * Demo: http://amsul.github.io/pickadate.js - */ -/** - * Note: the root picker element should *NOT* be styled more than what's here. - */ -/** - * Make the holder and frame fullscreen. - */ -.picker__holder, .picker__frame { - bottom: 0; - left: 0; - right: 0; - top: 100%; } - -/** - * The holder should overlay the entire screen. - */ -.picker__holder { - position: fixed; - -webkit-transition: background 0.15s ease-out, top 0s 0.15s; - -moz-transition: background 0.15s ease-out, top 0s 0.15s; - transition: background 0.15s ease-out, top 0s 0.15s; - -webkit-backface-visibility: hidden; } - -/** - * The frame that bounds the box contents of the picker. - */ -.picker__frame { - position: absolute; - margin: 0 auto; - min-width: 256px; - width: 300px; - max-height: 350px; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); - -moz-opacity: 0; - opacity: 0; - -webkit-transition: all 0.15s ease-out; - -moz-transition: all 0.15s ease-out; - transition: all 0.15s ease-out; } - -@media (min-height: 28.875em) { - .picker__frame { - overflow: visible; - top: auto; - bottom: -100%; - max-height: 80%; } } - -@media (min-height: 40.125em) { - .picker__frame { - margin-bottom: 7.5%; } } - -/** - * The wrapper sets the stage to vertically align the box contents. - */ -.picker__wrap { - display: table; - width: 100%; - height: 100%; } - -@media (min-height: 28.875em) { - .picker__wrap { - display: block; } } - -/** - * The box contains all the picker contents. - */ -.picker__box { - background: #ffffff; - display: table-cell; - vertical-align: middle; } - -@media (min-height: 28.875em) { - .picker__box { - display: block; - border: 1px solid #777777; - border-top-color: #898989; - border-bottom-width: 0; - -webkit-border-radius: 5px 5px 0 0; - -moz-border-radius: 5px 5px 0 0; - border-radius: 5px 5px 0 0; - -webkit-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); - -moz-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); - box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); } } - -/** - * When the picker opens... - */ -.picker--opened .picker__holder { - top: 0; - background: transparent; - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)"; - zoom: 1; - background: rgba(0, 0, 0, 0.32); - -webkit-transition: background 0.15s ease-out; - -moz-transition: background 0.15s ease-out; - transition: background 0.15s ease-out; } - -.picker--opened .picker__frame { - top: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; - filter: alpha(opacity=100); - -moz-opacity: 1; - opacity: 1; } - -@media (min-height: 35.875em) { - .picker--opened .picker__frame { - top: 10%; - bottom: 20% auto; } } - -/** - * For `large` screens, transform into an inline picker. - */ -/* ========================================================================== - CUSTOM MATERIALIZE STYLES - ========================================================================== */ -.picker__input.picker__input--active { - border-color: #E3F2FD; } - -.picker__frame { - margin: 0 auto; - max-width: 325px; } - -@media (min-height: 38.875em) { - .picker--opened .picker__frame { - top: 10%; - bottom: auto; } } - -/* ========================================================================== - $BASE-DATE-PICKER - ========================================================================== */ -/** - * The picker box. - */ -.picker__box { - padding: 0 1em; } - -/** - * The header containing the month and year stuff. - */ -.picker__header { - text-align: center; - position: relative; - margin-top: .75em; } - -/** - * The month and year labels. - */ -.picker__month, .picker__year { - display: inline-block; - margin-left: .25em; - margin-right: .25em; } - -/** - * The month and year selectors. - */ -.picker__select--month, .picker__select--year { - height: 2em; - padding: 0; - margin-left: .25em; - margin-right: .25em; } - -.picker__select--month.browser-default { - display: inline; - background-color: #FFFFFF; - width: 40%; } - -.picker__select--year.browser-default { - display: inline; - background-color: #FFFFFF; - width: 25%; } - -.picker__select--month:focus, .picker__select--year:focus { - border-color: rgba(0, 0, 0, 0.05); } - -/** - * The month navigation buttons. - */ -.picker__nav--prev, .picker__nav--next { - position: absolute; - padding: .5em 1.25em; - width: 1em; - height: 1em; - box-sizing: content-box; - top: -0.25em; } - -.picker__nav--prev { - left: -1em; - padding-right: 1.25em; } - -.picker__nav--next { - right: -1em; - padding-left: 1.25em; } - -.picker__nav--disabled, .picker__nav--disabled:hover, .picker__nav--disabled:before, .picker__nav--disabled:before:hover { - cursor: default; - background: none; - border-right-color: #f5f5f5; - border-left-color: #f5f5f5; } - -/** - * The calendar table of dates - */ -.picker__table { - text-align: center; - border-collapse: collapse; - border-spacing: 0; - table-layout: fixed; - font-size: 1rem; - width: 100%; - margin-top: .75em; - margin-bottom: .5em; } - -.picker__table th, .picker__table td { - text-align: center; } - -.picker__table td { - margin: 0; - padding: 0; } - -/** - * The weekday labels - */ -.picker__weekday { - width: 14.285714286%; - font-size: .75em; - padding-bottom: .25em; - color: #999999; - font-weight: 500; - /* Increase the spacing a tad */ } - -@media (min-height: 33.875em) { - .picker__weekday { - padding-bottom: .5em; } } - -/** - * The days on the calendar - */ -.picker__day--today { - position: relative; - color: #595959; - letter-spacing: -.3; - padding: .75rem 0; - font-weight: 400; - border: 1px solid transparent; } - -.picker__day--disabled:before { - border-top-color: #aaaaaa; } - -.picker__day--infocus:hover { - cursor: pointer; - color: #000; - font-weight: 500; } - -.picker__day--outfocus { - display: none; - padding: .75rem 0; - color: #fff; } - -.picker__day--outfocus:hover { - cursor: pointer; - color: #dddddd; - font-weight: 500; } - -.picker__day--highlighted:hover, .picker--focused .picker__day--highlighted { - cursor: pointer; } - -.picker__day--selected, .picker__day--selected:hover, .picker--focused .picker__day--selected { - border-radius: 50%; - -webkit-transform: scale(.75); - -moz-transform: scale(.75); - -ms-transform: scale(.75); - -o-transform: scale(.75); - transform: scale(.75); - background: #0089ec; - color: #ffffff; } - -.picker__day--disabled, .picker__day--disabled:hover, .picker--focused .picker__day--disabled { - background: #f5f5f5; - border-color: #f5f5f5; - color: #dddddd; - cursor: default; } - -.picker__day--highlighted.picker__day--disabled, .picker__day--highlighted.picker__day--disabled:hover { - background: #bbbbbb; } - -/** - * The footer containing the "today", "clear", and "close" buttons. - */ -.picker__footer { - text-align: center; - display: flex; - align-items: center; - justify-content: space-between; } - -.picker__button--today, .picker__button--clear, .picker__button--close { - border: 1px solid #ffffff; - background: #ffffff; - font-size: .8em; - padding: .66em 0; - font-weight: bold; - width: 33%; - display: inline-block; - vertical-align: bottom; } - -.picker__button--today:hover, .picker__button--clear:hover, .picker__button--close:hover { - cursor: pointer; - color: #000000; - background: #b1dcfb; - border-bottom-color: #b1dcfb; } - -.picker__button--today:focus, .picker__button--clear:focus, .picker__button--close:focus { - background: #b1dcfb; - border-color: rgba(0, 0, 0, 0.05); - outline: none; } - -.picker__button--today:before, .picker__button--clear:before, .picker__button--close:before { - position: relative; - display: inline-block; - height: 0; } - -.picker__button--today:before, .picker__button--clear:before { - content: " "; - margin-right: .45em; } - -.picker__button--today:before { - top: -0.05em; - width: 0; - border-top: 0.66em solid #0059bc; - border-left: .66em solid transparent; } - -.picker__button--clear:before { - top: -0.25em; - width: .66em; - border-top: 3px solid #ee2200; } - -.picker__button--close:before { - content: "\D7"; - top: -0.1em; - vertical-align: top; - font-size: 1.1em; - margin-right: .35em; - color: #777777; } - -.picker__button--today[disabled], .picker__button--today[disabled]:hover { - background: #f5f5f5; - border-color: #f5f5f5; - color: #dddddd; - cursor: default; } - -.picker__button--today[disabled]:before { - border-top-color: #aaaaaa; } - -/* ========================================================================== - CUSTOM MATERIALIZE STYLES - ========================================================================== */ -.picker__box { - border-radius: 2px; - overflow: hidden; } - -.picker__date-display { - text-align: center; - background-color: #26a69a; - color: #fff; - padding-bottom: 15px; - font-weight: 300; } - -.picker__nav--prev:hover, .picker__nav--next:hover { - cursor: pointer; - color: #000000; - background: #a1ded8; } - -.picker__weekday-display { - background-color: #1f897f; - padding: 10px; - font-weight: 200; - letter-spacing: .5; - font-size: 1rem; - margin-bottom: 15px; } - -.picker__month-display { - text-transform: uppercase; - font-size: 2rem; } - -.picker__day-display { - font-size: 4.5rem; - font-weight: 400; } - -.picker__year-display { - font-size: 1.8rem; - color: rgba(255, 255, 255, 0.4); } - -.picker__box { - padding: 0; } - -.picker__calendar-container { - padding: 0 1rem; } - .picker__calendar-container thead { - border: none; } - -.picker__table { - margin-top: 0; - margin-bottom: .5em; } - -.picker__day--infocus { - color: #595959; - letter-spacing: -.3; - padding: .75rem 0; - font-weight: 400; - border: 1px solid transparent; } - -.picker__day.picker__day--today { - color: #26a69a; } - -.picker__day.picker__day--today.picker__day--selected { - color: #fff; } - -.picker__weekday { - font-size: .9rem; } - -.picker__day--selected, .picker__day--selected:hover, .picker--focused .picker__day--selected { - border-radius: 50%; - -webkit-transform: scale(.9); - -moz-transform: scale(.9); - -ms-transform: scale(.9); - -o-transform: scale(.9); - transform: scale(.9); - background-color: #26a69a; - color: #ffffff; } - .picker__day--selected.picker__day--outfocus, .picker__day--selected:hover.picker__day--outfocus, .picker--focused .picker__day--selected.picker__day--outfocus { - background-color: #a1ded8; } - -.picker__footer { - text-align: right; - padding: 5px 10px; } - -.picker__close, .picker__today { - font-size: 1.1rem; - padding: 0 1rem; - color: #26a69a; } - -.picker__nav--prev:before, .picker__nav--next:before { - content: " "; - border-top: .5em solid transparent; - border-bottom: .5em solid transparent; - border-right: 0.75em solid #676767; - width: 0; - height: 0; - display: block; - margin: 0 auto; } - -.picker__nav--next:before { - border-right: 0; - border-left: 0.75em solid #676767; } - -button.picker__today:focus, button.picker__clear:focus, button.picker__close:focus { - background-color: #a1ded8; } - -/* ========================================================================== - $BASE-TIME-PICKER - ========================================================================== */ -/** - * The list of times. - */ -.picker__list { - list-style: none; - padding: 0.75em 0 4.2em; - margin: 0; } - -/** - * The times on the clock. - */ -.picker__list-item { - border-bottom: 1px solid #dddddd; - border-top: 1px solid #dddddd; - margin-bottom: -1px; - position: relative; - background: #ffffff; - padding: .75em 1.25em; } - -@media (min-height: 46.75em) { - .picker__list-item { - padding: .5em 1em; } } - -/* Hovered time */ -.picker__list-item:hover { - cursor: pointer; - color: #000000; - background: #b1dcfb; - border-color: #0089ec; - z-index: 10; } - -/* Highlighted and hovered/focused time */ -.picker__list-item--highlighted { - border-color: #0089ec; - z-index: 10; } - -.picker__list-item--highlighted:hover, .picker--focused .picker__list-item--highlighted { - cursor: pointer; - color: #000000; - background: #b1dcfb; } - -/* Selected and hovered/focused time */ -.picker__list-item--selected, .picker__list-item--selected:hover, .picker--focused .picker__list-item--selected { - background: #0089ec; - color: #ffffff; - z-index: 10; } - -/* Disabled time */ -.picker__list-item--disabled, .picker__list-item--disabled:hover, .picker--focused .picker__list-item--disabled { - background: #f5f5f5; - border-color: #f5f5f5; - color: #dddddd; - cursor: default; - border-color: #dddddd; - z-index: auto; } - -/** - * The clear button - */ -.picker--time .picker__button--clear { - display: block; - width: 80%; - margin: 1em auto 0; - padding: 1em 1.25em; - background: none; - border: 0; - font-weight: 500; - font-size: .67em; - text-align: center; - text-transform: uppercase; - color: #666; } - -.picker--time .picker__button--clear:hover, .picker--time .picker__button--clear:focus { - color: #000000; - background: #b1dcfb; - background: #ee2200; - border-color: #ee2200; - cursor: pointer; - color: #ffffff; - outline: none; } - -.picker--time .picker__button--clear:before { - top: -0.25em; - color: #666; - font-size: 1.25em; - font-weight: bold; } - -.picker--time .picker__button--clear:hover:before, .picker--time .picker__button--clear:focus:before { - color: #ffffff; } - -/* ========================================================================== - $DEFAULT-TIME-PICKER - ========================================================================== */ -/** - * The frame the bounds the time picker. - */ -.picker--time .picker__frame { - min-width: 256px; - max-width: 320px; } - -/** - * The picker box. - */ -.picker--time .picker__box { - font-size: 1em; - background: #f2f2f2; - padding: 0; } - -@media (min-height: 40.125em) { - .picker--time .picker__box { - margin-bottom: 5em; } } diff --git a/avances/data/av1.js b/data-source/avances/av1.js similarity index 91% rename from avances/data/av1.js rename to data-source/avances/av1.js index b913851..dd58058 100644 --- a/avances/data/av1.js +++ b/data-source/avances/av1.js @@ -11,7 +11,7 @@ const AVANCE = { instrucciones: [ { titulo: "Firma de cartas de confidencialidad", - contenido: 'Los socios formadores comparten información sensible de su organización, por lo cual debemos tratar dicha información con el cuidado y la seriedad que merece. Por ello, de manera individual hay que descargar, llenar y firmar la Carta de confidencialidad, y honrar los acuerdos que en ella se establecen.

    Sube tu carta firmada (en formato PDF) a la siguiente carpeta: Carpeta de Google Drive. Puedes escanear el documento firmado o usar una firma digital.' + contenido: 'Los socios formadores comparten información sensible de su organización, por lo cual debemos tratar dicha información con el cuidado y la seriedad que merece. Por ello, de manera individual hay que descargar, llenar y firmar la Carta de confidencialidad, y honrar los acuerdos que en ella se establecen.

    Sube tu carta firmada (en formato PDF) a la siguiente carpeta: Carpeta de Google Drive. Puedes escanear el documento firmado o usar una firma digital.' }, { contenido: "Elaboren un documento para establecer su despacho de consultoría en Construcción de software, y otro documento en el que presentarán la propuesta formal del proyecto.

    El documento del despacho debe contener al menos lo siguiente:" diff --git a/avances/data/av3.js b/data-source/avances/av3.js similarity index 100% rename from avances/data/av3.js rename to data-source/avances/av3.js diff --git a/avances/data/av4.js b/data-source/avances/av4.js similarity index 100% rename from avances/data/av4.js rename to data-source/avances/av4.js diff --git a/avances/data/av5.js b/data-source/avances/av5.js similarity index 100% rename from avances/data/av5.js rename to data-source/avances/av5.js diff --git a/avances/data/av6.js b/data-source/avances/av6.js similarity index 100% rename from avances/data/av6.js rename to data-source/avances/av6.js diff --git a/avances/data/av7.js b/data-source/avances/av7.js similarity index 100% rename from avances/data/av7.js rename to data-source/avances/av7.js diff --git a/data/calendario-grupo2.js b/data-source/calendario/calendario-grupo2.js similarity index 100% rename from data/calendario-grupo2.js rename to data-source/calendario/calendario-grupo2.js diff --git a/labs/data/lab-index.js b/data-source/labs/lab-index.js similarity index 100% rename from labs/data/lab-index.js rename to data-source/labs/lab-index.js diff --git a/labs/data/lab0.js b/data-source/labs/lab0.js similarity index 100% rename from labs/data/lab0.js rename to data-source/labs/lab0.js diff --git a/labs/data/lab1.js b/data-source/labs/lab1.js similarity index 96% rename from labs/data/lab1.js rename to data-source/labs/lab1.js index 7b63346..5526ca0 100644 --- a/labs/data/lab1.js +++ b/data-source/labs/lab1.js @@ -71,5 +71,10 @@ const LAB = { { texto: 'http://html5doctor.com/', url: 'http://html5doctor.com/', externo: true }, { texto: 'I bet you didn\'t know about these 15 HTML features.', url: 'https://medium.com/codex/i-bet-you-didnt-know-about-these-15-html-features-9b0824dba28f', externo: true } ], - entrega: 'Una vez que termines, registra la actividad en tu plan de aprendizaje. Guarda tu trabajo en tu computadora personal. En el laboratorio 2 se dar\u00e1n las instrucciones para la entrega de este laboratorio y de todos los siguientes.' + entrega: 'Una vez que termines, registra la actividad en tu plan de aprendizaje. Guarda tu trabajo en tu computadora personal. En el laboratorio 2 se dar\u00e1n las instrucciones para la entrega de este laboratorio y de todos los siguientes.', + practica: { + titulo: "Pr\u00e1ctica: Intro a Desarrollo Web con HTML", + enlace: "/docs/docs/backend/node/tutorials/intro_web/Lab1HTML/", + descripcion: "Consulta la gu\u00eda pr\u00e1ctica completa en el Docusaurus del curso" + } }; diff --git a/labs/data/lab10.js b/data-source/labs/lab10.js similarity index 86% rename from labs/data/lab10.js rename to data-source/labs/lab10.js index 5f4c2b8..bbede64 100644 --- a/labs/data/lab10.js +++ b/data-source/labs/lab10.js @@ -17,7 +17,7 @@ const LAB = { '
      ' + '
    1. ' + '
      ' + - 'Diagrama de secuencia de una interaccion con distintos metodos de HTTP' + + 'Diagrama de secuencia de una interaccion con distintos metodos de HTTP' + '
      ' + '
    2. ' + '
    3. Sigue la demostracion del profesor en la sesion de clase.
    4. ' + @@ -35,5 +35,10 @@ const LAB = { { texto: 'How to Create and Validate Modern Web Forms with HTML5', url: 'https://www.freecodecamp.org/news/create-and-validate-modern-web-forms-html5/', externo: true }, { texto: 'Text fields in UI Design: 7 Common Styles', url: 'https://uxplanet.org/text-fields-in-ui-design-7-common-styles-ea5a76689892', externo: true } ], - entrega: 'A traves de tu repositorio personal.' + entrega: 'A traves de tu repositorio personal.', + practica: { + titulo: "Pr\u00e1ctica: Rutas y Formas", + enlace: "/docs/docs/backend/node/tutorials/intro_web/Lab10RutasYFormas/", + descripcion: "Consulta la gu\u00eda pr\u00e1ctica completa en el Docusaurus del curso" + } }; diff --git a/labs/data/lab11.js b/data-source/labs/lab11.js similarity index 95% rename from labs/data/lab11.js rename to data-source/labs/lab11.js index 7b7e884..339ba12 100644 --- a/labs/data/lab11.js +++ b/data-source/labs/lab11.js @@ -103,5 +103,10 @@ const LAB = { { texto: 'body-parser', url: 'https://www.npmjs.com/package/body-parser', externo: true }, { texto: 'JavaScript Modules – A Beginner\'s Guide', url: 'https://www.freecodecamp.org/news/javascript-modules-beginners-guide/', externo: true } ], - entrega: 'A traves de tu repositorio personal.' + entrega: 'A traves de tu repositorio personal.', + practica: { + titulo: "Pr\u00e1ctica: Express", + enlace: "/docs/docs/backend/node/tutorials/intro_web/Lab11Express/", + descripcion: "Consulta la gu\u00eda pr\u00e1ctica completa en el Docusaurus del curso" + } }; diff --git a/labs/data/lab12.js b/data-source/labs/lab12.js similarity index 96% rename from labs/data/lab12.js rename to data-source/labs/lab12.js index 7c9912d..f46e691 100644 --- a/labs/data/lab12.js +++ b/data-source/labs/lab12.js @@ -93,5 +93,10 @@ const LAB = { { texto: 'EJS', url: 'https://ejs.co/', externo: true }, { texto: 'Cross-site Scripting (XSS)', url: 'https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)', externo: true } ], - entrega: 'A trav\u00e9s de tu repositorio personal.' + entrega: 'A trav\u00e9s de tu repositorio personal.', + practica: { + titulo: "Pr\u00e1ctica: EJS", + enlace: "/docs/docs/backend/node/tutorials/intro_web/Lab12EJS/", + descripcion: "Consulta la gu\u00eda pr\u00e1ctica completa en el Docusaurus del curso" + } }; diff --git a/labs/data/lab13.js b/data-source/labs/lab13.js similarity index 95% rename from labs/data/lab13.js rename to data-source/labs/lab13.js index 6ba8dd6..f99127c 100644 --- a/labs/data/lab13.js +++ b/data-source/labs/lab13.js @@ -83,5 +83,10 @@ const LAB = { { texto: 'The 20 Essential Principles of Software Development: LoD, SoC, SOLID, and Beyond.', url: 'https://levelup.gitconnected.com/the-20-essential-principles-of-software-development-lod-soc-solid-and-beyond-7a39a98b685d', externo: true }, { texto: 'Understanding the SOLID Principles', url: 'https://blog.stackademic.com/understanding-the-solid-principles-85c625cc27fc', externo: true } ], - entrega: 'A trav\u00e9s de tu repositorio personal.' + entrega: 'A trav\u00e9s de tu repositorio personal.', + practica: { + titulo: "Pr\u00e1ctica: MVC", + enlace: "/docs/docs/backend/node/tutorials/intro_web/LAB13MVC/", + descripcion: "Consulta la gu\u00eda pr\u00e1ctica completa en el Docusaurus del curso" + } }; diff --git a/labs/data/lab14.js b/data-source/labs/lab14.js similarity index 95% rename from labs/data/lab14.js rename to data-source/labs/lab14.js index b2daf62..6972e8c 100644 --- a/labs/data/lab14.js +++ b/data-source/labs/lab14.js @@ -81,5 +81,10 @@ const LAB = { { texto: 'express-session', url: 'https://www.npmjs.com/package/express-session', externo: true }, { texto: 'connect-flash', url: 'https://www.npmjs.com/package/connect-flash', externo: true } ], - entrega: 'A trav\u00e9s de tu repositorio personal.' + entrega: 'A trav\u00e9s de tu repositorio personal.', + practica: { + titulo: "Pr\u00e1ctica: Sesiones", + enlace: "/docs/docs/backend/node/tutorials/intro_web/LAB14Sesiones/", + descripcion: "Consulta la gu\u00eda pr\u00e1ctica completa en el Docusaurus del curso" + } }; diff --git a/labs/data/lab15.js b/data-source/labs/lab15.js similarity index 92% rename from labs/data/lab15.js rename to data-source/labs/lab15.js index 15c47a5..19b2bee 100644 --- a/labs/data/lab15.js +++ b/data-source/labs/lab15.js @@ -22,7 +22,7 @@ const LAB = { '
    5. Creaci\u00f3n de las tablas de una base de datos en SQL

      ' + 'En esta practica crearemos las tablas que nos servir\u00e1n para llevar a cabo las pr\u00e1cticas de laboratorio subsecuentes.

      ' + 'Se tiene el siguiente modelo entidad-relaci\u00f3n:

      ' + - '


      ' + + '


      ' + 'IMPORTANTE: La fecha y la cantidad son atributos de la relaci\u00f3n Entregan, adicionalmente la fecha debe formar parte de la llave de la tabla que represente a la relaci\u00f3n Entregan ya que un proveedor puede hacer m\u00e1s de una entrega de un mismo material a un mismo proyecto, pero con fecha distinta. Esto es equivalente a tener una "entidad virtual" que es el tiempo, cuya llave es la fecha en la que ocurre la entrega. Dicho de otra forma, el atributo Fecha nos est\u00e1 sirviendo para asegurarnos que cada relaci\u00f3n en la tabla Entregan ser\u00e1 \u00fanica.

      ' + 'A partir de dicho modelo, el esquema relacional que se deriva es el siguiente:' + '
      ' + @@ -34,8 +34,8 @@ const LAB = { '
    6. ' + '
    ', recursos: [ - { texto: 'Script de creaci\u00f3n de tablas y carga de datos', url: '../documentos/bd_laboratorio6_crearTablas_cargarTablas.sql', externo: true }, - { texto: 'Script de carga de datos', url: '../documentos/bd_laboratorio6 _cargarTablas.sql', externo: true } + { texto: 'Script de creaci\u00f3n de tablas y carga de datos', url: '/documentos/bd_laboratorio6_crearTablas_cargarTablas.sql', externo: true }, + { texto: 'Script de carga de datos', url: '/documentos/bd_laboratorio6 _cargarTablas.sql', externo: true } ], entrega: 'Presta atenci\u00f3n a la sesi\u00f3n de clase en el uso de la herramienta, ya que se dar\u00e1n las instrucciones a detalle de la actividad. Esta actividad es de car\u00e1cter individual y se espera que al final de la misma, tengas la base de datos creada con las tablas creadas.' }; diff --git a/labs/data/lab17.js b/data-source/labs/lab17.js similarity index 97% rename from labs/data/lab17.js rename to data-source/labs/lab17.js index 253ef9e..285be8b 100644 --- a/labs/data/lab17.js +++ b/data-source/labs/lab17.js @@ -120,5 +120,10 @@ const LAB = { { texto: 'CRUD Operations \u2013 What is CRUD?', url: 'https://www.freecodecamp.org/news/crud-operations-explained/', externo: true }, { texto: 'uuid: M\u00f3dulo para crear id\'s \u00fanicos', url: 'https://www.npmjs.com/package/uuid', externo: true } ], - entrega: 'A trav\u00e9s de tu repositorio personal (Bitbucket o GitHub).' + entrega: 'A trav\u00e9s de tu repositorio personal (Bitbucket o GitHub).', + practica: { + titulo: "Pr\u00e1ctica: Interacci\u00f3n con Base de Datos", + enlace: "/docs/docs/backend/node/tutorials/intro_web/Lab17BD/", + descripcion: "Consulta la gu\u00eda pr\u00e1ctica completa en el Docusaurus del curso" + } }; diff --git a/labs/data/lab18.js b/data-source/labs/lab18.js similarity index 96% rename from labs/data/lab18.js rename to data-source/labs/lab18.js index 7ca15a1..709420e 100644 --- a/labs/data/lab18.js +++ b/data-source/labs/lab18.js @@ -112,5 +112,10 @@ const LAB = { { texto: 'csurf', url: 'https://www.npmjs.com/package/csurf', externo: true }, { texto: 'Double CSRF', url: 'https://www.npmjs.com/package/csrf-csrf', externo: true } ], - entrega: 'A trav\u00e9s de tu repositorio personal (Bitbucket o GitHub).' + entrega: 'A trav\u00e9s de tu repositorio personal (Bitbucket o GitHub).', + practica: { + titulo: "Pr\u00e1ctica: Autenticaci\u00f3n", + enlace: "/docs/docs/backend/node/tutorials/intro_web/Lab18Autenticacion/", + descripcion: "Consulta la gu\u00eda pr\u00e1ctica completa en el Docusaurus del curso" + } }; diff --git a/labs/data/lab19.js b/data-source/labs/lab19.js similarity index 93% rename from labs/data/lab19.js rename to data-source/labs/lab19.js index 9d074a6..de2cb7d 100644 --- a/labs/data/lab19.js +++ b/data-source/labs/lab19.js @@ -39,5 +39,10 @@ const LAB = { { texto: 'Lectura: Consultas en SQL usando roles y Sub-consultas.', url: 'lectura6_sql_roles/lectura_sql_roles.html', externo: false }, { texto: 'RBAC NIST Standard.', url: 'https://csrc.nist.gov/Projects/Role-Based-Access-Control', externo: true } ], - entrega: 'A trav\u00e9s de Bitbucket o GitHub (Repositorio de Equipo).' + entrega: 'A trav\u00e9s de Bitbucket o GitHub (Repositorio de Equipo).', + practica: { + titulo: "Pr\u00e1ctica: RBAC", + enlace: "/docs/docs/backend/node/tutorials/intro_web/Lab19RBAC/", + descripcion: "Consulta la gu\u00eda pr\u00e1ctica completa en el Docusaurus del curso" + } }; diff --git a/labs/data/lab2.js b/data-source/labs/lab2.js similarity index 93% rename from labs/data/lab2.js rename to data-source/labs/lab2.js index 7bf2e1e..ba44a90 100644 --- a/labs/data/lab2.js +++ b/data-source/labs/lab2.js @@ -28,5 +28,10 @@ const LAB = { { texto: '10 Important Git Commands that Every Developer Should Know', url: 'https://www.freecodecamp.org/news/10-important-git-commands-that-every-developer-should-know/', externo: true }, { texto: 'The beginner\'s guide to Git & GitHub', url: 'https://www.freecodecamp.org/news/the-beginners-guide-to-git-github/', externo: true } ], - entrega: 'En tu malla de evaluaci\u00f3n individual en la secci\u00f3n correspondiente' + entrega: 'En tu malla de evaluaci\u00f3n individual en la secci\u00f3n correspondiente', + practica: { + titulo: "Pr\u00e1ctica: Git", + enlace: "/docs/docs/backend/node/tutorials/intro_web/Lab2Git/", + descripcion: "Consulta la gu\u00eda pr\u00e1ctica completa en el Docusaurus del curso" + } }; diff --git a/labs/data/lab20.js b/data-source/labs/lab20.js similarity index 100% rename from labs/data/lab20.js rename to data-source/labs/lab20.js diff --git a/labs/data/lab21.js b/data-source/labs/lab21.js similarity index 100% rename from labs/data/lab21.js rename to data-source/labs/lab21.js diff --git a/labs/data/lab22.js b/data-source/labs/lab22.js similarity index 95% rename from labs/data/lab22.js rename to data-source/labs/lab22.js index 3cbddda..a773636 100644 --- a/labs/data/lab22.js +++ b/data-source/labs/lab22.js @@ -83,5 +83,10 @@ const LAB = { { texto: 'The Express + Node.js Handbook', url: 'https://www.freecodecamp.org/news/the-express-handbook/', externo: true }, { texto: 'i18n', url: 'https://www.npmjs.com/package/i18n', externo: true } ], - entrega: 'A trav\u00e9s de tu repositorio personal (Bitbucket o GitHub).' + entrega: 'A trav\u00e9s de tu repositorio personal (Bitbucket o GitHub).', + practica: { + titulo: "Pr\u00e1ctica: Archivos", + enlace: "/docs/docs/backend/node/tutorials/intro_web/Lab22Archivos/", + descripcion: "Consulta la gu\u00eda pr\u00e1ctica completa en el Docusaurus del curso" + } }; diff --git a/labs/data/lab23.js b/data-source/labs/lab23.js similarity index 100% rename from labs/data/lab23.js rename to data-source/labs/lab23.js diff --git a/labs/data/lab24.js b/data-source/labs/lab24.js similarity index 96% rename from labs/data/lab24.js rename to data-source/labs/lab24.js index e442a5c..305f34e 100644 --- a/labs/data/lab24.js +++ b/data-source/labs/lab24.js @@ -84,5 +84,10 @@ const LAB = { { texto: 'A Story of JSON', url: 'https://automationstepbystep.com/2020/05/04/a-story-of-json/', externo: true }, { texto: 'JSON', url: 'https://www.json.org', externo: true } ], - entrega: 'A traves de tu repositorio personal (Bitbucket o GitHub)' + entrega: 'A traves de tu repositorio personal (Bitbucket o GitHub)', + practica: { + titulo: "Pr\u00e1ctica: AJAX", + enlace: "/docs/docs/backend/node/tutorials/intro_web/Lab24AJAX/", + descripcion: "Consulta la gu\u00eda pr\u00e1ctica completa en el Docusaurus del curso" + } }; diff --git a/labs/data/lab25.js b/data-source/labs/lab25.js similarity index 100% rename from labs/data/lab25.js rename to data-source/labs/lab25.js diff --git a/labs/data/lab26.js b/data-source/labs/lab26.js similarity index 100% rename from labs/data/lab26.js rename to data-source/labs/lab26.js diff --git a/labs/data/lab27.js b/data-source/labs/lab27.js similarity index 100% rename from labs/data/lab27.js rename to data-source/labs/lab27.js diff --git a/labs/data/lab28.js b/data-source/labs/lab28.js similarity index 100% rename from labs/data/lab28.js rename to data-source/labs/lab28.js diff --git a/labs/data/lab3.js b/data-source/labs/lab3.js similarity index 92% rename from labs/data/lab3.js rename to data-source/labs/lab3.js index 8aa6e69..57cb250 100644 --- a/labs/data/lab3.js +++ b/data-source/labs/lab3.js @@ -15,7 +15,7 @@ const LAB = { ], instruccionesHtml: '
      ' + - '
    1. Revisa la presentaci\u00f3n CSS.
    2. ' + + '
    3. Revisa la presentaci\u00f3n CSS.
    4. ' + '
    5. Crea un CSS externo y agr\u00e9galo al documento(s) que elaboraste en el laboratorio de html para agregarle una buena presentaci\u00f3n a tu sitio.
    6. ' + '
    7. El CSS debe contener al menos un estilo definido con cada uno de los selectores y el estilo debe ser aplicado al documento. Puedes utilizar como gu\u00eda o ayudarte de algunos de los sitios web que se enlistan en la secci\u00f3n de Recursos, o en alg\u00fan otro sitio.' + '