Siguiente:
A Juana
Índice General
Índice de Materias
Apuntes de RUBY
Casiano R. León
0
.
1
A Juana
Agradecimientos/Acknowledgments
LENGUAJES Y PARADIGMAS DE PROGRAMACION
Introducción a los Lenguajes y Paradigmas de Programación
Modelos de Programación
Paradigmas de Programación
El Arte del Diseño de Lenguajes
El Espectro de los Lenguajes de Programación
¿Porqué estudiar lenguajes?
Programación Imperativa
Estructuras de Datos
Tipos de Datos Abstractos/Abstract Data Types
Abstracción y Encapsulamiento
Subprogramas
Programación Estructurada
Go To Statement Considered Harmful
El teorema del programa estructurado
Erlang
Elixir
Ejemplo: Suma de los elementos de una lista
Quicksort
Programación Lógica
Paralelismo y Computación de Alto Rendimiento en Ruby
Go
EL LENGUAJE DE PROGRAMACIÓN RUBY
Introduccion
Primeros Pasos
irb
pry
Donde Encontrar Ruby y Como Instalarlo
Donde esta Ruby en Nuestra Máquina
RVM
Ejecución de un Programa Ruby
Ejercicio: Calcule el Factorial de un Número
Lints in Ruby: rubocop, reek, etc.
Ejecución de un Programa con el Depurador
Averiguando que tiempo hace
Ejercicios: Expresiones Regulares. Un programa que convierte de Celsius a Farenheit
Ejercicio: Excepciones y Expresiones Regulares. Pasar de Hexadecimal a Decimal
Bloques/Blocks
El método gets
Práctica: Producto y Suma de Matrices
Sugerencias
Práctica: Evaluar una Expresión en Postfijo
Pistas
Práctica: Traducción de notación infija a postfijo
Ejercicios
Ejemplo en Ruby: Accediendo a Twitter
Práctica: Contar la Popularidad de Nuestros Amigos en Twitter
Véase También
Resolviendo Sudokus
La Estructura y Ejecución de los Programas Ruby
Estructura Léxica
Estructura Sintáctica
Estructura de Fichero
Codificación de un Programa
Ejecución de un Programa
Práctica: Descarga Páginas de la Wikipedia
Práctica: Tweet Fetching
Práctica: SQL An introduction to relational databases and their query languages
Tipos de Datos y Objetos
Números
Constantes Racionales en Ruby 2.1
Texto
Arrays
Hashes
Rangos
Símbolos
Booleanos y Nil
Véase También
Objetos
Referencias a Objetos
Vida de un Objeto
Identidad de un Objeto
Clase y Tipo de un Objeto. Polimorfismo
Igualdad de Objetos
Orden en Objetos
Conversión de Objetos
Copia de Objetos
Marshalling
Freezing: Congelando Objetos
Objetos Manchados: Tainting
Congelación: freezing
Ejercicios
Ejercicios
Práctica: Ordenar por Calificaciones
Ejercicios
Ejercicios
Expresiones y Operadores
Literales y Palabras Reservadas
Variables
Variables No Inicializadas
Constantes
Invocación de Métodos
Asignaciones
Asignación a Variables
Asignación a Constantes
Asignación a Atributos y a Elementos de Arrays
Asignaciones Abreviadas
Asignaciones Paralelas
Operadores
+ y - Unario
Exponenciación
Operadores Binarios
Shift y Append
Complemento, Unión e Intersección
Comparación
Igualdad
Operadores Lógicos
Rangos y Flip-Flops
Condicional
?
Operadores de Asignación
El Operador
defined?
Modificadores de Sentencias (Sufijos)
Símbolos de Puntuación que no son Operadores
Sentencias y Estructuras de Control
Condicionales
Bucles
Iteradores y Objetos Enumerables
Enumeradores
Bloques
Alterando el Flujo de Control
throw y catch son Sentencias de Control
Manejo de Excepciones
BEGIN y END
Threads, Fibras y Continuaciones
Fibras
Threads
Práctica: Reto Dropbox. El Problema de la Dieta
Métodos, Procs, Lambdas y Clausuras
Definiendo Métodos Simples
Valor Retornado por un Método
Métodos y Manejo de Excepciones
Invocando un Método en un Objeto
Definiendo Métodos Singleton
Borrando (Undefining) Métodos
Nombres de Métodos
Métodos Operadores
Alias de Métodos
Métodos y Paréntesis
Argumentos de un Método
Parámetros por Defecto
Listas de Argumentos de Longitud Variable y Arrays
Asignando Argumentos a los Parámetros
Hashes para Argumentos con Nombre
Parámetros con Nombre. Named Parameters in Ruby 2.0
Argumentos Bloque
Procs y Lambdas
Creacion de
Proc
s
Invocación de
Proc
s y Lambdas
La Aridad de un
Proc
Igualdad de
Proc
s
En que Forma las Lambdas Difieren de los
Proc
s
Enumeradores
Bloques para las Transacciones
Ejemplo: La Clase
Filter
Clausuras
Clausuras y Variables Compartidas
Clausuras y Bindings
Repaso
Objetos
Method
Objetos
Method
no Ligados (Unbound Method Objects)
Programación Funcional
Aplicando una Función a un Enumerable
Composición de Funciones
Aplicación Parcial de Funciones
Memoización
Símbolos, Métodos y Procs
Véase También
Práctica: La Calculadora
Ejercicios
Práctica: Un Motor para las Expresiones Regulares en Pocas Líneas
Clases y Módulos
Definición de una Clase Simple
Creando una Clase
Instanciando un Punto
Inicializando un Punto
Definiendo un método
to_s
Acceso a los Atributos
Definiendo Operadores (La Clase Point)
Tabla de Operadores en Ruby
Polimorfismo, Comprobación de Tipos y Tipado Pato (Duck Typing)
Coerción
Acceso a Arrays y a Hashes
Enumeración de Coordenadas
Igualdad de Puntos
Ordenando Puntos
Un Punto Mutable
Creando Clases con
Struct
Un Método de Clase
Constantes
Variables de Clase. Atributos de la Clase
Variables de Instancia de Clase
Práctica: La Clase Punto del Plano
Visibilidad de los métodos: Público, Privado, Protegido
Ejemplo de Visibilidad de Métodos Protegidos
Ejemplo de Visibilidad
Subclases y Herencia
Heredando Métodos
super
Predominancia/Invalidación de Métodos (overriding)
Aumentando la Conducta Mediante Encadenamiento
Herencia y Métodos de Clase
Herencia y Variables de la Instancia
Herencia y Variables de Clase y Variables de Instancia de una Clase
Herencia y Constantes
Averiguando los Descendientes de una Clase (descendants)
Delegación
Creación e Inicialización de Objetos
new, allocate e initialize
Métodos Factoría
dup, clone e initialize_copy
Limitando el Número de Instancias de una Clase
Métodos y Clases: Construyendo un Iterador
Práctica: Conjuntos
Módulos
Los Módulos como Espacios de Nombres
Los Módulos como Mixins
Ejemplo
Módulos Espacio de Nombres Incluíbles
Prepend
Carga y Solicitud de Módulos
El Camino de Búsqueda
Ejecutando Código Cargado
Autoloading de Módulos
Práctica: Matrices
Práctica: Matrices Dispersas
Los Métodos Singleton y la Singleton Class o Eigenclass
La Búsqueda por Métodos de Instancia
Búsqueda de Métodos de Clase
La Búsqueda de Constantes
Véase
Jugador de TicTacToe (Tres en Raya)
Ejemplo de Partida
Programa Principal
La Clase Game
La Clase Player: Un Ejemplo de
Strategy Pattern
La Clase Board
La Clase Row
Código Completo del TicTacToe
Reflexión y Metaprogramación
Tipos, Clases y Módulos
Antepasados y Módulos
Definiendo Clases y Módulos
Evaluando Strings y Bloques
Bindings (encarpetados) y eval
instance_eval y class_eval
instance_exec y class_exec
Variables y Constantes
Buscando, Dando Valores y Suprimiendo Variables y Constantes
Métodos
Listando y Comprobando Métodos
Obteniendo los Métodos de Objetos
Llamando a los Métodos Dinámicamente
Definiendo, Suprimiendo y Haciendo Alias de Métodos
Manejando Métodos No Definidos: method_missing
Ejercicios
Hooks (Ganchos)
El Hook
inherited
El Hook
included
Ganchos/Hooks: Sustituyendo (y delegando en) un método existente
Ganchos/Hooks: Interviniendo en el Momento en que un Objeto es Creado
Traza
set_trace_func
caller
Los Módulos ObjectSpace y GC
Estructuras de Control a la Carta
Creando una
Palabra Clave
Métodos Missing y Constantes Missing
Creando Dinámicamente los Métodos dentro de method_missing
Creando Métodos Dinámicamente
Definiendo Métodos con
class_eval
Definiendo Métodos con
define_method
Encadenamiento de Alias
Lenguajes de Dominio Específico. Domain Specific Languages. DSL
Un Lenguaje de Dominio Específico para Describir Recetas de Cocina
Un DSL para Procesar Documentos XML usando
instance_eval
Dos DSLs: Generando XML con Validación via Generación de Métodos
Creando un ORM
Práctica: DSL: Redacción de Cuestionarios I (Sin Contexto)
Práctica: DSL: Redacción de Cuestionarios II (Con Contexto)
Práctica: HTML DSL
Práctica: HTML DSL con Git y Rake
Repaso
Repaso
Repaso
Referencias. Véase También
Pruebas Unitarias
Test/Unit
Ejemplo Sencillo de uso de
test/unit
Cuando una assertion falla
Organizando las pruebas
Setup y Teardown
Veáse
Minitest
Pruebas. Test Driven Development (TDD) y Rspec
Introducción
0: Red
1: Green
2: Red
3: Green
4: refactor
5: Red: should and should_not
6: Green
7: un poco mas tarde ...
rspec opciones
Resumen y Enlaces
Pruebas. Capybara y Cucumber
Introduccion
Usando Capybara Directamente
Usando la Sesión Directamente
Usando Capybara Directamente Incluyendo el Módulo
Capybara::DSL
Aprendiendo Capybara con Ficheros HTML Locales
Ejemplo de uso de Capybara, RSpec y Cucumber con una Aplicación Web Externa
Poltergeist
Capybara y Rack::Test
Testeando una Aplicación Sinatra
Testing con Rack::Test y Cucumber
La API de Capybara
Búsqueda de Elementos HTML
Clicks en Botones y Enlaces
Envío de Formularios
Buscadores/Finders, Ámbito/Scope y Coincidencias/Matches Múltiples
Véase
Pruebas. Other Testing tools
Integración Contínua: Travis
Uso de Travis
Enlaces
Notificaciones/Notifications
Limites de Timepo/Build Timeouts
Databases and other services
Travis en la Línea de Comandos
Coveralls: Análisis de Cubrimiento
Guard
Programación Orientada a Eventos
Introducción a Programación Orientada a Eventos
Building our own I/O Event Loop
EventMachine
Un server
Deferrable
Véase
Véase
Programación distribuída/Distributed Programming
DRb
Distributed Ruby and SSH: drbssh
Actores
Celluloid
DCell
El Problema de los Filósosofos Comensales / The Dining Philosophers Problem
Véase
Threads
Enlaces /Véase
Creación de Threads
Exclusión Mutua y la Clase
Mutex
Threads y Sockets
Un Chat Usando Threads y Sockets
Un Servidor Multithreaded (and a Client)
Colas
Condition Variables/Variables Condición
El Problema de los Filósosofos Comensales / The Dining Philosophers Problem
Juegos con Gosu
Enlaces
El Juego de la Vida
Starfighter
Random bouncy particles using ruby Gosu games library
Shoes
herramientas para el Control de la Calidad
Lints: rubcop y reek
Véase
La Plataforma Ruby
Unicode
Expresiones Regulares
El Entorno Ruby
Invocando al intérprete Ruby
El Entorno al Nivel mas Alto
Atajos para la Extracción e Informes (Tipo Perl)
LLamando al Sistema Operativo
Seguridad
El Compilador de Ruby
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
Implementing a minimal HTTP server in Ruby
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: Race Conditions. Concurrencia
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 con Rack::Auth::Basic
Redirección
La Estructura de una Aplicación Rack: Ejemplo de Middleware
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
Autentificación Básica en Sinatra con Rack::Auth::Basic
Ejemplo con Warden
Referencias
Sinatra como Middleware
Práctica: Aplicación Web con Sinatra: Contar la Popularidad de Nuestros Amigos en Twitter
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
Véase
Build a Sinatra API Using TDD, Heroku, and Continuous Integration with Travis
Mini MiniTest Tutorial
Sample app with Sinatra Rspec Capybara and Selenium
CoffeeScript y Sinatra
Streaming
Introducción
Streaming y Valores de Retorno
Sinatra usando Streaming, Rack MiddleWare y map
Enlaces Relacionados
A simple demonstration of streaming Redis pub/sub data
Comet y Server Sent-Events
Ejemplo Simple
Enlaces Relacionados
Chat Utilizando Streaming y Server Sent Events (SSE)
Código Completo del Chat
Chat Simple
Práctica: Chat con Mensajes Individuales
Práctica: Chat con Estilo
Práctica: Chat con TicTacToe
Embedding Sinatra within EventMachine
Ejemplo de Server Sent Events: irb en el navegador
Asynchronous responses in Rack
Deferred or streaming response bodies
Código en
sinatra/base.rb
: la clase
Stream
Web Sockets
WebSockets
Que es WebSocket y para que sirve
Negociación del protocolo WebSocket
websocket/rack
Ruby y WebSockets: TCP for the Browser
Una Aplicación Usando Websockets en la que Múltiples Clientes Dibujan en un Lienzo
Enlaces Relacionados
Using WebSockets on Heroku with Ruby
Openid y Sinatra
Referencias. Véase Tambien
Bootstrap your Web Application with Ruby and Sinatra
BootStrap
Ajax in Sinatra
Un Programa para Experimentar con las Expresiones Regulares Usando Ajax
Un Ejemplo Simple
Ajax, Sinatra y RightJS
Un Chat con Ajax y JQuery
Práctica: Chat Usando Ajax y jQuery
Práctica: TicTactoe Usando Ajax
Redis y Sinatra
MongoDB y Sinatra
Building Backbone.js Apps With Ruby, Sinatra, MongoDB and Haml
DataMapper y Sinatra
Introducción a Los Object Relational Mappers (ORM)
Introducción al Patrón DataMapper
Ejemplo Simple de uso de DataMapper: Agenda
Ejemplo de Uso de DataMapper: Canciones de Sinatra
Ejemplo de uso de Sinatra y DataMapper: Acortador de URLs
Configurando la Base de Datos en Heroku con DataMapper. Despliegue
Asociaciones Simples
Asociaciones Through
Práctica: Acortador de URLs
Práctica: Estadísticas de Visitas al Acortador de URLs
Sequel y Sinatra
ActiveRecord y Sinatra
Práctica: Servicio para Abreviar URLs
Práctica: Servicio para Abreviar URLs Teniendo en Cuenta el País de Visita
Google Plus y Sinatra
Ejemplo Simple
Las Manos en la Masa: Nuestro Propio Blog Engine
Depuración en Sinatra
Depurando una Ejecución con Ruby
Despliegue en Heroku
Introducción
Logging
Troubleshooting
Configuration
Make Heroku run non-master Git branch
Configurando la Base de Datos en Heroku con DataMapper
Using AWS S3 to Store Static Assets and File Uploads
Account Verification and add-ons
Véase
Práctica: Despliegue en Heroku
Envío de SMSs y Mensajes: Twilio y Clockworks
Rest
Introducción
Ejemplo de un servicio RESTfull en Sinatra
Véase
Sinatra + Sprockets + Slim + Sinatra-reloader Example
Sinatra::Flash
Alternativas a Sinatra
Cuba
Grape
Ramaze
Padrino
Introducción
Generadores
Enlaces
Desarrolladores de Sinatra
Konstantin Haase
JAVASCRIPT, HTML y CSS
Introducción
Challenge Problem
Iterative
Objetos
Tutoriales de OOP en JavaScript en la Web
Ejercicios
Comprobando Propiedades
Enumeración de Propiedades
Funciones
Los Métodos
call
y
apply
Programación Funcional
Clases y Módulos
Herencia
Ejercicios
Ajax
Enlaces y Bibliografía
JSOn y JSONP: When ajax calls are in a different domain from the server.
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
JQuery en Node.js
Mas sobre Node
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 para JavaScript
npm
Specifying dependencies in Node.js
n
Google Chrome y Javascript
Plugins, Editores, IDEs
Grunt
Beautifiers, Pretty-Printers
Modulos
Google Maps JavaScript API
Mobile Web Applications Development with HTML5
Semantic Templates en Javascript
Moustache
handlebars
CSS
Bootstrap: Javascript y Hojas de Estilo
BootStrap
JQuery Mobile
COFFESCRIPT
Introducción
Ambito/Scope
HERRAMIENTAS
Ruby en Windows
Ruby Version Manager: RVM
Instalación de RVM
Actualización
Versiones Conocidas del Intérprete
Instalar un Intérprete
Intérpretes Instalados
Suprimir un intérprete
.rvmrc, .ruby-version y .ruby-gemset
rvmrc
Gemsets
Lista de Comandos para trabajar con gemsets
Ejemplo de uso de gemsets
RVM gives you a separate gem directory for each and every Ruby version and gemset
Desinstalar rvm
Véase También
Práctica: RVM: Instalación y Manejo
rbenv
RubyGems: installing, updating and removing rubygems
Introducción
Servidores de Gemas
Geminabox
ssh
Introducción
Conexión SSH a Una máquina por Primera Vez
Claves Pública y Privada: Estableciendo Autentificación No Interactiva
El fichero
authorized_keys
Deshabilitar la Asignación de una TTY
Agentes SSH
Mejor un Sólo Agente
Redireccionado al Agente SSH
Consideraciones sobre la Seguridad del Uso de Agentes
Depuración/Debugging
Los Ficheros de Configuración
Copia Segura de un Fichero
Transferencia de ficheros por
sftp
Copias de Seguridad con
rsync
Git
Instalar Git
Introducción al uso de Git con GitHub en GitHub
Un poco de SSH
Ramificaciones en Git
Véase: Tutoriales de Git
Diferencias entre fetch y pull
Mezclando Ficheros Específicos desde otra Rama
Configuración y Algunos alias
Alias lg
Auto-completado
Poner la rama en el prompt de la shell
Hub
Vim y Git. FuGitive: a Git wrapper so awesome, it should be illegal
Debugging, Depurando
Véase
ruby-debug Cheat Sheet
Depuración con Pry
Rake
Argumentos en una Tarea
Rake::TestTask
Enlaces
Documentado el Código: RDoc, Yard, UML
RDoc
Opciones
RDoc y Rake
Servidor de Documentación Local
Ejemplo
Buenas Normas de Documentación
Enlaces
YARD
Diagramas UML
umlify
Bundler
bundle show: Que versión de una gema estamos usando
bundle show: searching
La opción
PATH
(
:path
) del método gem
Véase
Creando Gemas y Publicándolas en rubygems.org
Eligiendo Nombre
Creando la Estructura Inicial de la Gema
Underscores and Dashes
Dependencias de la Gema
Jerarquía de Ficheros y Directorios, Nombres y Requires
Gemas con Un Gran Número de Utilidades Independientes
Sharing Source Code From a Public git Repository
Publishing to RubyGems.org
gem owner: Compartiendo la Propiedad de una Gema
gem cert: Gem Security
gem yank: Retirando una Versión de una Gema de RubyGems.org
Semantic Versioning
Declaring dependencies: Runtime vs. Development
Optimistic and Pessimistic Version Constraint
Controlando nuestras dependencias: bundle update, bundle outdated
Local Git Repos
Badges
Preparando la Documentación
Inch
Enlaces Relacionados
Herramientas para la Programacion en Pares
Introduction to Pair Programing
Remote pair programming
tmux
Utilidades para Pair Programming con tmux
MadEye
Screenhero
Cloud9
Introducción: Cloud IDEs y Cloud9
Instalación local
Ruby en Cloud9
Programación en Parejas y Cloud9
Rails en Cloud9
Cloud9 y GitHub: How do I push my Cloud9 project to GitHub
Deploy your app to Heroku using the Cloud9 console
OAuth
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
Ejemplos de uso de omniauth
Práctica: Usando OAuth con omniauth
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
MacOS homebrew Package Manager
PostgreSQL
SASS (Syntactically Awesome StyleSheets)
Introduccion
Modos de Uso
Referencias
Haml
Filters
HTML5 Custom Data Attributes
Selenium
Introducción
Componentes
Setting Up a Selenium-WebDriver Project
ETSII
Prácticas: Centro de Cálculo
Despliegue de una Aplicación Web en la ETSII
Gemas instaladas en local
jsFiddle
Codenvy
Introducción
Editores Entornos de Desarrollo
Website wireframes
Markdown
Véase
Jekyll
Introducción
Jekyll en GitHub
User and Organization Pages
Project Pages
Véase
Jekyll en Heroku
Showoff
GitHub
Organizations
GitHub Pages
Vim
Plugin para parejas (paréntesis, etc.)
Plugins para HTML
Plugins para git
Vim airline
Apache
Apache en Mac OS X
Configuring Apache
PHP
Perl
MySQL
Enlaces
DataMapper
Perpetuity
twitter
Ruport
ostruct
flickr
Camping
BITÁCORA DE LPP
Presentación
Información General
Profesores
Matrícula
Contexto
Horarios
Ejercicio: Hágase miembro de la comunidad google+ ULL-ETSII-GRADO-LPP-14-15
Programa de Teoría
Programa de Prácticas
Evaluación
Septiembre
Octubre
Noviembre
Diciembre
Enero. Exámenes de Convocatoria días 12 y 21 a las 16:00 en el aula 1.3
Mayo: 28 de mayo HORA: 16:00 AULA: 1.2
Julio: 2 de julio HORA: 15:30 AULA: 1.2
Repasos
Índice General
Índice de Figuras
Índice de Tablas
Índice de Materias
Bibliografía
Sobre este documento...
Casiano Rodriguez León 2015-01-07