Sig:
Índice de Figuras
Sup:
Apuntes de la Asignatura
Ant:
Authentication using the Google
Ind:
Índice General
Índice de Figuras
Índice de Tablas
PARTE: APUNTES DE PROCESADORES DE LENGUAJES
Expresiones Regulares y Análisis Léxico en JavaScript
Mozilla Developer Network: Documentación
Práctica: Conversor de Temperaturas
Práctica: Comma Separated Values. CSV
Comentarios y Consejos
Ejercicios
Práctica: Palabras Repetidas
Ejercicios
Ejercicios
Práctica: Ficheros INI
Práctica: Analizador Léxico para Un Subconjunto de JavaScript
Analizadores Descendentes Predictivos en JavaScript
Conceptos Básicos para el Análisis Sintáctico
Ejercicio
Análisis Sintáctico Predictivo Recursivo
Introducción
Ejercicio: Recorrido del árbol en un ADPR
Recursión por la Izquierda
Esquemas de Traducción
Eliminación de la Recursión por la Izquierda en un Esquema de Traducción
Práctica: Analizador Descendente Predictivo Recursivo
Análisis Sintáctico Mediante Precedencia de Operadores en JavaScript
Ejemplo Simple de Intérprete: Una Calculadora
Análisis Top Down Usando Precedencia de Operadores
Gramática de JavaScript
Análisis Descendente mediante Parsing Expresion Grammars en JavaScript
Introducción a los PEGs
Syntax
Semantics
Implementing parsers from parsing expression grammars
Lexical Analysis
Left recursion
Referencias y Documentación
PEGJS
Un Ejemplo Sencillo
Asociación Incorrecta para la Resta y la División
Acciones Intermedias
PegJS en los Browser
Eliminación de la Recursividad por la Izquierda en PEGs
Eliminando la Recursividad por la Izquierda en la Calculadora
Eliminación de la Recursividad por la Izquierda y Atributos Heredados
Eliminación de la Recursión por la Izquierda en la Gramática
Eliminación de la Recursión por la Izquierda en un Esquema de Traducción
Eliminación de la Recursividad por la Izquierda en PEGJS
Dangling else: Asociando un else con su if mas cercano
Not Predicate: Comentarios Anidados
Un Lenguaje Dependiente del Contexto
Usando Pegjs con CoffeeScript
Práctica: Analizador de PL0 Ampliado Usando PEG.js
Práctica: Ambiguedad en C++
Práctica: Inventando un Lenguaje: Tortoise
Análisis Sintáctico Ascendente en JavaScript
Conceptos Básicos para el Análisis Sintáctico
Ejercicio
Ejemplo Simple en Jison
Véase También
Práctica: Secuencia de Asignaciones Simples
Ejemplo en Jison: Calculadora Simple
Práctica: Calculadora con Listas de Expresiones y Variables
Conceptos Básicos del Análisis LR
Construcción de las Tablas para el Análisis SLR
Los conjuntos de Primeros y Siguientes
Construcción de las Tablas
Práctica: Analizador de PL0 Usando Jison
Práctica: Análisis de Ámbito en PL0
Práctica: Traducción de Infijo a Postfijo
Práctica: Calculadora con Funciones
Práctica: Calculadora con Análisis de Ámbito
Algoritmo de Análisis LR
El módulo Generado por jison
Version
Gramática Inicial
Tablas
Acciones Semánticas
Tabla de Acciones y GOTOs
defaultActions
Reducciones
Desplazamientos/Shifts
Manejo de Errores
Analizador Léxico
Exportación
Precedencia y Asociatividad
Esquemas de Traducción
Manejo en jison de Atributos Heredados
Definición Dirigida por la Sintáxis
Ejercicios: Casos de Estudio
Un mal diseño
Gramática no LR(1)
Un Lenguaje Intrínsecamente Ambiguo
Conflicto reduce-reduce
Recuperación de Errores
Depuración en jison
Construcción del Árbol Sintáctico
Consejos a seguir al escribir un programa jison
Análisis Sintáctico Ascendente en Ruby
La Calculadora
Uso desde Línea de Comandos
Análisis Léxico con rexical
Análisis Sintáctico
Véase También
Transformaciones Árbol
Árbol de Análisis Abstracto
Selección de Código y Gramáticas Árbol
Patrones Árbol y Transformaciones Árbol
Ejemplo de Transformaciones Árbol: Parse::Eyapp::TreeRegexp
Treehugger
Práctica: Transformaciones en Los Árboles del Analizador PL0
SEGUNDA PARTE: APUNTES DE JAVASCRIPT
Introducción
Estructura Léxica
Tipos, Valores y Variables
Expresiones y Operadores
Sentencias
Objetos
Tutoriales de OOP en JavaScript en la Web
Ejercicios
Comprobando Propiedades
Enumeración de Propiedades
Arrays
Funciones
Definiendo Funciones
Invocando Funciones
Argumentos y Parámetros
Funciones como Valores
Funciones como Espacios de Nombres
Clausuras
Propiedades, Métodos y Constructor
La propiedad length
La Propiedad property
Los Métodos call y apply
Programación Funcional
Clases y Módulos
Herencia
Ejercicios
Subconjuntos y Extensiones de JavaScript
JavaScript en el Lado del Servidor
Instalar Node.js
Primeros Pasos. Un Ejemplo Simple
Usando REPL desde un programa
Usando REPL via un socket TCP
Referencias sobre REPL
Entrada Salida en Node.js
Debugger
Modulos
Introducción
Ciclos
Especificación de Ficheros Conteniendo Módulos
Carga desde Carpetas node_modules
Las Carpetas Usadas Como Módulos
Caching
El Objeto module y module.exports
Algoritmo de Búsqueda Ejecutado por require
Como Crear tu Propio Módulo en Node.js
Introducción
Un Fichero package.json
README y otros documentos
Véase También
Mas sobre Node
JavaScript en los Navegadores
El Objeto Window
Manejo de Documentos en JavaScript
Manejo de Eventos
La Librería JQuery
Almacenamiento en el Cliente
Multimedia y Gráficos
Backbone
Closure Tools
Véase También
Semantic Templates
Moustache
Pruebas
Testing en JavaScript: Fácil y Rápido
Unit Testing, TDD y BDD con Jasmine
Buenas Prácticas y Patrones
Véase También
Herramientas
npm
n
Google Chrome y Javascript
Plugins, Editores, IDEs
Grunt
Beautifiers, Pretty-Printers
Modulos
TERCERA PARTE: HTTP
CUARTA PARTE: CSS
Bootstrap
QUINTA PARTE: HTML
Semantic Templates
Moustache
handlebars
SEXTA PARTE: XML
SEPTIMA PARTE: APUNTES DE COFFESCRIPT
Introducción
CoffeeScript y JQuery
JQuery en Node.js
Ambito/Scope
PARTE: CREATE YOUR OWN PROGRAMMING LANGUAGE
JavaScript Review
Closures
Your First Compiler
Parsing
Scheem Interpreter
Scheem Interpreter
Variables
Setting Values
Putting Things Together
Unit Testing: Mocha
Karma
Grunt
GitHub Project Pages
Functions and all that
Inventing a language for turtle graphics
PARTE: SINATRA
Rack, un Webserver Ruby Modular
Introducción
Analizando env con pry-debugger
Introducción
REQUEST_METHOD, QUERY_STRING y PATH_INFO
Detectando el Proceso que está Usando un Puerto
Usando PATH_INFO y erubis para construir una aplicación (Noah Gibbs)
HTTP
Introducción
Sesiones HTTP
Métodos de Petición
Véase
Rack::Request y Depuración con pry-debugger
Conexión sin Parámetros
Conexión con Parámetros
Rack::Response
Introducción
Ejemplo Simple
Ejemplo con POST
Cookies y Rack
Gestión de Sesiones
Ejercicio
Ejemplo Simple Combinando Rack::Request, Rack::Response y Middleware (Lobster)
Práctica: Accediendo a Twitter y Mostrando los últimos twitts en una página
Ejemplo: Basic Authentication
Redirección
La Estructura de una Aplicación Rack
rackup
Rack::Static
Un Ejemplo Simple: Piedra, Papel, tijeras
Práctica: Rock, Paper, Scissors: Debugging
Práctica: Añadir Template Haml a Rock, Paper, Scissors
Práctica: Añada Hojas de Estilo a Piedra Papel Tijeras
Middleware y la Clase Rack::Builder
Ejemplo de Middleware: Rack::ETag
Construyendo Nuestro Propio Rack::Builder
Código de Rack::Builder
Rack::Cascade
Rack::Mount
Rack::URLMap
El método run de Rack::Handler::WEBrick
Documentación
Pruebas/Testing
Pruebas Unitarias
Rspec con Rack
Práctica: Añada Pruebas a Rock, Paper,Scissors
Prácticas: Centro de Cálculo
Despliegue de una Aplicación Web en la ETSII
Práctica: Despliegue en Heroku su Aplicación Rock, Paper,Scissors
Faking Sinatra with Rack and Middleware
Véase También
Primeros Pasos
Introducción
Referencias sobre Sinatra
Ejercicio: Instale la Documentación en sinatra.github.com
Fundamentos
Ejemplo Simple de uso de Sinatra
Rutas/Routes
Verbos HTTP en Sinatra/Base
Ficheros Estáticos
Vistas
Templates Inline
Named Templates
Templates Externos
Templates Externos en Subcarpetas
Variables en las Vistas
Pasando variables a la vista explícitamente via un hash
Opciones pasadas a los Métodos de los Templates
Filtros
Manejo de Errores
The methods body, status and headers
Acceso al Objeto Request
Caching / Caches
Sesiones y Cookies en Sinatra
Downloads / Descargas / Attachments
Uploads. Subida de Ficheros en Sinatra
halt
Passing a Request
Triggering Another Route: calling call
Logging
Generating URLs
Redireccionamientos/Browser Redirect
Configuration / Configuración
Configuring attack protection
Settings disponibles/Available Settings
Environments
Correo
Ambito
Sinatra Authentication
Referencias
Autentificación Básica
Sinatra como Middleware
Práctica: TicTacToe
Práctica: TicTacToe usando DataMapper
Práctica: Servicio de Syntax Highlighting
Sinatra desde Dentro
tux
Aplicación y Delegación
Helpers y Extensiones
Petición y Respuesta
Aplicaciones Modulares
Testing en Sinatra
CoffeeScript y Sinatra
Openid y Sinatra
Referencias. Véase Tambien
DataMapper y Sinatra
Introducción a Los Object Relational Mappers (ORM)
Introducción al Patrón DataMapper
Ejemplo de Uso de DataMapper
Configurando la Base de Datos en Heroku con DataMapper. Despliegue
Depuración en Sinatra
Depurando una Ejecución con Ruby
Envío de SMSs y Mensajes: Twilio y Clockworks
Rest
Sinatra + Sprockets
Sinatra::Flash
Pruebas
PARTE: HERRAMIENTAS
Heroku
Introducción
Logging
Heroku Postgress
Troubleshooting
Crashing
heroku run: Timeout awaiting process
Configuration
Make Heroku run non-master Git branch
Account Verification and add-ons
Véase
DataMapper
Introducción a Los Object Relational Mappers (ORM)
Patterns Active Record y DataMapper
Ejemplo de Uso de DataMapper
Configurando la Base de Datos en Heroku con DataMapper. Despliegue
Slim
Oauth: Google, Twitter, GitHub, Facebook
Introduction to OAuth
Google Developers Console
Managing projects and applications
Keys, access, security, and identity
OmniAuth gem: Standardized Multi-Provider Authentication for Ruby
Auth Hash Schema
OmniAuth OAuth2 gem
The gem omniauth-google-oauth2
Using OAuth 2.0 to Access Google APIs
Google OAuth 2.0 Playground
Sign-in with Google +
Revoking Access to an App
Google + API for Ruby
Google+ Sign-In for server-side apps
Authentication using the Google APIs Client Library for JavaScript
Índice de Figuras
Índice de Tablas
Índice de Materias
Bibliografía
Sig:
Índice de Figuras
Sup:
Apuntes de la Asignatura
Ant:
Authentication using the Google
Casiano Rodríguez León
2015-01-25