En YouTube Embedded Players and Player Parameters se explican los parámetros que se pueden emplear en la URL del reproductor de vídeos de YouTube.
Month: mayo 2014
Comprobación de la propagación de DNS
Los cambios de la configuración de DNS muchas veces son un dolor de cabeza. La página web What’s my DNS? puede ser una ayuda ya que permite comprobar la propagación de un cambio a lo largo del mundo.
¿Cómo extraer una parte de un array?
Ayer comentaba las tres funciones que existen en JavaScript para extraer una subcadena. Hoy toca lo mismo, pero con los arrays: JavaScript Array: slice vs splice.
Las dos funciones slice y splice puede parecer que hacen lo mismo, pero no es así. Y hay una diferencia muy importante: splice modifica el array sobre el que se aplica la función.
SLICE
var x = [14, 3, 77]; var y = x.slice(1, 2); console.log(x); // [14, 3, 77] console.log(y); // [3]
SPLICE
var x = [14, 3, 77] var y = x.splice(1, 2) console.log(x) // [14] console.log(y) // [3, 77]
¿Cómo extraer una subcadena en JavaScript?
Muy interesante el artículo JavaScript String: substring, substr, slice, que compara tres funciones que existen en JavaScript para extraer una subcadena de una cadena.
Cualquiera de las tres funciones se puede usar, pero hay que tener mucho cuidado, ya que las tres reciben dos parámetros que no funcionan de la misma forma:
SUBSTRING
var a = 'The Three Musketeers'; a.substring(4, 9); 'Three' a.substring(9, 4); 'Three'
SUBSTR
var b = 'The Three Musketeers'; b.substr(4, 9); 'Three Mus' b.substr(9, 4); ' Mus'
SLICE
var c = 'The Three Musketeers'; c.slice(4, 9); 'Three' c.slice(9, 4); ''
Más de 40 libros para diseñadores y desarrolladores
El artículo 40+ Books For Professional Design & Development publicado en Smashing Magazine recoge más de 40 libros esenciales para los diseñadores y desarrolladores. De todos esos libros he leído (y los recomiendo):
- Designing with Web Standards, de Jeffrey Zeldman.
- Don’t Make Me Think: A Common Sense Approach to Web Usability, de Steve Krug.
- Prioritizing Web Usability, de Jakob Nielsen y Hoa Loranger.
Web Programming Step by Step
No tengo este libro, pero lo recomiendo a partir de su tabla de contenidos: Web Programming Step by Step.
Este libro sigue una estrategia de enseñanza de la programación web muy similar a la que yo empleo:
CHAPTER 1 THE INTERNET AND WORLD WIDE WEB
- 1.1 WHAT IS THE INTERNET?
- History
- People and Organizations
- Technologies
- 1.2 THE WORLD WIDE WEB (WWW)
- Clients and Servers
- URLs and DNS
- Hypertext Transmit Protocol (HTTP)
- Languages of the Web
CHAPTER 2 HTML BASICS
- 2.1 BASIC HTML
- History
- Page Structure
- Block Elements
- Inline Elements
- 2.2 MORE HTML ELEMENTS
- Lists
- Tables
- Quotations
- Pre-Formatted Text
- A Few Miscellaneous Elements
- Audio and Video
- 2.3 WEB STANDARDS
- Why Follow Web Standards?
- The W3C HTML Validator
- Web Page Metadata
CHAPTER 3 CSS FOR STYLING
- 3.1 BASIC CSS
- CSS Syntax
- Applying CSS to a Web Page
- Color Properties
- CSS Comments
- 3.2 CSS PROPERTIES
- Font Properties
- Text Properties
- Background Properties
- List Properties
- Table Properties
- 3.3 MORE CSS SYNTAX
- Style Inheritance and Conflicts
- IDs and ID Selectors
- Classes and Class Selectors
- Pseudo-class Selectors
- W3C CSS Validator
- 3.3 CASE STUDY: TRAVELER TIMES REVISITED
- HTML Content
- Fonts and Colors
- Text and List Properties
- Targeting Elements with IDs and Classes
- Final File Contents
CHAPTER 4 PAGE LAYOUT
- 4.1 STYLING PAGE SECTIONS
- Page Sections (div et al)
- Spans of Text (span)
- CSS Context Selectors
- 4.2 INTRODUCTION TO LAYOUT
- The CSS Box Model
- Default Styles
- Finding Box Model Problems with Firebug
- 4.3 FLOATING ELEMENTS
- The float Property
- The clear Property
- Making Floating Elements Fit
- Multi-Column Layouts
- 4.4 SIZING AND POSITIONING
- Width and Height
- Positioning
- Z-indexing
- Element Visibility
- 4.5 CASE STUDY: ULTIMATE FRISBEE
- Page Sections and General Styles
- Images, Headings, and Lists
- Page Layout
- Final File Contents
CHAPTER 5 PHP
- 5.1 SERVER-SIDE BASICS
- Lifecycle of a Web Request
- Introduction to PHP
- 5.2 PHP BASIC SYNTAX
- Syntax Errors
- The print Statement
- Types
- Arithmetic
- Variables
- Strings
- Comments
- Boolean Logic
- Control Statements
- Errors and Debugging
- 5.3 EMBEDDED PHP
- Embedding PHP in HTML
- Expression Blocks
- 5.4 ADVANCED PHP SYNTAX
- Functions
- Including Files
- Arrays
- The foreach Loop
- File I/O
- Classes and Objects
- 5.5 CASE STUDY: WORD OF THE DAY
- Index Page
- Word Definition Page
- Final File Contents
CHAPTER 6 FORMS
- 6.1 FORM BASICS
- Parameterized Pages and Query Strings
- A Simple Form
- 6.2 FORM CONTROLS
- Text Boxes
- Checkboxes and Radio Buttons
- Labels
- Drop-down Menus and Lists
- Reset Buttons
- New Form Controls in HTML5
- Grouping Controls (Field Sets)
- Styling Forms
- 6.3 SUBMITTING DATA
- URL-encoding
- Hidden Input Parameters
- HTTP Requests: GET vs. POST
- Uploading Files
- 6.4 PROCESSING FORM DATA IN PHP
- Superglobal Associative Arrays
- Working with $_GET and $_POST
- Processing Uploaded Files
- 6.5 CASE STUDY: VOCAB QUIZ
- Selecting Random Words
- Submitting Guesses
- Final File Contents
CHAPTER 7 WEB DESIGN
- 7.1 USER-CENTERED DESIGN
- The Typical User
- Visual Design Concepts
- The Design Process
- 7.2 PAGE LAYOUT
- General Appearance
- Home Pages
- Navigation and Links
- Forms and UI Controls
- 7.3 ACCESSIBILITY
- Accessibility Issues
- An Accessibility Checklist
CHAPTER 8 JAVASCRIPT
- 8.1 KEY JAVASCRIPT CONCEPTS
- Client-Side Scripting
- Event-Driven Programming
- A JavaScript Program
- The Document Object Model (DOM)
- 8.2 JAVASCRIPT SYNTAX
- Types
- Numbers and Arithmetic
- Variables
- Comments
- Using DOM Objects
- Debugging Common Errors
- Strings
- for Loops
- The Math Object
- Null and Undefined Values
- 8.3 PROGRAM LOGIC
- Comparison Operators
- Conditional Statements: if/else
- Boolean Values
- Logical Operators
- While Loops
- 8.4 ADVANCED JAVASCRIPT SYNTAX
- Scope and Global Variables
- Arrays
- Function Parameters and Returns
- Input Dialog Boxes
- 8.5 CASE STUDY: HANGMAN
- Initial HTML/CSS Code
- Choosing a Word with JavaScript
- Making Guesses
- Right and Wrong Guesses
- Final File Contents
CHAPTER 9 THE DOCUMENT OBJECT MODEL (DOM)
- 9.1 GLOBAL DOM OBJECTS
- window.onload and Unobtrusive JavaScript
- Anonymous Functions
- The Keyword this
- 9.2 DOM ELEMENT OBJECTS
- Interacting with Text
- Adjusting Styles
- Unobtrusive Styling
- 9.3 THE DOM TREE
- DOM Nodes
- Traversal Properties and Methods
- Traversing Elements
- Selecting Groups of Elements
- Creating and Removing Nodes
- 9.4 CASE STUDY: COLORED SQUARES
- Initial HTML/CSS Code
- Creating Squares
- Add Squares, Change Colors
- Clickable Squares
- Final File Contents
CHAPTER 10 PROTOTYPE AND SCRIPTACULOUS
- 10.1 PROTOTYPE
- Introduction to Prototype
- Language Improvements
- Prototype and the DOM
- Accessing Styles
- Traversing the DOM
- Prototype and Forms
- 10.2 SCRIPTACULOUS
- Visual Effects
- Drag-and-Drop
- Controls and Sounds
CHAPTER 11 EVENTS
- 11.1 EVENT-HANDLING
- The Event Object
- Mouse Events
- Keyboard and Text Events
- Form Events
- Page Events
- Timer Events
- 11.2 CASE STUDY: MULTIPLICATION QUIZ
- Initial HTML/CSS Content
- Problems and Guesses
- Time Limits
- Final File Contents
CHAPTER 12 AJAX, XML, and JSON
- 12.1 AJAX CONCEPTS
- History and Compatibility
- 12.2 USING XMLHTTPREQUEST TO FETCH DATA
- Synchronous Requests
- Checking for Ajax Errors
- Asynchronous Requests
- Prototype’s Ajax Features
- Ajax Security and Debugging
- 12.3 XML
- What is XML?
- XML Document Structure, Schemas, and DTDs
- Processing XML Data
- 12.4 JSON
- JavaScript Object Literals
- JSON Data Format
- Processing JSON Data
- 12.5 CASE STUDY: ANIMAL GAME
- Initial HTML/CSS Content
- Fetching Question Data Using Ajax
- End-of-Game and Adding Polish
- Final File Contents
CHAPTER 13 RELATIONAL DATABASES AND SQL
- 13.1 DATABASE BASICS
- Motivation
- Example Database: imdb
- 13.2 SQL
- Connecting to MySQL
- Database/Table Information
- The SELECT Statement
- Filtering Results with the WHERE Clause
- Ordering Results: ORDER BY
- Aggregating Data: GROUP BY, HAVING
- Modifying Data: INSERT, EDIT, and DELETE
- 13.3 MULTI-TABLE QUERIES
- Cartesian Product
- Joins
- Keys
- Designing a Query
- 13.4 QUERYING A DATABASE IN PHP
- Connecting to a Database
- Performing Queries
- Error Checking
- MySQL-specific Database Functions
- 13.5 CASE STUDY: ADVENTURE RECOMMENDER
- Index Page
- Adventure Recommendations Page
- Final File Contents
CHAPTER 14 COOKIES AND SESSIONS
- 14.1 COOKIE BASICS
- What is a Cookie?
- Myths About Cookies
- Lifecycle of a Cookie
- How Cookies are Stored
- 14.2 PROGRAMMING WITH COOKIES
- Cookies in PHP
- Cookies in JavaScript
- A JavaScript Cookie Library
- 14.3 SESSIONS
- Lifecycle of a Session
- Sessions in PHP
- 14.4 CASE STUDY: USER LOGIN SYSTEM
- Basic HTML/CSS Content
- User Login Page
- Grades and Teachers Pages
- Restricting Access
- Logging Out
- Adding “Flash” Messages
- Final File Contents
CHAPTER 15 WEB SECURITY
- 15.1 SECURITY PRINCIPLES
- Threats and Attacks
- Thinking Like an Attacker
- The Security Mindset
- 15.2 CROSS-SITE SCRIPTING (XSS)
- A Typical XSS Attack
- Defending Against XSS
- 15.3 VALIDATING INPUT DATA
- Client-Side Validation
- Server-Side Validation
- Regular Expressions
- Regular Expressions in HTML
- Regular Expressions in PHP
- Regular Expressions in JavaScript
- 15.4 SQL INJECTION
- Typical SQL Injection Attacks
- Defending Against SQL Injection
- 15.5 SESSION-BASED ATTACKS
- Session Hijacking
- Cross-Site Request Forgery (CSRF)
- Defending Against CSRF
Cuentas de eBay robadas
En los últimos meses, numerosos gigantes de la Web han sufrido ataques y robos de datos de cuentas de sus clientes. Esta vez le ha tocado a eBay: eBay pide a sus 128 millones de clientes que cambien las claves.
La noticia dice:
La compañía de comercio electrónico eBay ha pedido a sus 128 millones de clientes que cambien las contraseñas, tras reconocer que había sufrido hace unos meses un ataque cibernético a la base de datos.
La base de datos contenía nombres, edad, contraseñas de correos, direcciones físicas y números de teléfono, aunque la empresa señala que no tienen evidencia de que los piratas informáticos hubieran accedido al sistema de pagos Paypal, del que es propietaria.
[…]
El ataque se realiza a través de “un pequeño número” de cuentas de empleados que permitían el acceso no autorizado a la red corporativa, explicó la compañía en un comunicado. El infringimiento de las normas se detectó por primera vez hace unas dos semanas y, según la compañía, desde entonces no se ha descubierto un incremento de las actividades fraudulentas en su web.
Dos tipos de personas
Publicado en Twitter por Horace Dediu:
Mitos de HTML5
HTML5 ya es una realidad, aunque no será una recomendación oficial hasta finales del año 2014 (si no sufre más retrasos).
En el artículo HTML5 mythbusting se desmontan una serie de mitos que existen alrededor de HTML5:
- Rendimiento: comparar el rendimiento de una aplicación HTML5 con una aplicación nativa de dispositivo móvil (una app) es como comparar un traje hecho a medida con un traje comprado en unos grandes almacenes.
- HTML5 no se puede monetizar: un mito sin fundamento.
- HTML5 no puede funcionar offline: falso, los nuevos APIs, como Web Storage, AppCache e IndexedDB resuelven este problema.
- HTML5 no posee un entorno de desarrollo
- HTML5 puede hacer cosas que las aplicaciones nativas no pueden: esto no es un mito, es una realidad.
Malos ejemplos de diseño
Bad Human Factors Designs es un sitio web en el que se pueden encontrar muchos ejemplos de malos diseños.
Hay varios relacionados con los ordenadores, como el mal diseño de los conectores de USB o de los antiguos conectores de ratón y teclado PS/2.