- Puntualidad
- Liquidos y comida
- Ubicación
- Cafeteria, cajeros, farmacias, etc...
- Descansos
- Gestión del curso en GitHub
- Comunicación fuera de clase
- Repositorio común
- Toda la teoría, prácticas y recursos
- Proyectos personales
- Prácticas y "deberes"
- Repasos, para afianzar lógica
Bio: "#Maker, #IoT, #OpenSource | #JavaScript, #Node, #Python | Co-organizador de @os_weekends | Profe en @fictiziaescuela | Mentor en @TetuanValley | Autor de #JavaScriptInspirate | Freelance | xIBMer"
Redes Sociales:
- Front-End
- Back-End
- Full-Stack
- Dev Ops
- etc...
Navegación
Hosting
CDN (Content Delivery Network)
Tracking
W3C - World Wide Web Consortium
HTML, sigla en inglés de HyperText Markup Language (lenguaje de marcas de hipertexto), hace referencia al lenguaje de marcado para la elaboración de páginas web. Es un estándar que sirve de referencia del software que conecta con la elaboración de páginas web en sus diferentes versiones, define una estructura básica y un código (denominado código HTML) para la definición de contenido de una página web, como texto, imágenes, videos, juegos, entre otros. Es un estándar a cargo del World Wide Web Consortium (W3C) o Consorcio WWW, organización dedicada a la estandarización de casi todas las tecnologías ligadas a la web, sobre todo en lo referente a su escritura e interpretación. Se considera el lenguaje web más importante siendo su invención crucial en la aparición, desarrollo y expansión de la World Wide Web (WWW). Es el estándar que se ha impuesto en la visualización de páginas web y es el que todos los navegadores actuales han adoptado.1
El lenguaje HTML basa su filosofía de desarrollo en la diferenciación. Para añadir un elemento externo a la página (imagen, vídeo, script, entre otros.), este no se incrusta directamente en el código de la página, sino que se hace una referencia a la ubicación de dicho elemento mediante texto. De este modo, la página web contiene solamente texto mientras que recae en el navegador web (interpretador del código) la tarea de unir todos los elementos y visualizar la página final. Al ser un estándar, HTML busca ser un lenguaje que permita que cualquier página web escrita en una determinada versión, pueda ser interpretada de la misma forma (estándar) por cualquier navegador web actualizado.HTML Wikiwand
- Versiones:
- HTML 1.0 (1991)
- HTML 2.0 (1995)
- HTML 3.2 (1997)
- HTML 4 (1997)
- HTML 4.01 (1999)
- HTML 5 (2014)
Hoja de estilo en cascada o CSS (siglas en inglés de cascading style sheets) es un lenguaje usado para definir y crear la presentación de un documento estructurado escrito en HTML o XML2 (y por extensión en XHTML). El World Wide Web Consortium (W3C) es el encargado de formular la especificación de las hojas de estilo que servirán de estándar para los agentes de usuario o navegadores. La idea que se encuentra detrás del desarrollo de CSS es separar la estructura de un documento de su presentación.CSS Wikiwand
- Versiones:
- Versión 1 (CSS1) en 1996
- Versión 2 (CSS2) en 1998
- Versión 2.1 (CSS2) en 2004
- Versión 3 (CSS3) en 2011
- Ejemplos:
JavaScript (abreviado comúnmente JS) es un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinámico.
Se utiliza principalmente en su forma del lado del cliente (client-side), implementado como parte de un navegador web permitiendo mejoras en la interfaz de usuario y páginas web dinámicas aunque existe una forma de JavaScript del lado del servidor (Server-side JavaScript o SSJS). Su uso en aplicaciones externas a la web, por ejemplo en documentos PDF, aplicaciones de escritorio (mayoritariamente widgets) es también significativo. JavaScript Wikiwand
Características
- Multiparadigma
- Imperativo y estructurado
- Dinámico
- Tipado dinámico
- Objetual
- Evaluación en tiempo de ejecución
- Funcional
- Funciones de primera clase
- Prototípico
- Prototipos
- Funciones constructoras
- Entorno de ejecución
- Funciones varídicas
- Funciones como métodos
- Arrays y la definición literal de objetos
- Expresiones regulares
-
Versiones:
- Versión 1 (Junio de 1997)
- Versión 2 (Junio de 1998)
- Versión 3 (Diciembre de 1999)
- Versión 3 (Abandonado)
- Versión 5 (Diciembre de 2009)
- Versión 5.1 (Diciembre de 2011)
- Versión 6 (Junio de 2015)
- Versión 7 (En desarrollo)
-
Compatibilidad:
-
Compiladores
-
Librerías
-
Frameworks (MV)*
var Magic = (function(){
console.log("Soy 1")
let coeficienteSeguro = 10;
return function(num){
console.log("Soy 2, coeficienteSeguro:", coeficienteSeguro);
if(coeficienteSeguro > 20){
return num*coeficienteSeguro
} else {
coeficienteSeguro++
return Magic(num);
}
}
})()
var dato = Magic(10);
console.log(dato);
dato = Magic(100);
console.log(dato);
Node.js es un entorno en tiempo de ejecución multiplataforma, de código abierto, para la capa del servidor (pero no limitándose a ello) basado en el lenguaje de programación ECMAScript, asíncrono, con I/O de datos en una arquitectura orientada a eventos y basado en el motor V8 de Google. Fue creado con el enfoque de ser útil en la creación de programas de red altamente escalables, como por ejemplo, servidores web. Fue creado por Ryan Dahl en 2009 y su evolución está apadrinada por la empresa Joyent, que además tiene contratado a Dahl en plantilla - Wikipedia
Otra manera es posible
Puntos Fuertes
- Asincronía (no bloqueo)
- Backend completo
- NPM (comunidad)
- Single thread (paralelismo)
- Librerías propias
- Utilidades
- Código abierto
- Basado en el V8 (escrito en C++) de Google
- Multiplataforma
- Orientado a Eventos
- No se limita solo a servidores HTTP
Librerías interesantes
- Grunt
- Gulp
- Express
- Mongoose
- Socket.io
- Apache Cordova
- Async
- Chalk
- J5
- GraphicsMagick
- Marked
- Node-restify
- Webpack
- Morgan
- Nodemailer
- Passportjs
- Cheerio
- X-ray
- Bower
- PM2
- Electron
- Yeoman
- Babel
- Helmet
- Faker
- Protractor
- Nightwatch.js
- Cypress.io
- PHP
- Python
- Ruby
- Java
- etc...
- LAMP:
- Linux
- Apache
- MySQL
- PHP
- MEAN:
- MongoDB
- Express
- Angular
- Node
- JSON
- AJAX
- APIs Rest
- WEBSOCKET
- Platform as a service (PaaS)
- Programación funcional
- Test-driven development (TDD)
- Manifiesto por el Desarrollo Ágil de Software
- El estado del desarrollo Front-End en 2016 por Ashley Nolan
IO.js
io.js has merged with the Node.js project again. There won't be any further io.js releases. All of the features in io.js are available in Node.js v4 and above.
Dependencias, dependencias, dependencias... y más dependencias
module.exports = leftpad;
function leftpad (str, len, ch) {
str = String(str);
var i = -1;
if (!ch && ch !== 0) ch = ' ';
len = len - str.length;
while (++i < len) {
str = ch + str;
}
return str;
}
- How one developer just broke Node, Babel and thousands of projects in 11 lines of JavaScript
- A discussion about the breaking of the Internet
- I’ve Just Liberated My Modules
- Left-pad en GitHub
- Is left-pad Indicative of a Fragile JavaScript Ecosystem?
- Overcoming JavaScript Fatigue
- One developer just broke Node, Babel and thousands of projects in 11 lines of JavaScript
- How 17 Lines of Code Took Down Silicon Valley’s Hottest Startups
- Npm package author revokes his packages, breaking tons of builds
- ¿Y si el software Open Source desapareciera?
- El programador que borró 11 líneas de código y se cargó Internet
Event-Stream
La biblioteca Event-Stream es una herramienta para trabajar fácilmente con streams (flujos de datos), que tiene alrededor de dos millones de descargas semanales.
Dicha biblioteca fue creada y mantenida en un principio por Dominic Tarr. Eventualmente, el desarrollo pasó a manos de un usuario llamado right9ctrl.
El código malicioso fue añadido en la version 3.3.6 de la biblioteca, publicada el 9 de septiembre. Desde entonces ha sido descargada por unos 8 millones de usuarios. Sin embargo, el código malicioso no ha salido a la luz hasta principios de la semana pasada.
Junto con la versión 3.3.6 de la biblioteca Event-Streamer, el desarrollador malicioso incluyó una nueva dependencia llamada Flatmap-Stream, que es la que contenía el código malicioso.
Dado que el código del módulo Flatmap-Stream estaba cifrado, su comportamiento pasó inadvertido por la comunidad más de dos meses, hasta que un estudiante de la Universidad Estatal de California encontró el problema y así lo hizo constar en un issue de Github.
Después de analizar el código ofuscado, se constató que el módulo Flatmap-Stream se había diseñado específicamente pensando en el robo de Bitcoins de los usuarios de la aplicación móvil Copay, que hace uso de esta misma biblioteca, para transferirlos a un servidor en Kuala Lumpur.
Copay es un monedero de Bitcoin y Bitcoin Cash en software libre desarrollado por Bitpay. Ésta última compañía, ha publicado un aviso indicando que las versiones de Copay desde la 5.0.2 hasta la 5.1.0 están afectadas por la biblioteca maliciosa. También indican que los usuarios de Bitpay no están afectados por este problema.
- dominictarr/event-stream | #116 I don't know what to say
- Malicious code in npm ‘event-stream’ package targets a bitcoin wallet and causes 8 million downloads in two months
- Widely used open source software contained bitcoin-stealing backdoor
- Importante módulo de NodeJS infectado para robar Bitcoins
- Malicious code found in npm package event-stream downloaded 8 million times in the past 2.5 months
- Compromised npm Package: event-stream
Cambios, cambios... y más cambios
- State of the Art JavaScript in 2016
- If Loving Computers is Wrong, I Don't Want to Be Right
- Keeping Up and "Just In Time" Learning
The Magpie Developer
The Sad State of Web Development
- El estado del desarrollo Front-End en 2015 por Ashley Nolan
- The Sad State of Web Development
- A response to The Sad State of Web Development — Its not about Javascript really
Fatiga y tendencias
- A Study Plan To Cure JavaScript Fatigue
- Top JavaScript Frameworks & Topics to Learn in 2017
- How it feels to learn JavaScript in 2016
- State of the Art JavaScript in 2016
- JavaScript Fatigue Fatigue
- Want to learn JavaScript ?
- The Two Pillars of JavaScript
- 12 Books Every JavaScript Developer Should Read
- Javascript Fatigue
- Modern JavaScript for Ancient Web Developers
- Functional Programming for JavaScript People
- A Beginner’s JavaScript Study Plan
- Chrome Dev Tools
- Can I use
- EsLint
- JSHint
- Editores
- MDN - HTML
- MDN - CSS
- MDN - JS
- devdocs - JS
- devdocs - CSS
- Nodejs Docs
- devdocs - Nodejs
- Standard ECMA-262
- Modern JavaScript Cheatsheet
Características estrella
- Code together in real time
- Share your IDE, your workspace, a preview, or your running app
- Replay all edits and see your code at any point in time
Otras características
- Preview in any browser
- Built-In Terminal
- Language Tools
- Debugger
- Split View
- Themes
- Run Panel
- Key Bindings Editor
- VIM/Emacs/Sublime Mode
- Built-In Image Editor
Más
- JavaScript, ¡Inspírate!
- Eloquent JavaScript de Marijn Haverbeke
- JavaScript: The Good Parts de Douglas Crockford
- JavaScript Patterns de Stoyan Stefanov
- JavaScript Ninja de John Resig y Bear Bibeault (español)
- JavaScript. La Guía Definitiva de David Flanagan
- Código Limpio: Manual de estilo para el desarrollo ágil de software de Robert C. Martin (español)
- Sams Teach Yourself Node.js in 24 Hours de George Ornbo
- Node.js de George Ornbo (Español)
- Learning JavaScript Design Pattern de Addy Osmani
- You Don't Know Js (6 Book Series) de Kyle Simpson
Otros/Inspiracionales
- "Code Stars" - Short Film
- The Code: Story of Linux documentary
- Free software, free society: Richard Stallman at TEDxGeneva 2014
- Project Code Rush - The Beginnings of Netscape / Mozilla Documentary
- The Internet's Own Boy: The Story of Aaron Swartz
- Massimo Banzi: How Arduino is open-sourcing imagination | TED
- Linus Torvals: The mind behind Linux | TED
- William Kamkwamba: How I built a windmill | TED
- Pia Mancini: How to upgrade democracy for the Internet era | TED
- Christopher "Moot" Poole: The case for anonymity online | TED
- Pranav Mistry: The thrilling potential of SixthSense technology | TED
- Steve Jobs: How to live before you die | TED
- Thomas Suarez: A 12-year-old app developer | TED
- Johnny Lee: Free or cheap Wii Remote hacks | TED
- Temple Grandin: The world needs all kinds of minds | TED
- Neil Harbisson: I listen to color | TED
- Mitch Resnick: Let's teach kids to code | TED
- Tim Berners-Lee: The year open data went worldwide | TED
- Jimmy Wales: The birth of Wikipedia | TED
- Jennifer Pahlka: Coding a better government | TED
- Charles Leadbeater: The era of open innovation | TED
- Keren Elazari: hackers the internet's immune system | TED
- Mikko Hyponnen: Fighting viruses, defending the net | TED
- Misha Glenny: Hire the hackers! | TED
- Ralph Langner: Cracking Stuxnet, a 21st-century cyber weapon | TED
- Avi Rubin: All your devices can be hacked | TED
- Catherine Bracy: Why good hackers make good citizens | TED
- Todd Humphreys: How to fool a GPS | TED
- Guy-Philippe Goldstein: How cyberattacks threaten real-world peace | TED
- Marcin Jakubowski: Open-sourced blueprints for civilization | TED
- Michael Anti: Behind the Great Firewall of China | TED
- James Lyne: Everyday cybercrime — and what you can do about it | TED
- Lorrie Faith Cranor: What’s wrong with your pa$$w0rd? | TED
- Jay Silver: Hack a banana, make a keyboard! | TED
- Christopher Soghoian: How to avoid surveillance ... with the phone in your pocket | TED
- Jaron Lanier: How we need to remake the internet | TED
- Roger McNamee: 6 ways to save the internet | TED
- Nicholas Negroponte: Taking OLPC to Colombia | TED
- How the mysterious dark net is going mainstream | Jamie Bartlett | TED
CSS
- CSSconf EU 2017 | Guil Hernandez: Get Ready for the Future of CSS!
- Writing Efficient CSS - JSOxford
- CSS Grid Changes Everything (About Web Layouts) - talk by Morten Rand-Hendriksen
- Chen Hui Jing: How I Learn To CSS - CSSConf.Asia 2016
- CSSconf EU 2014 | Addy Osmani: CSS Performance Tooling
- CSSconf EU 2015 | Lea Verou: The Missing Slice
- CSSconf EU 2014 | Mathias Bynens: 3.14 Things I Didn't Know About CSS
JS
- Douglas Crockford: The JavaScript Programming Language
- What the... JavaScript?
- Making Badass Developers - Kathy Sierra (Serious Pony) keynote
- The myth of the “Real JavaScript Developer” – Brenna O'Brien / Front-Trends 2016
- Computer, build me an app - Rich Harris - JSConf EU 2018
Listados
- Ashley Williams (@ag_dubs)
- Lea Verou (@LeaVerou)
- John Resig (@jeresig)
- Paul Irish (@paul_irish)
- Karolina Szczur (@fox)
- Addy Osmani (@addyosmani)
- David Walsh (@davidwalshblog)
- Mathias Bynens (@mathias)
- Felix Geisendorfer (@felixge)
- Natalie MacLees (@nataliemac)
- Sindre Sorhus (@sindresorhus)
- Ben Nadel (@BenNadel)
- Rebecca Murphey (@rmurphey)
- Chris Heilmann (@codepo8)
- Sarah Mei (@sarahmei)
- Brendan Eich(@BrendanEich)
- Axel Rauschmayer (@rauschma)
- Kyle Simpson (@getify)
- Rachel Andrew (@rachelandrew)
- JavaScript Daily (@JavaScriptDaily)
- Dan Abramov (@dan_abramov)
- Evan You (@youyuxi)
- Sarah Drasner (@sarah_edo)
- Jen Simmons (@jensimmons)
- CSS Tricks (@Real_CSS_Tricks)
- Free Code Camp (@FreeCodeCamp)
Listados
- 42 JavaScript experts to follow on Twitter
- 9 Influential JavaScript Developers You Should Follow
- 33 Developers you MUST Subscribe to as a JavaScript Junkie
- 20 Developers to Follow on Twitter
- 25 JS Developers You Must Follow On Twitter
- Reddit - JavaScript
- Ponyfoo
- Ben Nadel
- David Wash
- Dailyjs
- Sitepoint
- Javascript.com
- Brendan Eich
- JavaScript Playground
- Superhero.js
- JavaScript Jabber
- Smashing Magazine
- Web Fundamentals, antes HTML5 Rocks!
Medium
- Medium | Javascript
- Medium | Programming
- Medium | Technology
- Medium | Learning to code
- Medium | Nodejs
- Medium | Expressjs
- Medium | NPM
- Medium | API
- Medium | CSS
- Medium | Frontend development
- Medium | Software development
- Medium | Web development
- Medium | Code
- Medium | Coding
- Medium | Cybersecurity
- Medium | Hacking
- Medium | Security
- Google Developers
- The Coding Train
- Fun Fun Function
- The Net Ninja
- JSConf
- Coding Tech
- FreeCodeCamp
- bnb/awesome-developer-streams
- Open Source Weekends
- PyLadies Madrid
- Makespace Madrid
- Codenares
- HackMadrid %27
- Madrid Haskell Users Group
- RLadies Madrid
- Madrid Tech Alliance
- Rust Madrid
- GDG Madrid
- BetaBeers eventos
- Betabeers
- MadridJS
- Nodejs
- WordPress Madrid
- Hackathon Todos Incluidos
- Girls in Tech Spain
- Madriagil
- Hackathon Lovers
- HTML5 Spain
- API Addicts
- ReactMad
- Edupreneurs Madrid
- TypeScript Madrid
- IoT Madrid
-
- Alto nivel de abstracción para el usuario final
- Soporte como aplicación de terminal con Vorpal
- Generación dinámica de scripts en varios lenguajes (JS, Python, etc...)
- Gestión de procesos hijos de forma nativa
- Instalación global como módulo de NPM
-
- Aislamiento del core para mejorar la portabilidad usando patrones
- XMPP Protocolo
- Soporte de operaciones en terminal
- Soporte para la instalación como dependencia de NPM
- Extensión de por API interna
- Incorporación de servicios externos como Alchemy (Inteligencia Artificial como servicio)
- Gestión de la asincronía
- Array de objetos
- Gestión de notificación y ayuda al usuario
- Detección de eventos de Error y cierre del sistema
-
- Orientado a nuevos programadores
- Pseudocódigo funcional
- Alto nivel de abstracción
- Isomórfico
-
- Base de datos reactiva
- Almacenamiento Asíncrono
- Patrones de diseño (Namespace, Façade, etc...)
- Ambush Functions, funciones Lambda a demanda
- Soporte a Eventos
-
- Orientado a IOT
- Comunciación I2C
- Movimiento controlado por WebSockets
- Renderización en cliente de VR usando three.js
- Stream de vídeo bajo demanda frame a frame
- Uso del sintetizador de voz nativo de Chrome
- Gestión de redes sociales
-
- Orientado a la gestión de redes sociales
- Escucha activamente conversaciones en Google Hangouts
- Envía mensajes en Google Hangouts
- Envía mensajes en Slack
- Envía mensajes al azar clasificados por prioridad en Slack
- Envía mensajes de Error y estado al administrador en Goolgle Hangouts
- Puede ser desplegado en multiples entornos (Raspbian, Linux, OSX, Windows, C9...)
- Permite desplegar multiples avatares y personalidades desde la configuración para comunicarse en Slack
-
- Proyecto BioTecnológico
- Analiza ADN
- Permite buscar dentro del ADN ciertos patrones
- No almacena datos
- Futura migración a aplicación de escritorio
- Formulario para realizar nuevas queries (desarrollo) sin tener que programar
-
- Librería de utilidades para JavaScript
- Utiliza los mejores métodos de librerias extendidas como Lodash o Underscore
- Añade estos métodos a nuestro JavaScript mediante prototype
-
- Permite crear nuevas playlist
- Fusiona canciones de diversas playlist
- Permite juntar tus mejores canciones con las mejores canciones de otro amigo
- Social Login integrado
-
- Orientado a IOT
- Comunicación Serial
- Gestión de dispositivos externos
- No necesita HTTP
-
Raspi - System Info to Firebase
- Partiendo de otro repositorio/proyecto.
- Monitorización del sistema
- Uso de comandos de terminal
- Gestión de procesos inestables
- Integración con soluciones No-backend
- Tiempo Real
- No necesita HTTP
-
- Partiendo de otro repositorio/proyecto.
- APIs de terceros
- Stream directo de datos
- Servidor Http
- Tiempo Real y sincronía con WebSockets
- Eventos
- Evaluación semántica de la información
- Sin Bases de datos
-
- Integración con soluciones No-Backend
- FrontEnd con Jade
- BackEnd Flexible y dinámico
- APIRest Cliente -> Servidor
- BackEnd con Express
- CORS y Ajax
-
- Arquitectura alternativa en versiones anteriores
- Conversión y parseo a Json
- Procesamiento de datos en bruto
- APIRest
- Operaciones cíclicas gestionadas por Pillarsjs
- FrontEnd con Jade
- BackEnd con Express
- Documentación con JSDocs
-
- Evolución de Aire Madrid
- Scraping
- Fuentes de datos Alternativas
- Backend con Pillarsjs
- Frontend con Angularjs
- Permanencia de datos con GoblinDB
-
- Manejo de comunicación serial
- Eventos y asincronía
- IoT
-
- APIs de terceros
- Stream directo de datos
- Servidor Http
- Tiempo Real y sincronía con WebSockets
- Automatización con Slack y Hangouts
Bienvenidos a la maquina del tiempo
- Arquitectura de Árbol(working area, staging Area, Repository)
- Auditoria de código (quien? cuando? y que?)
- Git trabaja en binario (imagenes, docs, etc...)
- Git no guarda una copia de cada version, solo los cambios.
- Distribución (Repositorios y Clones)
- Opensource y funciona offline
- Consola vs. GUI
Trabajo efectivo
- Clientes escritorio
- Consola (Cheat-sheet)
- Repositorio
- Tracking
- Commits
- Sincronizar cambios
- Ramas
- Fork
- Clonación
- Pull-request
- Gestión de merges
- Público/Privado
Working Flow
Instalación
Instalamos Git - Source Code Management
Comprobamos la instalación
git --version
Bienvenidos a la maquina del tiempo
- Arquitectura de Árbol(working area, staging Area, Repository)
- Auditoria de código (quien? cuando? y que?)
- Git trabaja en binario (imagenes, docs, etc...)
- Git no guarda una copia de cada version, solo los cambios.
- Distribución (Repositorios y Clones)
- Opensource y funciona offline
- Consola vs. GUI
Trabajando en Local
Configuración (entornos):
Repositorios locales y remotos
-
System (todos los usuarios)
- git config --system
- etc/gitconfig, /usr/local/git/etc/gitconfig
-
Global (mi usuario)
- git config --global
- .gitconfig (usuario/root)
-
Project (proyecto)
- git config
- /proyect/.git/config
Comandos básicos
versión
git --version
Grabando Nombre
git config --global user.name "nombre"
Comprobando el nombre
git config --global user.name
Grabando Email
git config --global user.email "email"
Habilitando colores
git config --global color.ui true
Ver usuarios en el equipo
git config --global --list
GIT Working flow (local) - Básico
-
help (ayuda)
- Ayuda general
git config --global --list
- Ayuda especifica
git help push
- Salir de la ayuda
q (quit)
-
init (arranque)
- Buscamos la carpeta (ls, dir...)
- Arrancando Git
git init
-
status
- Verificar estado
git status
-
add
- Añadiendo todo
git add -A
- Añadiendo todo (como add -A, pero omite los archivos fuera de track)
git add .
- Añadiendo un archivo especifico
git add loquesea
-
commit
- Comentando el commit
git commit -m "Mi primer commit"
-
log
- Verificando el estado de los commits
git log
-
reset (Reseteamos el proyecto hasta un punto dado (SIN RETORNO!))
- No afecta al working area ni al Stagging Area, solo al repositorio
git reset --soft NUMEROCOMMIT
- No afecta al working area
git reset --mixed NUMEROCOMMIT
- Afecta a todos los niveles incluido el working area
git reset --hard NUMEROCOMMIT
-
En caso de necesitar recuperación. Haz un reset --hard hacia delante, con el número del útimo commit.
git reset --hard ULTIMOCOMMIT
-
Devolver un archivo de staging a working area
git reset HEAD nombrearchivo
GIT Working flow (local) - Viajar en el tiempo
-
log
- Hacemos una copia de seguridad de nuestros commits.
git log > miscommits.txt
-
checkout
- Abrimos la maquina de tiempo
git checkout NUMEROCOMMIT
- Volvemos a Master
git checkout master
GIT Working flow (local) - Ramas (Branches)
Ramas (Universos Paralelos) Línea master -> linea estable o principal. Lineas secundarias -> lineas de desarrollo, bugs, experimentos, etc...
-
branch
- Crear una rama
git branch NOMBRERAMA
- Ver ramas
git branch
- Cambiar de rama
git checkout NOMBRERAMA
- Ver cambios en formato ramas
git log --oneline --graph --all
- Borrar una rama
git branch -d NOMBRERAMA
GIT Working flow (local) - Fusiones (básico)
-
Nos situamos en la rama que absorberá (principal)
git checkout RAMAPRINCIAL
-
Hacemos el merge
git merge RAMASECUNDARIA
-
Añadir comentario (o)
-
Guardar y salir (:x)
-
Ramas fusionadas
git branch
-
Borramos rama
git branch -d NOMBRERAMA
GIT Working flow (local) - Fusiones (gestión conflictos)
-
Fast-forward (automatizado). No hay conflicto alguno.
- Nos situamos en la rama que absorberá (principal)
git checkout RAMAPRINCIAL
- Hacemos el MERGE
git merge RAMASECUNDARIA
-
Añadir comentario (o)
-
Guardar y salir (:x)
-
Manual Merge (Conflicto, dos personas tocaron los mismos archivos)
- Nos situamos en la rama que absorberá (principal)
git checkout RAMAPRINCIAL
- Hacemos el MERGE
git merge RAMASECUNDARIA
- En consola
Auto-merging CARPETA/ARCHIVO CONFLICT (content): Merge conflict in CARPETA/ARCHIVO Automatic merge failed; fix conflicts and then commit the result.
- En el editor
<<<<<<< HEAD hello world....!!!!!!! ======= hello world 2 ..!!! >>>>>>> conflictiva
- Resuelver y guardar
hello world 2 ..!!!
- Comprobamos el estado
git status
- commit para la resolución conflicto
git commit -am "con este commit se arregla el conflicto"
- Resultado
* 81a6c1d con este commit se arregla el conflicto |\ | * 64b5518 que pasa * | 29a6348 ahora conflcito..no |/ * afe16ae Todo arriba.. * 7c9cc50 Mi primer Commit
- Borramos la rama (opcional)
git branch -d NOMBRERAMA
GITHUB Working flow (básico)
-
clone
- Clonar un proyecto ( Bootstrap )
git clone https://github.com/twbs/bootstrap.git
-
log
- Mirar los commits
git log
GITHUB Working flow (Proyecto desde cero)
-
Creamos los ficheros
-
init
- monitorizamos los ficheros
git init
-
commit
- Añadimos los ficheros en un commit
git commit -am "Mi primer proyecto"
-
remote
- Enlazamos con Github
git remote add origin <--HTTPoSSH-->
- Comprobamos los detalles
git remote -v
-
push
- Mandamos los cambios
git push origin master
GITHUB Working flow (Proyecto en equipo) El proceso es igual, pero es necesario mantenerse sincronizado.
-
fetch
- Actualizar origin/master (rama espejo en local)
git fetch origin
-
merge
- Fusionar master con origin/master
git merge origin/master
-
commit
- Preparamos un commit para subir un cambio a Github
git commit -am "Nuevo cambio"
-
push
- Subimos los cambios
git push origin master
GITHUB Working flow (Proyectos de terceros) Usamos 2 repositorios (ORIGINAL EXTERNO (upstream/master) -> CLON ORIGINAL (origin/master) -> CLON LOCAL)
-
remote
- Conectamos al fork (origin)
git remote add origin <--- HTTP --->
- Verificamos la conexión
git remote -v
- Conectamos al remoto (Upstream)
git remote add upstream HTTTPREPO-UPS
- Verificamos que tenemos dos enlaces (origin y upstream)
git remote -v
-
fetch
- Comprobamos cambios en origin
git fetch origin
- Comprobamos cambios con upstream
git fetch upstream
-
merge
- Fusionamos upstream con local para actualizarnos
git merge upstream/master
-
push
- Subimos cambios a origin
git push origin master
-
Subimos cambios al upstream (pull-request)
GITHUB Working flow (GitHub Pages Manual) GitHub Pages nos permite hacer una web estática para nuestro usuario o proyectos
-
clone
- Clonamos el repositorio
git rclone <-- URL.git -->
-
checkout --orphan
- Creamos una rama huérfana
git checkout --orphan gh-pages
-
rm
- Borramos todos los archivos del directorio
git rm --rf .
-
add
- Creamos nuestro index.html y lo añadimos
echo "Bienvenido a gh-pages" > index.html git add index.html
-
commit
- Preparamos un commit para subir el index a Github
git commit -am "Nuevo cambio"
-
push
- Subimos el cambio
git push origin gh-pages
GITHUB Avanzado (Trucos)
-
branch
- Renombrar rama
git branch -m NOMBRERAMA NOMBRERAMANUEVO
- Mostrando todas las ramas (incluido espejos)
git branch -a
-
add + commit
- am
git commit -am "Texto"
-
config
- Usando un alias
git config --global alias.NOMBREALIAS 'COMANDO' git config --global alias.buenlog 'log --oneline --graph --all' git buenlog
-
pull
- fecht + merge
git pull
-
diff
- Ver lo que has modificado pero aún no has preparado
git diff
- Ver los cambios que has preparado y que irán en tu próxima confirmación
git diff --cached
Escenarios básicos:
Quiero subir algo a Github
- Verificamos el estado en general.
git status
- Nos actualizamos.
git pull
- Preparamos nuestro commit (añadimos archivos y añadimos la información adicional)
git add "ARCHIVO"
git commit -m "MENSAJE..."
- Actualizamos y enviamos los cambios a Github
git pull && git push
No quiero subir nada a Github, pero quiero estar actualizado
- Nos actualizamos.
git pull
Trucos:
- Para cachear las credenciales y evitar que nos pida usuario y contraseña constantemente:
git config --global credential.helper 'cache --timeout=9999999'
Git cacheará la sesión y no os preguntará el usuario o la password durante 9999999ms (2,7h), o el tiempo que pidamos. Recuerda que debes incluir este comando antes de tu próximo git push
- Git Awards
- Documentación
- https://api.github.com/users/{user}
- https://api.github.com/users/{user}/orgs
- https://api.github.com/users/{user}/events
- https://api.github.com/users/{user}/repos
- https://api.github.com/repos/{user}/{repo}
- Con la compra de GitHub, Microsoft hace honor a su mantra: desarrolladores, desarrolladores, desarrolladores
- Confirmado: Microsoft compra GitHub por 7.500 millones de dólares
- El nuevo CEO de GitHub responde a los usuarios en Reddit: "La vieja Microsoft tenía miedo del open source"
- Ante la paranoia, Microsoft promete que GitHub se mantendrá independiente y abierto
- What I think is bad about Microsoft acquiring GitHub
- Microsoft acquiring GitHub is a good thing. Here’s why.
- Microsoft has reportedly acquired GitHub. Good or bad?
- What is wrong with Microsoft buying GitHub
- What Microsoft buying GitHub means to open-source software development
- Microsoft Buys GitHub and FOSS Fans Aren’t Happy
- Microsoft's Interest In Buying GitHub Draws Backlash From Developers
- Microsoft is buying GitHub, but will the open source world follow?
- How will Microsoft handle github's controversial code?
- Microsoft’s github deal is its latest shift from Windows
- GitHub vs. Bitbucket vs. GitLab vs. Coding
- The Key Differences : GitLab vs GitHub vs bitbucket
- GitHub vs. Bitbucket vs. GitLab
- GitHub vs. GitLab vs. Bitbucket: ¿Que repositorio elegir?
- The Key Differences : GitLab vs GitHub vs bitbucket
- GitHub vs. GitLab vs. Bitbucket: Which code repo should you choose?
Recursos
- Canal oficial de Youtube
- GitLab Web
- GitLab Web | Product
- GitLab Web | Pricing
- GitLab Web | Instalation
- GitLab Web | Community
- GitLab Web | Blog
- GitLab Web | Contact
- GitLab | Explore
- GitLab | Snippets
- GitLab | Groups
- GitLab Help
- GitLab Help | User Doc
Otros
- @gitlab en Twitter
- GitLab Videos | Inside GitLab
- GitLab Videos | Demos
- GitLab Videos | How-to
- GitLab en Wikipedia
- GitLab ahora ofrece sus planes de pago (de hasta 99 dólares al mes) completamente gratis para proyectos open source y escuelas
- Qué es GitLab y por qué tanta gente huye a él tras la compra de GitHub por parte de Microsoft
- GitLab, la alternativa a GitHub a la que están migrando los desarrolladores temerosos de Microsoft
Recursos
- @bitbucket en Twitter
- Bitbucket
- Bitbucket | Blog
- Bitbucket | API
- Bitbucket | Bitbucket Cloud documentation
- Bitbucket | Features
- Bitbucket | Plans & Pricing
Otros
- How to move private repositories from Github to Bitbucket
- Moving from GitHub to Bitbucket – Why and How
- Migrate all your private github repos to bitbucket because you're CHEAP.
- Trello Is Being Acquired By Atlassian
- Confessions of a Git wallflower, and other stories about Bitbucket
- 10 reasons why teams are switching from GitHub to Bitbucket after Microsoft acquisition
Ecosistema
- Trello
- Trello | Inspiration
- Trello | Guide
- Trello | Pricing
- Jira
- Jira | Features
- StatusPage
- Hipchat
- Bamboo
- Sourcetree
- Confluence
- Stride
1 - Creamos una cuenta en Github y creamos un workespace con referencia a nuestro repositorio de GitHub en c9.io una vez hayamos recibido la invitación.
2 - Sube tu código a GitHub
- Crea una carpeta en el repositorio con tu nombre.
- Una subcarpeta pública y otra privada
- Crea un archivo Hello Word usando Markdown
- Comparte la tu carpeta pública con todos nosotros en GitHub
2 - Crea un Gist con el esqueleto de un index.html
3 - Presentate en este issue