├── .gitignore
├── ALGORITMS
└── SORT
│ └── note.md
├── ARCHITECTURE
└── BASIC
│ └── note.md
├── BACK_END
├── API_REST
│ └── note.md
├── JAVA
│ └── TEST
│ │ └── note.md
├── JAVASCRIPT
│ └── ecmas6.md
├── NODE
│ └── note.md
├── REGULAR_EXPRESSIONS
│ └── note.md
└── micro_servicios
│ └── note.md
├── BD
├── BD
│ └── apuntes.md
├── BDBASIC
│ └── apuntes.md
├── BDNoSQL
│ └── notes.md
├── GRAPHQL
│ └── note.md
└── MONGO
│ └── note.md
├── CRECIMIENTO
├── ESTRATEGIAS
│ └── note.md
├── GESTIONTIEMPO
│ └── note.md
└── PRODUCTIVIDAD
│ └── note.md
├── English
├── B1
│ └── notes.md
├── B1Plus
│ └── note.md
├── Curso de Inglés Práctico: Gramática
│ └── note.md
└── note.md
├── FRONT_END
├── HTMLCSS
│ └── note.md
├── PREPROCESADORES
│ └── note.md
└── REACT
│ └── PWA
│ └── note.md
├── README.md
├── SERVER
├── AWS
│ └── note.md
├── DIGITALOCEAN
│ └── note.md
└── LINUX_SERVER
│ └── note.md
├── devops
├── Docker
│ └── note.md
├── note.md
└── swarm
│ └── note.md
└── requirements
└── notes.md
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
--------------------------------------------------------------------------------
/ALGORITMS/SORT/note.md:
--------------------------------------------------------------------------------
1 | # Algoritmos de ordenamiento
2 | Tanto en la computación como en matemáticas un algoritmo de ordenamiento es un algoritmo que pone los de una lista o un vector en una secuencia dada por una relación de orden.
3 |
4 | ## Bubble sort
5 | Ordenamiento de burbuja que funciona revisando cada elemento de la lista que va ser ordenado con el siguiente intercambiandolos si están en un orden equivocado.
6 |
7 | ```python
8 | def bubble_sort(A):
9 | size_array = len(A) # c0 = 1
10 |
11 | for index_i in range(size_array):# c1 = n
12 | swap = False # c2 = 1
13 | for index_j in range(0, size_array - index_i - 1): # c3 = n^2
14 | if A[index_j] > A[index_j + 1]: # c4 = 1
15 | A[index_j], A[index_j + 1] = A[index_j + 1], A[index_j] # c5 = 1
16 | swap = True # c6 = 1
17 |
18 | if not swap: # c7 = 1
19 | break
20 |
21 | if __name__ == "__main__":
22 | array = [2,78]
23 | bubble_sort(array)
24 |
25 | # T(n) = c0 + c1*n + c2 + c3*n + c4 + c5 + c6 + c7
26 | # T(n) = c3*n^2 + c1*n + c0 + c2 + + c4 + c5 + c6 + c7
27 | # T(n) = n^2 + n
28 | # T(n) = n^2
29 |
30 | # Time complexity = O(n^2)
31 | # Space complexity = O(1)
32 | ```
33 |
34 | ## Selection Sort
35 |
36 | Algoritmo que ordena una matriz al encontrar repetidamente el elemnto mínimo (Considerando el orden acsendente) de la parte no ordenada y lo pone al principio.
37 |
38 | El algortimo mantiene 2 sub arrays.
39 | * El array ordenado
40 | * El array restante que no esta desordenado.
41 |
42 | En cada iteración el elemento mínimo del arreglo desordenado se toma y se coloca el el sub array ordenado.
43 |
44 | Considere los siguientes pasos:
45 |
46 | Encontrar el elemnto mínimo y colocarlo al inicio.
47 | ```
48 | [64 25 12 22 11]
49 | [11 25 12 22 64]
50 | [11 12 22 25 64]
51 | ```
52 |
53 |
54 | ```python
55 | def selection_sort(A):
56 | size_array = len(A) # c0 = 1
57 | index_i = 0 # c1 = 1
58 |
59 | for index_i in range(size_array): # c2 = n
60 | low_index = index_i # c3 = 1
61 |
62 | for index_j in range(index_i + 1, size_array): # c4 = n^2
63 | if A[index_j] < A[low_index]: # c5 = 1
64 | low_index = index_j # c6 = 1
65 |
66 | A[index_i], A[low_index] = A[low_index], A[index_i] # c7 = 1
67 |
68 | if __name__ == "__main__":
69 | A = [200,10000,12,35,7,8,9,2,4]
70 | selection_sort(A)
71 |
72 | # T(n) = c0 + c1 + c2*n + c3 + c4*n^2 + c5 + c6 + c7
73 | # T(n) = c4*n^2 + c2*n + c0 + c1 + c3 + c5 + c6 + c7
74 | # T(n) = n^2 + n
75 | # T(n) = n^2
76 |
77 | # Time complexity = O(n^2)
78 | # Space complexity = O(1)
79 | ```
--------------------------------------------------------------------------------
/ARCHITECTURE/BASIC/note.md:
--------------------------------------------------------------------------------
1 | # Fundamentos de arquitectura de software
2 |
3 | ¿Cómo la arquitectura esta envuelata en el desarrollo de software?
4 |
5 | ## Proceso de desarrollo de software
6 |
7 | #### Etapas de proceso de desarrollo
8 | En el desarrollo de software tradicional tenía etapas muy marcadas donde la salida de una etapa representaba la entrada de otra.
9 |
10 | * Análisis de requerimiento: Todo surge a partir de un problema del cual debemos de entender cómo se debe de resolver, ahora en este problema pude existir requerimientos funcionales y no funcionales.
11 | * Diseño de la solución: Análisis profundo del problema del cual debemos obtener las posibles soluciones bien detalladas utilizando modelos.
12 | * Desarrollo y evolución: Implementación de la solución y evaluar el funcionamiento de este, al final tendremos un producto u artefacto de software.
13 | * Despliegue: Se necesita de infraestructura para poder poner el producto en linea, por ejemplo servidores web, balanceadores.
14 | * Mantenimiento y evolución: Desarrollo + Despliegue + Mantenimiento, esta etapa se mantienen hasta que el producto deja de ser necesario.
15 |
16 | #### Dificultades en el desarrollo de software
17 | En la etapa de análisis y diseño nos concentramos en los problemas que queremos resolver, estos problemas de dividen en 2 grandes tipos de problemas, esenciales y accidentales.
18 |
19 | Los problemas esenciales se dividen en 4, que tratan sobre entender el concepto que vamos a resolver:
20 | * Complejidad: Cuando el problema es complejo.
21 | * Conformidad: En qué contexto se va a utilizar.
22 | * Tolerancia al cambio: Va a poder cambiarse y si podemos adaptarnos a los cambios.
23 | * Invisibilidad: El software no es tangible ya que su forma esta plasmada en código.
24 |
25 | * Problemas Accidentales: esta basada prácticamente en la infraestructura a utilizar por ejemplo tecnologías, lenguajes, frameworks etc.
26 |
27 | * Lenguajes de alto nivel
28 | * Multi-procesamiento
29 | * Entornos de programación
30 |
31 | *No hay un proceso que pueda solucionar un problema esencial*
32 |
33 | * Si la solución es muy compleja, tal vez la opción es no desarrollar y mejor comprar software.
34 | * No desarrollar, Aprovechar Open source: utilizar módulos ya desarrollados y personalizar.
35 | * Metodologías ágiles, la idea es obtener feedback muy rápido. Se obtiene un prototipo rápido: la idea es obtener feedback de forma muy rápido para saber si estamos solucionando el problema.
36 | * Desarrollo evolutivo: en donde a partir de un producto pequeño podemos iterarlo para obtener algo más complejo.
37 | * Grandes diseñadores: Diseñar un problema con gran calidad.
38 |
39 | #### Roles
40 | Es importante diferenciar del ROL y puesto de trabajo ya que hay roles que pueden ser desarrolladas por la misma persona.
41 |
42 | * Experto del dominio: Experto en el negocio que nos ayuda a entender el problema a resolver, stakeholders en las metodologías ágiles.
43 | * Administrador de sistemas DEV OPS: Rol de operaciones y desarrollo, SRE (Site Reability, Enginier).
44 | * Equipo de desarrollo: QA, Testing, Desarrolladores, Arquitectos todos los involucrados en el desarrollo
45 | * Gestor de proyecto facilitador: Lleva al equipo para el desarrollo en proceso iterativo.
46 |
47 |
48 | ## Introducción a la arquitectura de software
49 | #### ¿Qué es la arquitectura de software?
50 | * La estructura del sistema esta compuesta por elementos de software, sus propiedades visibles y sus relaciones (Bass, Clemment, Kazman 2003).
51 | * Conjunto de desiciones (Theory and Practice 2010).
52 | * Cualquier cosa importante (Fowler 2002).
53 |
54 | #### Importancia de la comunicación Ley de Conway
55 | Cualquier organización que diseña un sistema producirá un diseño cuya estructura es una copia de la estructura de comunicación de la organización.
56 |
57 | #### Objetivos del arquitecto
58 | El arquitecto conecta a todos los stakeholder con el sistema a construir, analizando los requeriemientos de los stakeholder.
59 | * Cliente: Entregas, respetando tiempos de entrega y costos
60 | * Manager: Cumplir con requerimientos del cliente, crear equipos de trabajo auto gestionables.
61 | * DEV: Que se sea fácil de desarrollar y mantener.
62 | * Usuario: Que el producto cumpla con el objetivo.
63 | * Tester QA: Que el producto sea sencillo de probar.
64 |
65 | El arquitecto es el encargado de tomar las decisiones para que el impacto del diseño sea agradable para todos los involucrados.
66 |
67 | #### Arquitectura y metodologias
68 | Metodología tradicional: diseñar solución a gran escala.
69 | Metodología ágil: emerge de un equipo autogestionado.
70 |
71 | ## Análisis de requerimientos
72 |
73 | #### Entender el problema
74 | Comprender el problema, lo importante es separar la comprensión de la propuesta de solución y debemos evitar mezclarlo con la parte tecnológica, esto no debe de influir en la propuesta de solución.
75 |
76 | Se debe de separar en espacio del problema y espacio de la solución.
77 |
78 | Espacio del problema: saber lo que voy a resolver sin entrar en el cómo.
79 | * Idea
80 | * Criterios de de éxito
81 | * Historias de usuarios
82 |
83 | Espacio de la solución: Entra en el detalle del como "detalles técnicos".
84 | * Diseño
85 | * Desarrollo
86 | * Evaluación
87 | * Criterios de aceptación
88 | * Despliegue
89 |
90 | #### Requerimientos
91 | Una vez comprendido el espacio del problema y de solución vamos a la parte del requerimiento.
92 |
93 | Requerimiento de Producto: ¿Qué es lo que el producto necesita?.
94 | Requerimiento de producto se divide en 3:
95 | * Capa de negocio: Reglas de negocio que alimentan a los requerimientos. [Requerimientos de negocio, Reglas de negocio]
96 | * Capa de usuario: Tiene que ver como el usuario se desenvuelve utilizando el sistema.[Requerimientos de usuario, Atributos de calidad, Requerimientos No funcionales]
97 | * Capa funcional: Requerimientos del sistema, ¿Qué cosa tiene operativamente? Restricciones operativas.[Requerimientos de sistema, Requerimientos Funcionales, Restricciones]
98 |
99 | Requerimientos de producto:
100 | Funcionales: Historias de usuarios, hablan específicamente de lo que hace el sistema, cómo el sistema responde a un estimulo.
101 | No funcionales: Son los que agregan cualidades al sistema, por ejemplo que él login sea más seguro, en este caso se agrega una cualidad. Crear reportes en tiempo real pueda considerarse como no funcionales.
102 |
103 | Los requerimientos significativos engloban todos aquellos que afecte a hora de diseñar.
104 |
105 | Requerimientos de proyectos: Fechas de entrega, planes
106 | Requerimientos de proyecto: Tiene que ver con el rol de gestor de proyecto:
107 | * Recursos
108 | * Capacitación
109 | * Certificaciones
110 | * Documentos de usuarios
111 | * Infraestructura
112 | * Licencias
113 | * Plan de despliegue
114 | * Plan de transiciones
115 | * Infraestructura
116 |
117 | #### Riesgos
118 | Es importante identificar los riesgos y plantear los posibles escenarios en caso de que estos sucedan con el objetivo de asegurar las soluciones arquitectónicas.
119 |
120 | Se pueden identificar:
121 | * En la toma de requerimientos: dificultad/ complejidad
122 | * En los atributos de calidad: Incertidumbre, en cuanto más incertidumbre más alto el riesgo.
123 | * Conocimiento del dominio: Riesgo genérico: aquellos que se pueden atacar de forma estándar.
124 |
125 | una vez identificados se debe de priorizar, recuerde que no se debe priorizar todos, si no aquellos que pongan en riesgo a la propuesta de solución.
126 |
127 | #### Restricciones
128 | Restricciones que limitan las opciones del sistema tanto de diseño y desarrollo.
129 |
130 | * Los stakeholders son los que dan las restricciones, "Reglas de negocios".
131 | * La integración con otros sistemas "Restricciones técnicas".
132 | * Ciclo de vida del producto "Preciso de evolución de producto".
133 |
134 | El arquitecto debe de balancear entre requerimientos y restricciones.
135 |
136 | Realizar reto de App.
137 |
138 | ## Estilos de arquitectura
139 | Es algo genérico que se puede reutilizar para resolver un problema en especifico.
140 |
141 | Colecciones de decisiones de diseño aplicados en un contexto determinado esperando tener el éxito que sé obtuvo anteriormente.
142 |
143 | El panorama arquitectónico.
144 | Puede estar implícito dentro de una tecnología.
145 | Se debe de balancear beneficios y contras de cada arquitectura.
146 |
147 | #### Llamado y retorno
148 | Cada uno de los componentes hace invocaciones a los componentes externos y estos retornan información.
149 |
150 | Cada llamado espera una respuesta.
151 |
152 | * Programa y subrutinas: Instrucciones secuenciales que el programa ejecuta una por una.
153 |
154 | * Orientada a objetos: Se utiliza en sistemas que sabemos vamos a utilizar por mucho tiempo. En este caso la abstracción ya no es una subrutina, ahora tenemos objectos que se hacen llamados entre sí y esperan respuesta.
155 |
156 | Arquitectura de multinivel.
157 | Un ejemplo es la arquitectura **Cliente servidor**.
158 |
159 | #### Flujo de datos
160 | En este caso no nos preocupamos tanto por la secuencia de ejecución sino por los datos que van a ir de un lugar a otro.
161 |
162 | * Lote secuencial: Procesar algo y que cuesta ser procesado, por ejemplo un reporte.
163 |
164 | * Flujo de datos: Diferentes aplicaciones conectadas en tiempo real lo cual no dependen del usuario para ser ejecutados.
165 | Por ejemplo en los comando de linux que la salida de un comando puede ser la entrada de otro, como por ejemplo.
166 | ~~~
167 | grep | sed | grep | sed
168 | ~~~
169 |
170 | #### Centradas en datos
171 | Se tienen múltiples componentes cada uno tiene una función específica.
172 |
173 | * Pizarrón: Por ejemplo para realizar una tarea donde se necesitan varias partes involucradas donde es necesario que todas ellas se terminen para poder tener una salida.
174 |
175 | * Centrado en datos: Ejemplo común es cuando dos aplicaciones utiliza la misma base de datos, cualquiera de los componentes no se comunican entre sí pero si escriben en la base de datos.
176 |
177 | * Sistema experto o etilo basado en reglas: Algún componente de tipo cliente va comunicarse con otro que va tratar de inferir las reglas y determinar si es una regla o una consulta, posteriormente consulta a una base de conocimiento.
178 |
179 | Concentración de cómo hacer o guardar algo.
180 |
181 | #### Componentes independientes
182 | Existen dos grupos de componentes.
183 | Cada aplicación se desarrollan por separados desacoplados
184 | * Invocación implícita: pueden mandarse mensajes entre si sin saber quién los esta mandando llamar.
185 | * basados en eventos
186 | * Publicar - Suscribir
187 | * Orientado a servicios 2.0: Se tiene un bus inteligente que sabe que hacer, **Enterprise Service Bus E.S.B**.
188 |
189 |
190 | * Invocación explicita: Desarrollar componentes que se conocen entre si pero están desacoplados.
191 | * Orientado a servicios 1.0
192 |
193 | #### Comparar estilos
194 | * Estilo monolítico: donde se despliega un solo artefacto.
195 | * Eficiencia, puede ser optimizado, fáciles de probar.
196 | * Curva de aprendizaje: Es más fácil comprender de que como se construye.
197 | * Capacidad de prueba: Más fácil de realizar test completos ya que todos los módulos se encuentran juntos.
198 | * Capacidad de modificación: Más fácil de integrar nuevos módulos.
199 |
200 | * Estilo distribuido: donde se tienen despliegues diferentes pero se comunican entre si.
201 | * Modularidad: Cada producto se despliega por separado
202 | * Disponibilidad: Que su un producto no esta disponible no significa que todos lo estén.
203 | * Uso de recursos: Utiliza menos recursos ya no es tan grande.
204 | * Adaptabilidad:
205 |
206 | A partir de los riesgos restricciones y requerimientos podremos elegir una arquitectura de acuerdo a nuestro problema a solucionar.
207 |
--------------------------------------------------------------------------------
/BACK_END/API_REST/note.md:
--------------------------------------------------------------------------------
1 | # Api Rest
2 |
3 | #### ¿Qué es un API y para que sirve?
4 |
5 | API: Application Programming Interface, conjunto de reglas que definen como se van a comunicar dos aplicaciones, por ejemplo qué tipos de request y response se van a utilizar.
6 |
7 | En **POO** una API son todos los elemento públicos que están disponibles.
8 |
9 | ## Conocer conceptos principales de Rest
10 |
11 | #### ¿Qué es y cómo funciona el protocolo HTTP?
12 |
13 | HTTP: Hytpertext Transfer Protocol, conjunto de reglas en las que se van a comunicar dos entidades.
14 |
15 | Protocolo: conjunto de reglas.
16 |
17 | #### ¿Qué significa Rest?
18 |
19 | REST: Representational State Transfer o bien transferencia de estado representacional.
20 |
21 | API RESTful es una API diseñada con los conceptos de REST.
22 | * Recurso: todo dentro de una Api RESTFul debe ser un recurso.
23 | * URI: Todos los recursos se manipulan a partir de una URL (Identificadores Universales de Recursos).
24 | * Acction: todas las peticiones de un Api Rest debe de estar asociado con un verbo HTTP:
25 | * Get: para obtener recursos.
26 | * Post: para escribir un recurso.
27 | * Put: Para editar un recurso.
28 | * Delete: para eliminar un recurso.
29 |
30 | #### Métodos de autenticación
31 | #### HTTP
32 | * Mediante HTTP auth user, debe de ir en el encabezado authorization.
33 |
34 | #### HMAC
35 | * HMAC: (Hash Message Authorizarion Code) para lo cual se necesita 3 elementos, Basado en Hash de Mensajes:
36 | * Función hash: Difícil de romper y que sea conocida por el cliente y el servidor.
37 | * Clave Secreta: para corroborar el HASH
38 | * UID: Id de usuario será utilizado dentro del HASH junto con la clave secreta y el timestamp
39 |
40 | Es mucho más seguro que la autenticación vía HTTP.
41 |
42 | #### Acceso mediante Tokens
43 | Roles del servidores:
44 | * Uno se encarga de la autenticación.
45 | * Otro se encarga de desplegar los recursos del API.
46 |
47 | Flujo.
48 | * Petición para la solicitud de Token
49 | * El servidor devuelve token
50 | * El usuario hace una petición para pedir recurso.
51 | * El servidor con los recursos hace una petición al servidor de autenticación para verificar token sea valido.
52 | * Una vez verificado el token, el servidor devuelve los recursos al cliente.
53 |
54 |
55 | ## Manejo de Errores en servicio REST
56 |
57 | Para las respuestas con error se utilizaran los siguientes códigos:
58 | en los encabezados HTTP.
59 | * 400: Bad Request, que el servidor no puede procesar la petición.
60 | * 404: Not Found, el servidor no encuentra el recurso buscado.
61 | * 500 Invernal Error Server, la petición no se pudo procesar por un error en el servidor.
62 |
63 | ## Buenas prácticas
64 | * Utilizar sustantivos para nombrar los recursos.
65 | * Añadir los nombres en plural para las URLs
66 | * Las modificaciones se deben de hacer con su verbo HTTP correspondiente.
67 | * Para devolver recursos asociados se debe incorporar sub-recursos
68 | ~~~
69 | autos/1/choferes
70 | ~~~
71 | * Navegabilida vía vínculos
72 | * Cuando devuelva colecciones deben de ser filtrables, ordenables y paginables.
73 | * Versionar las api
74 | ~~~
75 | v1/autos/1/choferes
76 | ~~~
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/BACK_END/JAVA/TEST/note.md:
--------------------------------------------------------------------------------
1 | # Test
2 |
3 | Aportan muchos beneficos como por ejemplo comprobar los requerimientos, documentación y ayudan al diseño de la aplicación.
4 |
5 | #### Tipos de test
6 | * Test unitarios: prueba una clase.
7 | * Test de integración: como se integran varias funcionalidades.
8 | * Funcionales: funcionalidad del sistema.
9 | * Test de iniciación: test de todo el flujo.
10 | * Test de estres: comprabar que la aplicación soporta varias peticiones.
11 |
12 |
--------------------------------------------------------------------------------
/BACK_END/JAVASCRIPT/ecmas6.md:
--------------------------------------------------------------------------------
1 | # ECMAScript
2 |
3 | ECMAScript es la especificación del lenguaje por ECMA Internacional institución encargada de los estándares.
4 |
5 | ## ¿Qué se implemento en ES6?
6 | Nace en Junio del 2015
7 | * Default params y concatenación
8 | * LET y CONST, Multilinea, Spread Operator y Desestructuración
9 | * Arrow Functions, Promesas y Parámetros en objetos
10 | * Clases, Módulos y Generadores
11 | [Referencias](https://carlosazaustre.es/ecmascript6)
12 |
13 | #### Default params y concatenación
14 | ~~~js
15 | //es6 default values
16 | function newFunction2(name = 'Jose Luis', age = 30, country = 'México') {
17 | console.log(name, age, country);
18 | }
19 | ~~~
20 |
21 | ~~~js
22 | //Template literals
23 | let hello = 'Hello';
24 | let world = 'World';
25 |
26 | console.log(`${hello} ${world}`);
27 | ~~~
28 |
29 | #### LET y CONST, Multilinea, Spread Operator y Desestructuración
30 |
31 | ~~~js
32 | //es6
33 | let lorem = `Concatenar lieneas
34 | con salto de liena`;
35 |
36 | console.log(lorem);
37 | ~~~
38 |
39 | ~~~js
40 | //Desestructuración de elementos
41 | let person = {
42 | name: 'Jose luis',
43 | age: 30
44 | };
45 |
46 | let { name, age } = person;
47 |
48 | console.log(name, age);
49 | ~~~
50 |
51 | ~~~js
52 | //Spread operator
53 | let teamOne = ['Jose','Luis'];
54 | let teamTwo = ['Laura', 'Sandi'];
55 |
56 | let funcionTeam = [...teamOne, ...teamTwo];
57 |
58 | console.log(`Result: ${funcionTeam}`);
59 | Result: [ 'Jose', 'Luis', 'Laura', 'Sandi' ]
60 | ~~~
61 |
62 | ~~~js
63 | //var, let, const
64 | {
65 | var varVariable = 'global';
66 | }
67 |
68 | {
69 | let letVariable = 'global';
70 | const contant = 'Const Varible ';
71 | //Presenta erro debido que se declara
72 | //como constate por lo cúal no se le puede
73 | //reasignar nuevo valor
74 | contant = 'Const Varible ';
75 | }
76 |
77 | // Se tiene error debido a que existe en
78 | // bloque donde fue declarado.
79 | console.log(varVariable, letVariable);
80 | ~~~
81 |
82 | #### Arrow Functions, Promesas y Parámetros en objetos
83 |
84 | ~~~js
85 | //Párametros en objetos
86 | let name = 'Jose Luis';
87 | let age = 30;
88 |
89 | //es5
90 | let obj = {
91 | 'name': name,
92 | 'age': age
93 | }
94 |
95 | let obj2 = { name, age };
96 |
97 | console.log(obj);
98 | console.log(obj2);
99 | ~~~
100 |
101 | ~~~js
102 | // arrow function
103 | //
104 | let names = [
105 | {'name': 'Jose Luis'},
106 | {'name': 'Laura'},
107 | ];
108 |
109 | //Se pasa una fusión anónima
110 | name.map(function (item) {
111 | console.log(item.name);
112 | });
113 |
114 | //Se pasa una fusión anónima Arrow Function
115 | name.map(item => console.log(item.name));
116 |
117 | //Otra forma para declararlo
118 | const listName = (name, age) => {
119 | //body function
120 | };
121 |
122 | //Si en la función solo se realiza una operación
123 | const square = num => num * num;
124 | ~~~
125 |
126 | ~~~js
127 | //Promesas
128 |
129 | // Una Promise (promesa en castellano) es
130 | //un objeto que representa la terminación o el
131 | //fracaso eventual de una operación asíncrona
132 |
133 | //Utiliza dos callbacks resolve y reject
134 | //Cuando todo sale bien se ejecuta resolve de locontrario
135 | //reject
136 |
137 | const promise = (value) => {
138 | return new Promise((resolve, reject) => {
139 | if (value) {
140 | resolve('Todo bien');
141 | } else {
142 | reject('Algo salio mal');
143 | }
144 | });
145 | };
146 |
147 | promise(false)
148 | .then(result => console.log(result))
149 | .catch(error => console.error(error));
150 |
151 |
152 | //se ejecuta con .then y para capturar el error .catch
153 | //puede utilziar tambien async await para que esta
154 | //el comportamiento sea como una opearacón sincrona
155 | //para capturar el error utilizamos un bloque de try catch
156 |
157 | const executePromise = async(value) =>{
158 | try {
159 | let result = await promise(value);
160 | console.log(result);
161 | } catch (error) {
162 | console.error(error);
163 | }
164 | }
165 |
166 | executePromise(false);
167 | ~~~
168 |
169 | #### Clases, Módulos y Generadores
170 |
171 | ~~~js
172 | //Clases, Módulos y Generadores
173 |
174 | class Calculator {
175 | constructor(){
176 | this.a = 0;
177 | this.b = 2;
178 | }
179 |
180 | sum(a, b) {
181 | this.a = a;
182 | this.b = b;
183 | return this.a +this.b;
184 | }
185 | }
186 |
187 | const calc = new Calculator();
188 | console.log(calc.sum(2,3));
189 | ~~~
190 |
191 | ~~~js
192 | //Modulos
193 | //module.js
194 | const hello = () => {
195 | return 'Hello module';
196 | }
197 | export default hello;
198 |
199 | //index.js
200 | import hello from './module';
201 | hello();
202 | ~~~
203 |
204 | ~~~js
205 | //Generators
206 | // Función especial que retorna valores según la lógica implementada
207 | function* hello(){
208 | if(true){
209 | yield 'Hello';
210 | }
211 | if(true) {
212 | yield 'World'
213 | }
214 | }
215 |
216 | const generator = hello();
217 |
218 | console.log(generator.next().value);
219 | console.log(generator.next().value);
220 | console.log(generator.next().value);
221 | ~~~
222 |
223 | ## ¿Qué se implemento en ES7?
224 | Nace en Junio del 2016
225 |
226 | #### Método que permite include para arreglos y strings
227 | ~~~js
228 | let numbers = [1,2,3,4,5,6,7];
229 |
230 | if (numbers.includes(7)) {
231 | console.log('El 7 se encuentra')
232 | } else {
233 | console.log('El 7 se NO encuentra')
234 | }
235 | ~~~
236 |
237 | #### ¿Cómo elevar a la potencia.?
238 | ~~~js
239 | let base = 4;
240 | let exponenent = 3;
241 | let result = base ** exponenent;
242 |
243 | console.log('result: ',result);
244 | ~~~
245 |
246 | ## ¿Qué se implemento en ES8?
247 | Nace en Junio del 2017
248 | ~~~js
249 | const data = {
250 | front: 'Oscar',
251 | back: 'Isabel',
252 | desing: 'Ana',
253 | };
254 |
255 | //Crear una matriz
256 | const entries = Object.entries(data);
257 | ~~~
258 |
259 | ~~~js
260 | const data = {
261 | front: 'Oscar',
262 | back: 'Isabel',
263 | desing: 'Ana',
264 | };
265 |
266 | // Crear un array de string solo con los values.
267 | const values = Object.values(data);
268 | console.log(values);
269 | ~~~
270 |
271 | ~~~js
272 | // Agregar una número de caracteres al inicio
273 | const str = 'Hello';
274 | str.padStart(8,'Hi') //"Hi Hello"
275 | 'abc'.padStart(10); // " abc"
276 | 'abc'.padStart(10, "foo"); // "foofoofabc"
277 | 'abc'.padStart(6,"123465"); // "123abc"
278 |
279 |
280 | str.padEnd(8,'Hi') //"Hello Hi"
281 | 'abc'.padEnd(10); // "abc "
282 | 'abc'.padEnd(10, "foo"); // "fabcfoofoo"
283 | 'abc'.padEnd(6,"123465"); // "abc123"
284 | ~~~
285 |
286 |
287 | #### Async Away
288 |
289 | ~~~js
290 |
291 | const hello = () => {
292 | return new Promise((resolve, reject) => {
293 | (true) ? setTimeout(() => resolve('Hello Worls', 300))
294 | : reject(new Error());
295 | });
296 | };
297 |
298 | const helloAsync = async () => {
299 | try {
300 | const helloWorld = await hello();
301 | console.log(helloWorld);
302 | } catch (error) {
303 | console.error(error.message);
304 | }
305 | };
306 |
307 | helloAsync();
308 | ~~~
309 |
310 | ## ¿Qué se implemento en ES9?
311 | Se lanzo el Julio de 2018
312 |
313 | ~~~js
314 | //Operador de reposo
315 |
316 | const data = {
317 | front: 'Oscar',
318 | back: 'Isabel',
319 | desing: 'Ana',
320 | };
321 | let { desing, ...all} = data;
322 | console.log(desing, all); // Ana { front: 'Oscar', back: 'Isabel'}
323 | ~~~
324 |
325 | ~~~js
326 | // operador de propagación
327 | const obj1 = {
328 | name: 'Luis'
329 | }
330 |
331 | const obj2 = {
332 | ...obj1,
333 | country: 'MX'
334 | }
335 |
336 | console.log(obj2); //{name: 'Luis', country: 'MX'}
337 | ~~~
338 |
339 |
340 | ## ¿Qué se implemento en ES10?
341 | Se lanzo en Junio de 2019
342 | ~~~js
343 | // flat
344 | let array = [1,2,3,[1,2,3,[1,2,3]]]
345 |
346 | console.log(array.flat()); // se llama niveles
347 | console.log(array.flat(1)); // se llama niveles
348 | ~~~
349 |
350 | ~~~js
351 | //flatMap
352 | let array = [1,2,3,4]
353 | console.log(array.flatMap(values => [value, value * 2]));
354 | ~~~
355 |
356 | ~~~js
357 | //trimStart
358 | let hello = ' hello ';
359 |
360 | console.log(hello.trimStart());
361 | console.log(hello.trimEnd());
362 | ~~~
363 |
364 | ~~~js
365 | //optional error
366 |
367 | try {
368 |
369 | } catch {
370 | console.log(error);
371 | }
372 | ~~~
373 |
374 |
375 | ~~~js
376 | //optional error
377 |
378 | let entries = [["name","Luis"],["country", "MX"]];
379 |
380 | console.log(Object.formEntrie(entries));// { name: 'Luis', country: 'MX' }
381 | ~~~
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
--------------------------------------------------------------------------------
/BACK_END/NODE/note.md:
--------------------------------------------------------------------------------
1 | # Node
2 |
3 | #### Características
4 | * Entorno de ejecución fuera de un navegador.
5 | * Lenguaje concurrente.
6 | * MonoHilo.
7 | * Comunicación asyncrono
8 | * Motor V8 de google, convierte el lenguaje de java script a código maquina.
9 | * Funcionamiento basado en módulos.
10 | * Orientado a eventos lo que permite la programación de forma reactiva.
11 |
12 | #### EventLoop
13 | Bucle de eventos y la razón por la que JavaScript trabaja de forma asyncrona.
14 |
15 | * No se bloquea
16 | * Alta concurrencia.
17 |
18 | EventQUEUE -> Envia al event loop (Si es posible los resuelve en el momento si no lo manda a) -> ThreadPool
19 | ThreadPool por cada tarea crea un nuevo hilo en nuestro procesador y cundo termina lo manda alevent loop y este a queue.
20 |
21 |
22 | #### MonoHilo: Implicaciones de diseño de seguridad
23 | Si existe un error este detendrá todo el flujo de el programa ya que todo trabaja en el mismo hilo,
24 | razón por la que debemos de tener cuidado.
25 |
26 | #### Variables de entorno
27 | Variables que se definen en el servidor, para poder leer estas variables de con process.env.NOMBRE-VARIABLE.
28 |
29 | Process es un objeto que proporciona información y control sobre proceso actual de node, este simpre es global.
30 |
31 | #### Herramientas para ser más felices: Nodemon y PM2
32 | Nodemon crea una herrmienta que cada que hay cambio de forma automarica.
33 | PM2 para entorno de Producción, administración de procesos.
34 |
35 | #### CallBacks
36 | Como gestionar algo asyncrono.
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/BACK_END/REGULAR_EXPRESSIONS/note.md:
--------------------------------------------------------------------------------
1 | # Expreciones Regulares
2 |
3 | **.** : Encuentra todo lo que sea un carácter , menos salto de linea.
4 |
5 | **\***: Cero o más
6 |
7 | **\d** : Encuentra todos los dígitos.
8 |
9 | **\w**: All carachters
10 |
11 | **\s**: White spaces
12 |
13 | **[]**: Para crear clases
14 |
15 | **[0-6]**: Se busca un rango de dígitos.
16 |
17 | **[a-zA-Z]**: Se busca un rango de a hasta la z.
18 |
19 | **\\**: Este carácter que no ayuda a escapar caracteres reservados, por ejemplo **\\.** va a buscar el punto y no cualquier carácter.
20 |
21 | **\n**: Salto de linea
22 |
23 | **\***: Greedy Cero o muchos "todo"
24 | **+**: Uno o más
25 | **?**: Cero o uno
26 |
27 | **{0,}**: Contadores, dónde se tiene un rango de 0 hasta infinito si no se espesifica
28 |
29 | **(?)**: Delimitador que indica al patrón que encuentre las coincidencias de manera rápida (o greedy).
30 |
31 | **^**: Negación.
32 |
33 |
--------------------------------------------------------------------------------
/BACK_END/micro_servicios/note.md:
--------------------------------------------------------------------------------
1 | # Micro servicios.
2 |
3 | Es un enfoque de desarrollo basado en servicios, en vez de tener un monolito se tiene varios servicios independientes.
4 |
5 | ## Características
6 | * Autónomos
7 | * Expecializados
8 | * Registro y auto-descibrimiento de servicios
9 | * Escalado flexible
10 | * Tolerancia a fallos
11 | * Balanceo de carga
12 | * Configuración centralizada
13 | * Libertad de tecnologia
14 | * Agilidad, equipos más pequeños
15 | * Ciclo de desarrollo más cortos
16 | * Código reutilizable
17 |
18 | ## Micro servicios
19 | Son un conjunto de componentes pequeños y autónomos que colaboran entre si.
20 |
21 | Aplicación monolitica es la que hace todo.
22 |
23 | ### Características
24 | * Función única
25 | * Independientes: Los servicios no conocen las demas implementaciones.
26 | * Registro y auto-decubrimiento: desacoplado de la app.
27 | * Auto escalado y agilidad.
28 | * Confiabilidad y tolerancia a fallos: Hystrinx eviatr errores en cascada.
29 | * Balanceo de cargas: Districbución de cargas de forma equitatitava: Ribbon.
30 | * Configuración centralizada: Spring cloud config, git.
31 |
32 | ### Ventajas
33 | * Nueva tecnolía y adopción de procesos.
34 | * Reducción de costo
35 | * Ciclos de liberación más rapidos.
36 | * Equipos de desarrollo más pequeños.
37 |
38 | ## Implementación de Servicios.
39 | Si tenemos dos servicios que implementan la misma interface lo que podemos hacer es utilizar.
40 | * @Primary: Colocar esta anotación en el servicio pricipal.
41 | * @Qualifier(name = "serviceName")
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/BD/BD/apuntes.md:
--------------------------------------------------------------------------------
1 | # Base de datos
2 | Es un conjunto de datos con un mismo contexto que pueden ser convertidos en información.
3 |
4 | #### Base de datos relacionales y no relacionales
5 | Existen dos tipos de bases de datos, bases de datos relacionarles y no relacionarles.
6 |
7 |
8 | Ejemplos de Gestores para bases de datos Relacionales:
9 | - SqlServer
10 | - MySQL
11 | - Postgrestsql
12 | - MariaDB
13 | - Oracle
14 |
15 | Ejemplos de Gestores para bases de datos No Relacionales:
16 | - Casandra
17 | - Neo4j
18 | - MongoDB
19 | - Elasticsearch
20 |
21 | #### Servicios de base de datos
22 | Servicios de bases de datos se clasifican en dos tipos Auto Administradas y Administradas.
23 | - Auto Administradas: Base de datos instalada en el servidor en donde tu te encargas de todo el mantenimiento de la misma.
24 |
25 | - Administradas: Servicio contratado como por ejemplo Aws, Azure entre otros.
26 |
27 | #### Historia de las RBD
28 |
29 | Edgar Codd inventor de las RBD.
30 |
31 | Surgen de a necesidad de almacenar datos y en un principio se hacia en texto plano, fáciles de guardar pero difíciles de consultarlas.
32 |
33 | ##### Entidades y atributos.
34 |
35 | Una entidad es similar a un objeto (POO) y representa algo del mundo real y cuenta con atributos y por convención las entidades se nombran en plural.
36 |
37 | * Atributos compuestos son aquellos que tienen atributos ellos mismos.
38 | Atributos llaves son atributos que identifican a la entidad.
39 |
40 | * Entidades débiles: no pueden existir sin una entidad fuerte
41 |
42 | * Entidades débiles por identidad: No se distinguen entre si más que por la clave de su identidad.
43 |
44 | * Entidades débiles por existencia: Se les asigna una clave propia.
45 |
46 |
47 | ##### Relaciones
48 | Las relaciones nos permiten unir nuestras entidades.
49 |
50 | ##### Cardinalidad
51 | La carnalidad es una propiedad de las relaciones y tiene que ver con los números de pertenencias.
52 |
53 | * Cardinalidad: 1 a 1
54 | * Cardinalidad: 0 a 1
55 | * Cardinalidad: 1 a N
56 | * Cardinalidad: 0 a N
57 |
58 | #### Diagrama Físico, tipos de datos y constrains
59 |
60 | ##### Tipos de datos
61 | * Texto: Char(n), VARCHAR(n), TEXT
62 | * Número: INTEGER, BIGINT, SMALLINT, DECIMAL(n,s), NUMERIC(n,s)
63 | * Fecha/hora_ DATE,TIME, DATATIME, TIMESTAMP
64 | * Lógicos: BOOLEAN
65 |
66 | ##### Constraints (Restricciones)
67 | * NOT NULL: Asegura que la columna no tenga valores nulos
68 | * UNIQUE: Se asegura que cada valor en la columna no se repita
69 | * PRIMARY KEY: Es una combinación de NOT NULL y UNIQUE
70 | * FOREING KEY: Identifica de manera única una tupla en otra tabla.
71 | * CHECK: Se asegura que el valor en la columna cumpla una condición dada
72 | * DEFAULT: Colocan un valor por defecto
73 | * INDEX: Se crea por columna para permitir búsqueda más rápidas
74 |
75 |
76 | #### Normalización
77 | Nos permite minimizar la redundancia en una base de datos.
78 | * Primera forma normal (1FN): Atributos atómicos, los datos no deben de estar repetidos
79 | * Segunda forma normal (2FN): Debe cumplir la 1FN y cada campo de la tabla debe de depender de una clave única.
80 | * Tercera forma normal (2FN): Cumplir con las dos formas normales anteriores y no debe de existir dependencias con campos no clave.
81 | * Cuarta forma normal (4FN): Cumplir con las tres formas normales anteriores y los campos multivaluados se identifican por una clave única.
82 |
--------------------------------------------------------------------------------
/BD/BDBASIC/apuntes.md:
--------------------------------------------------------------------------------
1 | # SQL y MySql
2 |
3 |
4 | #### ¿Qué es una base de datos?
5 | Una Base de datos es un lugar donde se almacenan una gran cantidad de datos que posteriormente a través de un proceso se convierten en información.
6 |
7 | #### Comandos MySql
8 | Iniciar sesión
9 | ~~~sql
10 | mysql -u user-name -p
11 | ~~~
12 | Donde -u es usuario y -p es password.
13 | ___
14 | ~~~sql
15 | use data-base-name;
16 | ~~~
17 | Cambiar de base de datos a utilizar.
18 | ___
19 |
20 | ~~~sql
21 | show full columns from books;
22 | ~~~
23 | Muestra el detalle completo de la tabla.
24 | ___
25 |
26 |
27 | #### Motores de base de datos
28 | Los motores de base datos más conocidos son __Innodb__ y __Myissam__, entre ambos existen ciertas diferencia notables que vale la pena mencionar para saber cuál elegir.
29 |
30 | Innodb considerado como un motor de base de datos transaccional conforme [ACID](https://dosideas.com/noticias/base-de-datos/973-acid-en-las-bases-de-datos) con la capacidad de commit, rollback, recuperación de fallos.
31 |
32 | Myissam es un motor de base de datos que trata tablas no transaccionales lo cual lo hace más rápido en la lectura y escritura de datos.
33 |
34 | ##### Algunas ventajas y desventajas
35 | Innodb
36 | + Soporte de transacciones.
37 | + Bloqueo de registros.
38 |
39 | Myissam
40 | + Mayor velocidad en la recuperación de datos.
41 | + Recomendable para aplicaciones donde predominan la sentencia __select__ que los __inserts/updates__.
42 |
43 | #### Cardinalidad
44 | La cardinalidad son simplemente las relaciones que pueden existir entre las tablas de una base de datos.
45 | + uno a uno
46 | + uno a muchos
47 | + muchos a a uno
48 |
49 | #### Lenguaje DDL
50 | Lenguaje de definición de datos:
51 | + Create: crear objectos tales como vistas, tablas, store procedures e indices.
52 | + Drop: Utilizado para eliminar objectos como vistas, store procedures, tablas.
53 | + Alter: Empleado para editar tablas agregando campos o cambiando la definición de los mismos.
54 |
55 | Una buena practica es que el nombre de la tabla debe ser un sustantivo en plural en ingles.
56 |
57 | ~~~sql
58 | create table if not exists books(
59 | id Integer unsigned primary key auto_increment,
60 | author Integer,
61 | title varchar(100) not null,
62 | year integer unsigned default 1990,
63 | language varchar(2) not null default 'es' comment 'ISO 639',
64 | cover_url varchar(500),
65 | price double(6,2) not null default 10.0,sellable tinyint () defaul 1,
66 | copies integer not null default 1,
67 | description text
68 | );
69 | ~~~
70 |
71 | #### Lenguaje DML
72 | Lenguaje de manipulación de datos proporcionado por los sistemas gestores de base de datos que permite tareas de consultas o modificación de datos.
73 |
74 | ##### Select
75 | ~~~sql
76 | select * from table where field = 'value'
77 | ~~~
78 | ##### Insert
79 | ~~~sql
80 | insert into table (field1, field2) values (value1, value2);
81 | ~~~
82 |
83 | ##### Update
84 | ~~~sql
85 | udate table field = 'value to modify' where field = value
86 | ~~~
87 | ##### Delete
88 | ~~~sql
89 | delete from table where field = value;
90 | ~~~
91 |
92 | ##### Inner JOIN
93 | Es considerada la forma más fácil de obtener información, prácticamente se obtienen todos las filas dela tabla A que coinciden con la table B.
94 |
95 | ~~~sql
96 | select * from table_a as a inner join table_b as b on a.pk = b.pk;
97 | ~~~
98 |
99 | ##### Left JOIN
100 | Se selecciona todas las filas de la tabla A y ademas de las que coincidan de la tabla B.
101 |
102 | ~~~sql
103 | select * from table_a as a left join table_b as b on a.pk = b.pk;
104 | ~~~
105 | ##### Right JOIN
106 | Se selecciona todas las filas de la tabla B y ademas de las que coincidan de la tabla A.
107 |
108 | ~~~sql
109 | select * from table_a as a left join table_b as b on a.pk = b.pk;
110 | ~~~
111 | ##### Outer JOIN
112 | Retorna todas las filas de ambas tablas ademas de hacer la unión entre las tablas que coinciden.
113 |
114 | ~~~sql
115 | select * from table_a as a outer join table_b as b on a.pk = b.pk;
116 | ~~~
117 | ##### Left excluding JOIN
118 | Para este caso retorna todas las filas de la tabla A que no tengan ninguna coincidencia con la tabla B.
119 | ~~~sql
120 | select * from table_a as a left join table_b as b on a.pk = b.pk where b.pk is null;
121 | ~~~
122 | ##### Right excluding JOIN
123 | Para este caso retorna todas las filas de la tabla B que no tengan ninguna coincidencia con la tabla A.
124 | ~~~sql
125 | select * from table_a as a right join table_b as b on a.pk = b.pk where b.pk is null;
126 | ~~~
127 | ##### Outer excluding JOIN
128 | Para este caso retorna todas las filas de ambas tablas que no tengan coincidencias.
129 | ~~~sql
130 | select * from table_a as a full outer join table_b as b on a.pk = b.pk where a.pk is null or b.pk is null;
131 | ~~~
--------------------------------------------------------------------------------
/BD/BDNoSQL/notes.md:
--------------------------------------------------------------------------------
1 | # Base de datos Not Only Sql "NoSql"
2 |
3 | En las base daos NoSql se ecunatran seccionadas en 4 grandes grupos.
4 |
5 | #### Key Value
6 |
7 | #### Grab Data Bases
8 |
9 | #### Wide-Colum stores
10 |
11 | #### Document Data bases
12 |
13 |
--------------------------------------------------------------------------------
/BD/GRAPHQL/note.md:
--------------------------------------------------------------------------------
1 | # GraphQL
2 |
3 | #### ¿Qué es GraphQL?
4 | Paradigma implementado para la comunicación entre aplicaciones, antes existían protocolos como CORBA, SOAP, RPC y el más reciente Rest.
5 |
6 | GraphQl puede ser visto como una evolución del protocolo REST.
7 |
8 | Ventajas:
9 | * Lenguaje agnostico que permite definir de forma clara y concisa los objectos y acciones del API.
10 | * Validación automatica de los datos a ingresar.
11 | * Control de errores.
12 |
13 | La última versión de Junio 18
14 |
15 | #### Schema y tipos de datos.
16 |
17 | Es Schema es la base de una API en GrapQL, es la encargada de definir los datos que se van a utilizar.
18 |
19 | En el Schema se definen campos, argumentos, tipos.
20 |
21 | Tipos de datos:
22 | * String
23 | * Int
24 | * Float
25 | * Boolean
26 | * ID
27 |
28 | #### Queries y Resolvers
29 |
30 | Un Query nos permite ejecutar una petición al API, GraphQL devuelve el valor dentro de un Object data.
31 |
32 | Para ejecutar la petición se debe de utilizar un resolver este va a contener las mismas propiedades declaradas dentro del Query.
33 |
34 | Un resolver es una función que resuelve el valor de un tipo o campo.
35 |
36 | #### Sirviendo el API en la web
37 |
38 | ~~~js
39 | app.use('/api', gqlMiddleware({
40 | schema: schema, // definir el schema
41 | rootValue: resolvers, // definir el resolver a utilizar
42 | graphiql: true // entorno de desarrollo que va utilizar
43 | }))
44 | ~~~
45 |
46 | #### Custom Types
47 | Tipo de dato customizado.
48 |
49 | ~~~json
50 | type Course {
51 | _id: ID
52 | title: String
53 | teacher: String
54 | description: String
55 | topic: String
56 | }
57 |
58 | type Query {
59 | getCourses: [Course]
60 | }
61 | ~~~
62 |
63 | #### Argumentos
64 | ID! Argumento debe ser obligatorio
65 |
66 | #### Mutations e Inputs
67 | Mutations practicamnete es un mecanismo para insertar datos.
68 | Los mutations por lo general siempre reciben un parametro de tipo Input
69 | ~~~js
70 | nombreMutation(input: InputType): tipo
71 | ~~~
72 |
73 | #### Nested Types
74 | Relación entre tipos de del schema
75 | ~~~graphql
76 | type Course {
77 | _id: ID!
78 | title: String!
79 | teacher: String!
80 | description: String
81 | topic: String @deprecated
82 | "Nested types, relación entre tipos de datos, en este caso un curso tiene varios estudiantes"
83 | people: [Student]
84 | level: Level
85 | }
86 | ~~~
87 |
88 | #### Fragments
89 |
90 | Los Fragments nos permiten agrupar campos para que puedan ser reutilizacos en diferentes peticiones.
91 |
92 | ~~~graphql
93 | {
94 | allCourses: getCourses{
95 | ...CourseFields
96 | teacher
97 | }
98 |
99 | oneCourse: getCourse(id: "5e652905b7a4b80533d535b9"){
100 | ...CourseFields
101 | }
102 | }
103 |
104 | fragment CourseFields on Course {
105 | _id
106 | title
107 | people{
108 | name
109 | }
110 | }
111 | ~~~
112 |
113 | #### Variables
114 | Las variables son utilizacadas para utilizarlas en los queries.
115 |
116 | Declaración de variables.
117 | ~~~
118 | $nombre: tipo
119 | ~~~
120 |
121 | ~~~graphql
122 | query GetCourse2 ($course: ID!) {
123 | getCourse(id: $course){
124 | _id
125 | title
126 | people{
127 | _id
128 | name
129 | }
130 | }
131 | }
132 | ~~~
133 |
134 | Requiere un objeto JSON como:
135 |
136 | ~~~json
137 | json
138 | {
139 | "course": "5cb4b8ce75f954a0585f7be3"
140 | }
141 | ~~~
142 |
143 | #### Errors
144 | GraphQL nos va a retornar un objeto llamado errors con detaller del mismo.
145 |
146 |
147 | #### Nota
148 | Instalar CORS para poder acceder desde cualquier lugar.
149 | * Schemas types
150 | * Custom types
151 | * Argumentos
152 | * Nested types
153 | * Resolver tipos
154 | * Errores
155 | * Alias y fragments
156 | * Variables
157 | * Enums
158 | * Interfaces
159 | * Directivas
160 | * Unions
161 |
162 |
163 |
164 |
--------------------------------------------------------------------------------
/BD/MONGO/note.md:
--------------------------------------------------------------------------------
1 | # MongoDB
2 |
3 | ## Introducción
4 | #### Base de datos NoSQL
5 | Las base de datos **Not Only SQL** se clasifican en 4 familias
6 | * Key Values stores: Guardan datos de forma llave Valor.
7 | * Casos de uso: guardar datos en cache.
8 | * Ejemplo: Redis.
9 | * Características: muy sencillas y rápidas.
10 |
11 | * Graph Databases: Basadas en Grafos.
12 | * Casos de uso: Realizar consultas eficientes en una base de datos relaciónal.
13 | * Ejemplo: Neo4J, JanusGraph.
14 |
15 | * Wide-column Store: Bases de datos columnares en donde la columna cuenta con un id así como la fila.
16 | * Casos de uso: Se usa en big data, el diseño de estas se vuelve complejo
17 | * Ejemplo: Cassandra o HBase.
18 |
19 | * Documente database: Base de datos basada en documentos.
20 | * Casos de uso: Nos permite modelar casos de la vida real de forma muy sencilla.
21 | * Ejemplo: MongoDM, CouchBase.
22 |
23 | #### Definición de MongoDB y su ecosistema
24 |
25 | Base de datos NoSQL que permite guardar grandes cantidades de datos en documentos de forma distribuida.
26 | Características
27 | * Guardar documentos de tipo BSON (Binary JSON)
28 | * Base de datos distribuida: Cluster de MongoDB el cual permite escalar de forma horizontal.
29 | * Es SchemaLess: Las colecciones podrían no tener la misma estructura, esto lo hace muy flexible.
30 | * Código abierto.
31 | * MongoDB mobile.
32 | * Stich: Crear servicios ServerLess.
33 |
34 |
35 | #### Mongo Shell
36 | Comandos
37 | * show dbs: Mostrar las base de datos.
38 |
39 | #### MongoDB + Drivers
40 | Los drivers son las librerías para comunicar la app con la base de datos:
41 | * C
42 | * C++
43 | * Go
44 | * Java
45 | * Node.js
46 | * Perl
47 |
48 | Para agregar los drives se debe de utilizar un gestor de dependencias:
49 | * Maven/Gradle para Java
50 | * npm para Java script
51 |
52 | Proceso de conexión a la base de datos.
53 | * Crear conexión **MongoClient**
54 | * Obtener la base de datos **MongoDataBase**
55 | * Acceder a una colección **MongoCollection**
56 | * **CRUD**
57 |
58 | ## Operaciones CRUD
59 | #### Bases de datos, Colecciones y Documentos en MongoDB
60 | Las bases de datos son un contenedor físico para las colecciones.
61 |
62 | * Colecciones: Son agrupaciones de documentos las cuales no están atadas a una estructura
63 | Rigida,
64 | * Documentos: Son registros dentro de las colecciones, unidad básica de MongoDB, estos son similares a JSON pero en realidad son BSON.
65 |
66 |
67 |
68 |
SQL
69 |
NoSQL
70 |
71 |
72 |
Tablas
73 |
Colecciones
74 |
75 |
76 |
Tupla
77 |
Documentos
78 |
79 |
80 |
81 |
82 | ## Operaciones CRUD dentro de la consola
83 | ~~~js
84 | db.dbName.insertOne({})
85 | db.dbName.findOne()
86 | db.dbName.inserMany([{},{},{},{}])
87 | db.dbName.find({},{}).pretty()
88 | db.dbName.updateOne(Object({_id:””}),{$set: {} } )
89 | db.dbName.updateMany(Object({_id:””}),{$set: {} } )
90 | db.dbName.deleteOne(Object({_id:””}),{$set: {} } )
91 | db.dbName.deleteMany(Object({_id:””}),{$set: {} } )
92 | ~~~
93 | ## Esquemas y relaciones
94 | #### Tipos de datos
95 | Tipos de datos que se utilizan en MongoDB
96 | * Strings
97 | * Boolean
98 | * ObjectId: Utiliza el tiempo para poder generar ids únicos.
99 | * Date
100 | * Númericos: Double, Integer, Integer64 lists y Decimals.
101 | * Array: Arreglos o listas de cualquier otro tipo de dato.
102 | * Documentos embebidos: un documento puede tener otro documento.
103 |
104 |
105 | #### ¿Qué son los esquemas y las relaciones?
106 | Es la forma en la cual se enlazan unos con otros.
107 |
108 | #### Proyecciones
109 | Solo obtener los datos que necesitamos.
110 | ~~~js
111 | db.dataBase.findOne({ status: “A”}, { item: 1, status: 1} ) // Para el query solo nos trae item y estatus incluido el _id.
112 | ~~~
113 |
114 | **Operaciones de comparación**
115 | * $eq: =
116 | * $gt: >
117 | * $gte: >=
118 | * $lt: <
119 | * $lte: <=
120 | * $ne: !=
121 | * $in: Valores dentro de un arreglo
122 | * $nin: Valores no incluidos dentro de un arreglo.
123 |
124 | **Operaciones Lógico**
125 | * $and
126 | * $not
127 | * $nor
128 | * $or
129 |
130 | **Operadores pora arreglos**
131 | * $all: Arreglos que contengan todos los elementos del query.
132 | * $elementMatch: Elemento que cumple con la condición.
133 | * $size: Documento que tiene un dato tipo array con un tamaño en específico.
134 |
135 | #### Operaciones Avanzadas con Agregaciones
136 |
137 | * Pipeliene de Agregaciones: grupo de múltiples etapas que ejecutan agregaciones en diferentes momentos, estas corren en todo el cluster.
138 |
139 | * Map-Reduce: Nos permite definir funciones de JavaScript para ejecutar funciones avanzadas. Por ejemplo utilizar map o reduce.
140 |
141 | * Agregaciones de proposito único: Funciones definidas las cuales nos ayudan a calcular algo en particular, debemos de tener cuidado ya que podrían mejorar o afectar el rendimiento de la base de datos. Por ejemplo: count(), estimateDocumentCount y distinct.
142 |
143 | #### Indices
144 | Ayudan a que las consultas sean más eficientes.
145 |
146 | Tipos de indices:
147 | * De un solo campo:
148 | * Compuestos: Se definen con varios campos
149 | * Multi-llave: Se definen con varios campos
150 | * Geoespaciales: Ayudan hacer queries por latitud y longitud
151 | * Indeices de texto
152 | * Hashes: Convertir valores en hash-
153 |
154 | ~~~js
155 | db.survery.getIndexes() // obtenemos los indices de una colección.
156 | db.survery.createIndex({ _id: "text"}) // creamos un index de tipo text
157 | db.survery.find({ $text: { $search: "1" } }) // Realizar query con indice
158 | ~~~
--------------------------------------------------------------------------------
/CRECIMIENTO/ESTRATEGIAS/note.md:
--------------------------------------------------------------------------------
1 | # Estrategias para aprender en linea.
2 |
3 | Aprender es la capacidad de adquirir conocimiento, para esta palabra se necesita definir las siguientes:
4 | * Perseguir: Persiguiendo conocimiento.
5 | * Atrapar/Prender: Atrapar el conocimiento y apoderarse de él y aplicarlo.
6 |
7 |
8 | Según la doctora **Barbara Oakley** Existen dos tipos de pensamiento:
9 | * Enfocado: Dedicarle tiempo ininterrumpido y este tipo es adecuado cuando ya se tienen base sobre el tema que se esta estudiando.
10 | * Difuso: Se dedica fracciones de tiempo con pequeños periodos de descanso, este pensamiento se presenta cuando se tiene que aprender sobre algo nuevo, en este tipo de pensamiento es muy útil la técnica pomodoro.
11 |
12 | Etapas del aprendizaje **Kolb**
13 | Para el aprendizaje se debe de te tener entrada de información y una vez procesada deberíamos tener una salida.
14 |
15 | Los tipos de entrada se clasifican en:
16 | Experiencia Concreta (EC): Involucrarse para tener experiencias.
17 | Observación Reflexiva (OR): Se inicia con la parte teórica,
18 |
19 | Las salidas pueden ser:
20 | Conceptualización Abstracta (CA): Se obtiene una conceptualización abstracta con base a la hipótesis generada a través de la teoría,
21 | Experimentación Activa (EA): Se inicia en él aprendizaje a través de la experiencia.
22 |
23 | Según **Kolb** para un aprendizaje optimo se debe de contemplar las siguientes 4 fases:
24 |
25 | **Actuar**
26 |
27 | Alumno activo, involucran en la experimentación, se aburren en planes a largo plazo.
28 | ⁃ Aprenden mejor cuando cuado realizan actividades cortas y les gusta el resultado inmediato.
29 | ⁃ Se les dificulta aprender cuando adoptan un papel pasivo, cuando tienen que trabajar solos.
30 |
31 | **Reflexionar**
32 |
33 | Alumno reflexivo analiza sus experiencias desde muchas perspectivas para posteriormente armar una conclusión.
34 | ⁃
35 |
36 | **Teorizar**
37 |
38 | Alumno teórico piensan de forma secuencial, les gusta analizar y sintetizar la información.
39 | ⁃ Aprenden mejor a partir de modelos, teorías, sistemas con ideas que presentan un desafio.
40 | ⁃ Les cuesta aprender con actividades qué impliquen ambigüedad e incertidumbre o participar sin fundamentos teóricos.
41 |
42 | **Experimentar**
43 |
44 | Alumno pragmático les gusta probara ideas, teorías y técnicas nuevas y comprobar si estas funcionan en su campo, siempre están buscando optimizar las tareas que realizan.
45 | ⁃ Aprenden mejor con actividades relacionadas con la teoría y la practica, cuando ven a los demás realizar algo, poner en practica lo que han aprendido.
46 | ⁃ Cuando tienen que aprehender de temas que no se relacionan con sus necesidades inmediatas.
47 |
48 |
49 | #### Reglas de aprendizaje efectivo
50 |
51 | * Aprender individualmente:
52 | * Interiorizar los aprendido
53 | * Asimilar la información
54 |
55 | * Factores determinantes en este tipo de aprendizaje:
56 | * Inteligencia: 40% heredado y 50% influencia.
57 | * Atención: Enfocada, y difusa
58 | * Memoria: Capacidad de recordar algo donde se aplica abstracción y síntesis.
59 |
60 |
61 | * Aprender en grupo
62 | * Compartir lo que aprendes
63 |
64 | * Aprender colaborativamente
65 | * Crear una opinión fuerte de lo que aprendes
66 | * Tener a alguien que te cuestione e lo que aprendiste.
67 |
68 |
69 | #### La atención
70 |
71 | La atención es un proceso cognitivo que nos permite enfocarnos y concentrarnos en una cosa en específico.
72 |
73 | No podemos concentrarnos en muchos estímulos al mismo tiempo **“Sobrecarga”**.
74 |
75 | Consejos para memorizar mejor.
76 |
77 | #### Chunking como estrategia de aprendizaje individual.
78 |
79 | Pedazos de información, es considerada una habilidad muy útil cuando se debe de aprender muchísima información.
80 |
81 | Una vez fragmentar la información y estudiada debemos de conectarlas para darles sentido ya que se tiene como objetivo interrelacionarse estos conceptos.
82 |
83 |
84 | #### Tips de lectura
85 |
86 | * Reducir los movimientos sacádicos
87 | * Concentrarte al máximo para evitar releer
88 | * Lee en silencio
89 | * Usar un señalador
90 | * Visualizar frases completas en lugar de palabras
91 | Leer mucho.
92 |
93 | * Profesor por un Día.
94 | Tener la oportunidad de explicar lo aprendido.
95 |
96 | * Parafrasear: Posibilidad de recordar algo con nuestras palabras.
97 |
98 | * Cuestionar conocimiento: Cuando explicamos tenemos la oportunidad de ver que tanto comprendimos.
99 |
100 | * Repasar lo aprendido: Como profesor debemos estudiar y repasar los conceptos.
101 |
102 | * Hacer notas extras: Debemos extender las notas que tenemos debido a que debemos responder a las posibles dudas que surgen en tu audiencia.
103 |
104 | #### Técnica de Feynman
105 | * Elige un tema.
106 | * Escribe lo aprendido usando paráfrasis y lenguaje sencillo, luego léelo en voz alta.
107 | * Arregla los posibles errores.
108 | * Repasa e intenta simplificar.
109 |
110 |
111 | Diálogo me conduce a la reflexión de mi aprendizaje
112 | Un argumento es una reflexión
113 |
114 | #### Metacognición
115 | La metacognición es la capacidad para reflexionar, analizar y criticar lo que se esta aprendiendo.
116 |
117 | #### Estrategias meta congestivas:
118 |
119 | Técnicas:
120 | * Trázate un objectivo.
121 | * Detente a reflexionar sobre el objetivo mientras estas aprendiendo.
122 | * Al finalizar evalúa tu objectivo.
123 |
124 | Ayudate de las siguientes preguntas
125 | * ¿Qué aprendí?
126 | * ¿Cómo lo aprendí?
127 | * ¿Qué fue los más difícil de aprender?
128 | * ¿Cómo lo logré?
129 | * ¿Qué habilidades mejoré?
--------------------------------------------------------------------------------
/CRECIMIENTO/GESTIONTIEMPO/note.md:
--------------------------------------------------------------------------------
1 | # Gestion efectiva de tiempo
2 |
3 | Para le gestión de tiempo efectivamente debemos enfocarnos en el flujo de trabajo y gestionar todas las tares que se tienen por hacer.
4 |
5 | #### Criterios de priorización.
6 | * Importante: Son aquellas que producen resultados tangibles, están alienadas a una meta o estrategia en común y los efectos de no realizarlos son graves.
7 | * Urgente: Requiere atención inmediata, desplaza nuestra atención y tiene fecha de entrega.
8 |
9 | Cuadrantes:
10 |
11 | * (1) Urgente no importantes: Primeras tareas en realizar ya que no están alineadas a una meta pero necesitan atención inmediata.
12 | * (2) Urgentes e importantes: Actividades que se planearon pero se fueron rezagando, por lo cual no deberían existir tareas que en este apartado, se debería analizar la razón por la cual esta tareas llegaron a este punto.
13 | * (3) No urgente e importantes: Tareas planeadas para lograr nuestros objetivos.
14 | * (4 )No urgentes y no importantes: Se deberían eliminar estas tareas dentro de nuestras actividades.
15 |
16 | Debemos de ser eficientes en las tareas que realizamos, para lo cual debemos evitar:
17 | * Mediocridad: las tareas que realizamos en poco tiempo y por lo cual no agregamos ningún tipo de valor.
18 | * Perfeccionismo: Las tareas tienen un gran valor pero toma demasiado tiempo esto afecta en la realización de otras tareas.
19 |
20 | Por lo que cada tarea que realicemos deben de estar entre la mediocridad y el perfeccionismo, cada tarea debe tener un valor agregado y el tiempo es considerable como para no afectar a otras actividades.
21 |
22 | El tiempo libre también es necesario planearlo ya que en este podríamos practicar algún hobby lo cual ayuda mucho a la creatividad lo cual afecta directamente en ser productivos.
23 |
24 |
25 | Tipos de tareas:
26 | * Individuales.
27 | * Otros dependen de mí.
28 | * Yo dependo de otros.
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/CRECIMIENTO/PRODUCTIVIDAD/note.md:
--------------------------------------------------------------------------------
1 | # Curso de productividad.
2 |
3 | ## ¿Qué es la productividad?
4 |
5 | **Productivad**: Es cuando con los recursos que cuento, timepo determinado y espacion puedo generar un determinado producto.
6 |
7 | Debemos considerar los siguietes conceptos en productividad:
8 | * Eficacia "FINES": Capacidad de lograr el efecto que se desea o espera.
9 | * Eficiencia "MEDIOS": Capacidad de lograr un fin empleando los mejores medios posibles.
10 | * Efectividad: Cuantificación del logro de la meta.
11 |
12 |
13 | **DCU**: Diseñado Centrado en tu usuario.
14 |
15 | Analisis -> Prueba -> Elaboración ->
16 |
17 |
18 | ## Autoconocimiento
19 | Gestión de ti mismo
20 |
21 | Implica gobernar áreas espesificas de ti: tiempo, recursos, canales (plataformas sociales), hábitos (alimentación, cosas que te hacen daño)
22 |
23 | **6W**
24 | When?
25 | Where?
26 | What?
27 | Who?
28 | How'
29 | Why?
30 |
31 | Escribir sobre preguntas 100.
32 |
33 | Preguntas para identificar fortalezas:
34 | * ¿Qué tienes que otros no?
35 | * ¿Qué hacer mejor que otros?
36 | * ¿Cómo describen los demas tus puntos fuertes?
37 | * ¿Qué valor son unnicos para ti?
38 |
39 | Preguntas para identificar Debilidades:
40 | * ¿Tareas que evitas porque no crees que puedas hacerlas?
41 | * ¿En qué cree que no eres bueno?
42 | * ¿Cómo describen los demas tus debilidades?
43 | * ¿Cuáles son los rasgos de personalidad que te detienen?
44 | * ¿Cuáles cree que son tus habitos negativos/malos?
45 |
46 | Preguntas para identificar Oportunidades:
47 | * ¿Te consideras dentro de una industria en crecimiento?
48 | * Si es así, ¿Cómo puede utilizar sus recursos para aprovechar este creciemiento?
49 | * ¿Tu no estas haciendo algo?
50 | * ¿Hay algo de lo que se quejen tus empleadores?
51 |
52 | Preguntas para identificar Amenazas:
53 | * ¿Cuáles son los obstáculos en tu vida profecional?
54 | * ¿Eres parte de un entorno competitivo poco saludable?
55 | * ¿Cambiar la tecnologia es una amenaza para su posición actual?
56 | * ¿Te sientes amenazado por aluna de las debilidades de tu propio "user persona"?
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | * El trabajo duro no es ser productivo.
66 |
67 |
--------------------------------------------------------------------------------
/English/B1/notes.md:
--------------------------------------------------------------------------------
1 | # Quantifiers
2 |
3 | Indicate amount or quantities
4 |
5 | |Large quantities|Small quantities|
6 | |----------|:-------------:|
7 | | Much | A few |
8 | | Many | A little |
9 | | A lot of | |
10 |
11 |
12 | ### Much
13 | With uncountable nouns, mainly with **interrogative sentences**
14 |
15 | ### Many
16 | With plural countable nouns, mainly with **interrogative** ans **negative** sentences.
17 |
18 |
19 | ### A lot of/ lots of
20 | With uncountable and plural countable nouns, mainly use in **affirmative** sentences.
21 |
22 | ### A few
23 | With plural countable nouns, usually in affirmative sentences. **Mean that there are not many but enough**.
24 |
25 | | A few | Few |
26 | |----------|:-------------:|
27 | | Positive means | Negative means |
28 | | Not many, but enough | Not enough |
29 |
30 | ### A little / little
31 |
32 | With uncountable nouns, usually in **affirmative** sentences.
33 |
34 | | A little | Little |
35 | |----------|:-------------:|
36 | | Not many, but enough | Not enough |
37 |
38 |
39 | # Nobody, No-one, Nowhere , Nothing
40 | These words can be used at the beginning of a sentences or you can use them by themselves as answers to questions.
41 |
42 | * Nobody/No-one: Not anybody.
43 | * Nothing: Not anything.
44 | * Nowhere: Not anywhere.
45 |
46 | #### Note
47 | We don't use **Nobody**/ **Nothing** / **Nowhere** with a negative verb such as **isn't** / **Didn't** / **Can't**.
48 |
49 | #### Idiom
50 | Out oof nowhere: Appearing suddenly without warning.
51 |
52 |
53 | # Everyone, Everybody, Everything, Everywhere
54 | Are indefinitive pronouns.
55 | We use them to refer to a total number of people, things and places, we write them as a word.
56 |
57 | #### Example:
58 | * His name was Henry, but everyone called him Harry.
59 |
60 | #### Note
61 | It use with singular verb.
62 |
63 |
64 |
65 | # Adverbs: Also / As well / Too
66 | Those meaning in additions, adding points, or emphasizing.
67 |
68 | You can use them at the end of a sentence, in this case mean the same.
69 |
70 | ### Too
71 | You can use too when you agree with someone.
72 |
73 | ### Also
74 | It is commonly use in written english. The main difference is you can use it ath the beginning of the sentence.
75 |
76 | * Make sure you wear a sweater, **also**, bring a hat.
77 |
78 |
79 | # Need to and Need
80 | Need to: Require
81 |
82 | ## Main verb It needs an auxiliary.
83 |
84 | #### Example
85 | * Do they **need to** call more volunteers?
86 | * They don't **need to** call more volunteers?
87 |
88 | ## Modal verb
89 | Absence of obligation or necessary.
90 | * (-) She You **need** only worry about her exam.
91 | * (+) You **need** only just ask.
92 | * (?) **Need** they sign our contract?
93 |
94 | # Compound noun
95 | Noun: A word that names persons place idea or thing.
96 | * Noun contract: Something that oyu can touch.
97 | * Abstract: Natural, feelings, quantities.
98 | * Introduce with articles, possessive, adjectives.
99 |
100 | A compound noun fixed expression with mora than one word.
101 |
102 | Rule:
103 | * First: Purpose or kind.
104 | * Second: Who or what.
105 | * Stress the first syllable.
106 |
107 | Examples:
108 | * NOUN + NOUN : housewife, classroom.
109 | * ADJECTIVE + NOUN : high school, old age, dinning room, green house.
110 | * NOUN + VERB : Rainfall, train spotting.
111 | * NOUN + ADVERB : Passed-by, runner-up.
112 | * VERB + NOUN : Driving license, washing machine.
113 | * ADVERB + NOUN : Bystander.
114 | * ADJECTIVE + VERB : Dry cleaning.
115 |
116 | # Reflexive pronouns and past continuos
117 | We use reflexive pronouns when the actions **affects the same subject** who performs it.
118 |
119 | * I love myself.
120 | * Your put yourself in danger.
121 | * He looks at himself.
122 |
123 | When a person does something on their own.
124 | * In myself did all these things.
125 | * She did the project by herself.
126 |
127 | # Past continuos
128 | We use past continuos to describe things that were happening at specific moment in the past.
129 |
130 | ### Structure
131 | * (+) Subject + Verb BE in PAST + Verb ING + Complement
132 | * (-) Subject + Verb BE in PAST + NOT + Verb ING + Complement
133 | * (?) WH + Verb BE in PAST + Subject + Verb ING + Complement + ?
134 |
135 | ### Example
136 | * She was walking when she saw herself in the mirror.
137 | * They weren't cooking when the food burned.
138 |
139 | # All/All of, Most/Most of, No/None of
140 |
141 | ## All
142 | We can use **all + noun** to talk about the **whole (100%)**, it is used with countable and uncountable nouns.
143 |
144 | ### Example
145 | * **All** cars have wheels.
146 | * **All** my friends live in Madrid.
147 | * We **all** went
148 | * They were **all** happy
149 |
150 | ## All of
151 | We can use also **all of + object pronoun**
152 | ### Example
153 | * **All of them** were at the party.
154 | * He invited me **all of us** to lunch.
155 |
156 | ## Most
157 | We can use most + noun to talk about all people or things in general or most of the/my/etc. + Noun to.
158 |
159 | Talk about specific people or thing.
160 |
161 | ### Example
162 | * **Most of people** trust policeman.
163 | * **Most of people** at the pub were drinking.
164 |
165 | ## Most of
166 | We can also use **most of + object pronoun**.
167 |
168 | ### Example
169 | * **Most of us** come from Madrid.
170 | * They fired **most of them**.
171 |
172 | ## No
173 | We use **no + noun** in affirmative sentences.
174 |
175 | ### Example
176 | * She has **no friends**.
177 | * There are ### Example.
178 |
179 | ## No of
180 | We can use **no of + noun/ pronoun**.
181 | * **None of workers** are from Spain.
182 | * **None of them** is from Spain.
183 |
184 |
185 | # Prepositions whit time
186 |
187 | ## During
188 | For part of a period of time; ath the same time as another event.
189 | ### Example
190 | * He slept **during** the meeting.
191 |
192 | ## Until
193 | Up to, but not after a specific time.
194 | ### Example
195 | * I will stay **until** ten o'clock.
196 | * They will study **until** the day of the exam.
197 |
198 | ## For
199 | During a length of time.
200 | ### Example
201 | * She was working here **for** one month.
202 |
203 | ## Since
204 | Between a past time and now.
205 | ### Example
206 | * I have lived in new York **since** 2012.
207 |
208 |
209 | # For vs Since
210 |
211 | Duration of time.
212 | * I have been living in Spain **for** 6 years.
213 |
214 | Starting point: continuos until now.
215 | * I have been living in Spain since 2012.
216 |
217 | # Yet, Still. Already
218 |
219 | ## Still
220 | Mean that something is ongoing, hasn't finished particularly earlier.
221 | ### Example
222 | * Is your gather still at the same company?
223 | * The baby is still crying.
224 |
225 | ## Yet
226 | Means that something that we expected has happened or hasn't happened.
227 | We usually put it at the end of a sentence.
228 |
229 | ### Example
230 | * She won't have sent the email yet.
231 |
232 | ## Already
233 | Means that something happened earlier than we expected, with present perfect tense.
234 | ### Example
235 | * He has already done the shopping, he is watching T.V. now.
236 |
237 | # Separable vs Inseparable phrasal verbs
238 |
239 | |Separable|Inseparable|
240 | |----------|:-------------:|
241 | | Transitive verbs |Intransitive verbs |
242 |
243 | ### Transitive verbs
244 | A transitive verb has an object.
245 | [Examples](https://englishpost.org/transitive-verbs-list/)
246 |
247 | ### Intransitive verbs
248 | An intransitive vern doesn't have an object.
249 | [Examples](https://englishstudyonline.org/intransitive-verb/)
250 |
251 | ### Object
252 | An object is a noun, pronoun or phrase tha receives the action of the verb.
253 |
254 | # Comparative short Adjectives
255 | |Short adjectives|Spelling rules| Examples|
256 | |----------|:-------------:|:-------------:|
257 | |Usually| + **es** | slow = slower, fast = faster, tall = taller |
258 | |Ending in **e**| + **r** | Large = larger, nice = nicer |
259 | |Some 2 syllable, adjectives, especially ending in **y** | - **y**, + **i**, + **er** | Hungry = Hungrier, Happy = happier, funny = funnier |
260 | |Ending in **a** vowel + consonant| Double the consonant + **er** | Big = bigger, Fat = fatter, Fit = fitter |
261 |
262 | # How to use going to and the near future
263 | We use be going to talk about plans and intentions.
264 | ### Examples
265 | * I'm going to have a big birthday celebration.
266 | * They are going to get married in small church.
267 |
268 | # Present perfect vs Past simple
269 | |Present perfect simple|Past simple|
270 | |----------|:-------------:|
271 | |Un finish actions that started in the past and continue to the present| Finished actions|
272 | |A finish action in someone's life **When the person is still alive**|A finish action in someone's life **When the person is dead**|
273 | |A finish action with result in the present|A finish action with no result in the present|
274 | |With and un finished time word **this week**, **this month**, **today**|With a finished word **last week**, **last month**, **yesterday** |
275 |
276 |
277 |
--------------------------------------------------------------------------------
/English/B1Plus/note.md:
--------------------------------------------------------------------------------
1 | # Module 1
2 | # Hear / Hear about / Her from / Hear of
3 |
4 | ## To hear + Noun / Pronoun
5 | Here is the verb of involontary perception. It must be built with the modal auxiliary **can**.
6 |
7 | ### Example
8 | * If you keep quiet, you **can** hear the birds singing in the garden. Sorry but I **can't** hear anything.
9 |
10 | ## Hear + Direct Object Complement + infinitive without TO
11 | To Hear someone DO something: Hear can be followed by the infinitive without TO (base verb) if the action is seen entirely, from beginning to end.
12 |
13 | ### Example
14 | * I could her him speak about his father and was really shocked by his words.
15 |
16 | ## Hear + Direct Object Complement + infinitive without -ing
17 | To Hear someone Do something: Hear can be followed by the verb + **ING** if the action which is described is in progress at that moment. (**It's being doing**)
18 |
19 | ### Example
20 | * I could hear the teacher speaking.. I was late for the lesson!
21 |
22 | ## To Hear about
23 | TO know or learn about a fact or event.
24 |
25 | ### Example
26 | * Have you heard about the tennis championship taking place in your town?
27 |
28 | ## To Hear from
29 | TO have or receive new from someone
30 |
31 | ### Example
32 | * Have you hear from Jim since came back from Europe?
33 |
34 | ## To hear OF
35 | * TO be Told/Know about someone or something.
36 |
37 | ### Example
38 | * Have you hear of that actor? I don't know any of the plays he acted in!
39 |
40 | # Present continuous
41 | Present continuos + always, constantly, express habits that annoy us, surprise us or happen mora than usual.
42 |
43 | ### Example
44 | * He's always leaving dirty clothes all over the place.
45 | * I like her because she's always making jokes.
46 |
47 | # Restrictive Relative clause / Nonrestrictive Relative clause
48 |
49 | |Restrictive Relative clause|Nonrestrictive Relative clause|
50 | |----------|:-------------:|
51 | | A relative clause that is essential to the meaning of a sentence | A relative clause that is not essential to the meaning of a sentence |
52 | | The paper **that** I have just finished is due tomorrow | The final manuscript, **which** was well formatted, was submitted on time |
53 | | The employees **who** work this afternoon are late | The woman, **whoever** she was, left yesterday morning |
54 |
55 |
56 |
57 | # Relative pronouns
58 | A relative pronoun is a pronoun that introduces a relative clauses within a complex sentence.
59 |
60 | ### Example
61 | Mike found the keys **that he had lost**.
62 |
63 | That is a relative pronoun which introduces the relative clause **that he had lost**.
64 |
65 | In English, the relative pronouns are **who**, **whom**, **which**, **whose**, and **that**.
66 |
67 | ## Who
68 | Subject or Object pronoun for people.
69 |
70 | ### Example
71 | * They caught the lady **who** killed her baby.
72 | * I know the man **who** you met.
73 |
74 | ## Which
75 | Subject or Object pronoun
76 |
77 | ### Example
78 | * I read the book **which** is on the table.
79 | * I visited the town **which** you told me about.
80 |
81 | ## Which
82 | Referring to whole sentence.
83 |
84 | ### Example
85 | * They were unsuccessful **which** is disappointing.
86 |
87 | ## Whom
88 | Used for object pronoun for people, especially **in non-restrictive** clauses (in **restrictive** relative clause use **who**)
89 |
90 | ### Example
91 | * The boy **whom** you told me about got the best grades in mathematics.
92 |
93 | ## That
94 | Subject or object pronoun for people, animals, and things in restrictive relative clauses (Who or which are also possible).
95 |
96 | ### Example
97 | * I like the vase **that** is over there.
98 |
99 |
100 |
101 |
102 | # So
103 | |Purpose|Example|
104 | |----------|:-------------:|
105 | | to agree | so do I |
106 | | to refer to | I think so |
107 | | quantifier | very |
108 | | so much/many | quantifier |
109 | | conjunctions | show a result |
110 |
111 |
112 | # So that
113 | Adverb clause marker => purpose
114 |
115 | ### Example
116 | * I worked over time this week so that I could take time off next week.
117 | * so that I could take time off next week: shows the purpose.
118 |
119 |
120 | # So adjective/adverb that
121 |
122 |
123 |
124 | # Module 2
125 |
126 | # Reciprocal pronouns
127 | We use reciprocal pronouns when each of two or more subjects is acting in the same way towards the others.
128 |
129 | There are only tow reciprocal pronouns.
130 |
131 | * Each other
132 | * One other
133 |
134 | ### Example
135 | * Mary and John gave **each other** gold rings on their wedding day.
136 | * Ram and Mina were talking to **each other** in the hallway.
137 | * We gives **each other** gifts during the holidays.
138 | * The students congratulate **one another** after giving practice speeches.
139 | * The kids spend the afternoon kicking the ball to **one another**.
140 |
141 |
142 | # If I were you
143 | You imagine your self in the position or situation of the other person.
144 | It is used to give advice.
145 |
146 | ## Structure
147 | * If were you + I would verb
148 | * I would + verb + If I were you
149 |
150 | ## Why If I were and not If I was?
151 | This is the SUBJUNCTIVE mood which is used for HYPOTHETICAL situations. It is a conditional which is a contrary to fact (The fact is I am not you).
152 | With TO BE, use WERE for all subjects in the SUBJUNCTIVE.
153 |
154 | ### Examples
155 | * If I were you, I would study more.
156 | * If I were you, I wouldn't do that.
157 | * I would go to the doctor if I were you.
158 | * I wouldn't got there if I were you.
159 |
160 |
161 |
162 | # Module 3
163 |
164 | # Present Perfect with yet, just, already, still
165 |
166 | We often use yet, just, already and still with the present perfect because they are related to the present moment.
167 |
168 | ## Just
169 | **Just** used with the present perfect means "**a short time before**"
170 | * I've just seen Susan coming out of the Cinema
171 | * Have you just take my pen?
172 |
173 | ## Yet
174 | **Yet** used with the present perfect means "**at any time up to now**". We used it to emphasise that we expect something to happen soon. yet in this context is only used in negative sentences and questions.
175 | * Have you finished your homework yet?
176 | * I haven't finished it yet. I'll do it after dinner.
177 | * Where's Sam? He hasn't arrive yet.
178 |
179 | ## Still
180 | **Still** used with the present perfect means that something hasn't happened. We use it to emphasise that we expected the thing to happen earlier. Still in this context is only used in negative sentences.
181 |
182 | * I've been waiting for an hour and the bus still hasn't come.
183 | * They promised me tha the report yesterday but they still haven't finished it.
184 | * She still hasn't replied to my email. MAybe she's on holiday.
185 |
186 | ## Already
187 | Already used with the present perfect means "**before now**", We used it to emphasise that something happened before something else or earlier than expected.
188 |
189 | * I've already spent my salary and it's two weeks before payday.
190 | * He wanted to see Sudden Risk but I've already seen it.
191 | * The trains left already.
192 |
193 |
194 | # 5 Types of English Verb + Verb Combinations
195 |
196 | ## English Verbs + -ING Form
197 | avoid deny finish regret
198 | be/get used to dislike imagine risk
199 | can’t help don’t mind look forward to spend time
200 | can’t stand enjoy practice stop
201 | consider feel like recommend suggest
202 |
203 | * She denies stealing the bags
204 | * I practice running every day
205 | * He stops smoking for health
206 | * I spend time listening music
207 |
208 | # 2 – English Verbs + Infinitive (with TO)
209 |
210 | agree expect manage pretend threaten
211 | attempt fail need promise try
212 | claim hesitate offer refuse want
213 | decide hope plan seem would like
214 | deserve learn prepare tend
215 |
216 | * They want to practice boxing
217 | * I deserve to goo grades
218 | * I claim to get a new salary
219 | * She hesitated to call me yesterday
220 |
221 | # 3 – English Verbs + Object + Infinitive (with TO)
222 | advise convince inform require
223 | allow encourage instruct teach
224 | authorize force permit tell
225 | cause get persuade urge
226 | challenge hire remind warn
227 |
228 | * I instruct him to get a new job
229 | * She allow him to play with his brothers
230 | * He authorize them to get a free day
231 | * She force them to work more time
232 |
233 | # 4 – English Verbs + Infinitive (with TO) or -ING Form
234 |
235 | begin prefer
236 | continue remember*
237 | hate* start
238 | like try
239 | love
240 |
241 | * She start studying very hard
242 | * I try to get a new job
243 | * I continue working in the same company
244 | * She prefers to walk instead used bus
245 |
246 | # 5 – English Verbs + Object + Simple Form (without TO)
247 |
248 | let
249 | make
250 | help
251 | have
252 |
253 | * Let us speak please
254 | * I made some bread
255 | * Can you help me please
256 |
257 |
258 | # Adverbs of comment
259 |
260 | There are some adverbs and adverbial expressions which tell us about the speaker's viewpoint or opinion about an action, or make some comment on the action.
261 |
262 | |Viewpoint or commenting adverb|At the start of a sentence|Before the main verb|At the end of a sentence|
263 | |:----------:|:-------------:|:----------:|:-------------:|
264 | | Clearly | **Clearly**, he doesn't know what he is doing | He **clearly** doesn't know what he is doing | He doesn't know what he is doing, **clearly** |
265 | | obviously | **Obviously**, you are acting silly. | You are **obviously** acting silly | You are acting silly, **obviously**. |
266 | | personally | **Personally**, I'd rather go by train. | I'd **personally** rather go by train. | I'd rather go by train, **personally**. |
267 | | presumably | **Presumably**, he didn't have time to go to the post office. | He **presumably** didn't have time to go to the post office. | He didn't have time to go to the post office, **presumably**. |
268 | | seriously | **Seriously**, I can't give this speech. | I **seriously** can't give this speech. | I can't give this speech, **seriously**. |
269 | | surely | **Surely** you tried to get here on time. | You **surely** tried to get here on time. | You tried to get here on time, **surely**. |
270 | | technically | **Technically**, we cannot fly to Mars and back. | We **technically** cannot fly to Mars and back. | We cannot fly to Mars and back, **technically**. |
271 | | undoubtedly | **Undoubtedly**, he has a good reason not to come. | He **undoubtedly** has a good reason not to come. | He has a good reason not to come, **undoubtedly**. |
272 | | bravely | **Bravely**, I kept on walking. | I **bravely** kept on walking. | *I kept on walking, **bravely**. |
273 | | Carelessly | **Carelessly**, she threw her book into the pond. | She **carelessly** threw her book into the pond. | *She threw her book into the pond, **carelessly**. |
274 | | certainly | **Certainly** you should be there. | You **certainly** should be there. / You should **certainly** be there. | You should be there, **certainly**. |
275 | | cleverly | **Cleverly**, Sally hid the jellybeans. | Sally **cleverly** hid the jellybeans. | *Sally hid the jellybeans, **cleverly**. |
276 | | definitely | ***Definitely**, you are smart. | You **defintely** are smart. / You are **definitely** smart. | *You are smart, **definitely**. |
277 | | foolishly | **Foolishly**, they cried out. | They **foolishly** cried out.| They cried out, **foolishly**. |
278 | | generously | **Generously**, he donated the money. | He **generously** donated the money.| *He donated the money, **generously**. |
279 | | stupidly | **Stupidly**, they played in the street. | They **stupidly** played in the street.| *They played in the street, **stupidly**. |
280 | | obviously | **Obviously**, we are lost. | We are **obviously** lost. / *We **obviously** are lost.| We are lost, obviously. |
281 |
282 | # So Vs Such
283 | We can say about **So** and **Such** That;
284 | * Both of them usually have the same meaning **Very**.
285 | * Both of them show extremes.
286 | * We can use both of them to add emphasis to the sentence.
287 | * Although they have some similarities, there are some main differences in their use in a sentence.
288 |
289 | ### Examples So
290 | * So + Adjective = Mark seems so un happy
291 | * So + Adverbs = She speaks so quicly.
292 | * So + Judgement Adjective = It is so rainy outside
293 | * So Much/Many/Few/Little/ + Noun = There are so few cars in the park a lot
294 |
295 | ### Examples Such
296 | * Such + a/an + Adjective + Noun = She is such an intelligent boy
297 | * Such + Judgment Noun = He is such Lier, Don't be such a fool
298 | * Such + a/an Noun = Why did you say such thing?
299 |
300 | # Resources / Materials Part 1:
301 | ## Parallel comparatives
302 |
303 | |Kind|Examples|Structures|
304 | |----------|:-------------:|:-------------:|
305 | | Short and simple | The cheaper, the better |the + comparative (comma) the + comparative |
306 | | Adding nouns | The bigger the risk, the greater the reward. | the + comparative + the + noun (comma) the + comparative + the + noun|
307 | | Comparing actions | The longer they waited, the more anxious they became. | the + comparative + subject + verb (comma) the + comparative + subject + verb|
308 |
309 | ## The…the… with comparative adjectives
310 |
311 | Comparison and contrast are expressed by the use of the…the… with comparative adjectives in parallel clauses. This structure is used to show proportionate increase or decrease.
312 |
313 |
314 |
315 | * The more adventurous it is, the more I like it. (NOT The more it is adventurous, the more I like it.)
316 | * The less I see him the more I like him.
317 | * The more he reads, the less he understands.
318 | * The older we grow, the wiser we become.
319 | * The higher you climb, the colder it gets.
320 | * The richer one grows, the greater one’s worries.
321 | * The less you spend, the more you save.
322 | * The sooner they go, the better it is.
323 |
324 |
325 |
326 |
327 | # Resources / Materials Part 1:
328 |
329 | # The passive with GET
330 | Get is often used instead of be in the passive voice in informal spoken English to refer to an action that happens by accident or unexpectedly:
331 | * Their car **got stolen** in front of their house last night.
332 | * Jerry **got fired** because he was always late for work.
333 |
334 |
335 | Get expresses action and change and is only used with action verbs, not state verbs:
336 |
337 | * Jerry **was fired** because he was always late for work.
338 | * Jerry **got fired** because he was always late for work. (fire is an action verb)
339 |
340 | As get in the passive voice expresses action, it makes it possible to differentiate between an action and a state if it is not otherwise clear:
341 |
342 | * The living room window **was broken**. (state or action)
343 | * The living room window **got broken**. (action)
344 |
345 | The passive with be and the agent mentioned also makes the distinction clear:
346 | * The living room window was broken by the burglar. (action)
347 |
348 | A reflexive pronoun after get indicates that the recipient of the action is in some way involved in or responsible for what happened:
349 | * He **got injured** while playing football. (it was an accident)
350 | * He **got himself injured** while trying bike stunts. (it was partly his fault)
351 |
352 | The get passive is also used in certain idiomatic expressions:
353 |
354 |
355 | ## Idiomatic expressions with the get passive
356 | * get dressed
357 | * get washed
358 | * get engaged
359 | * get married
360 | * get divorced
361 | * get lost
362 | * get mixed up
363 | * get started
364 |
365 |
366 | # FUTURE IN THE PAST
367 | The future in the past is used to refer to something that was the future at some time in the past. It does not matter if the future event happened or not as it was thought to be the future at the time.
368 |
369 | As for the simple future forms will, going to and the continuous, there are three future in the past forms: **would**, **was/were going to** and **was/were + continuous** verb.
370 |
371 | * Would is used to talk about a past future promise or prediction with no evidence.
372 | * Was/were going to is used to talk about a past future firm plan, intention or a prediction with evidence.
373 | * Was/were + continuous verb is used to talk about a future in the past that was a personal arrangement.
374 |
375 | ## Examples
376 | * He **was** sure she **would** never help him. It turned out he had been right – a past promise
377 | * She **promised** she **would** call me, but she never did – a past promise.
378 | * They **said** they **would** be here by 9pm, but they haven’t arrived yet – a promise.
379 | * The newspapers **said** it **would** rain but it’s stayed dry – a prediction without evidence.
380 | * I **thought** they **would** win, but it was a draw – a prediction without evidence
381 |
382 |
383 |
384 | # English Grammar: Future Intentions
385 | Here are some ways you can talk about your future plans and intentions in English. These are activities that you know will happen, because you planned them and decided to do them.
386 |
387 | ## Be going to + verb
388 | Use this to talk about activities you planned before.
389 | Remember to change “be” to the correct form for the subject:
390 |
391 | * I am going to play tennis tomorrow.
392 | * You are going to see your cousin next week.
393 | * He / She is going to get married in September.
394 | * We are going to have a party this weekend.
395 | * They are going to save up for a new car.
396 |
397 | ## Question form
398 | As with all verbs that use the verb “to be”, change the subject and the form of the verb to make questions:
399 |
400 | * Am I going to…?
401 | * Are you going to…?
402 | * Is he / she going to…?
403 | * Are we going to…?
404 | * Are they going to…?
405 |
406 | ## Short replies
407 |
408 | * Yes I am / No I’m not
409 | * Yes you are / No you aren’t (or No you’re not)
410 | * Yes he is / No he isn’t
411 | * Yes we are / No we aren’t (or No we’re not)
412 | * Yes they are / No they aren’t (or No they’re not)
413 |
414 | ## Negative form
415 |
416 | * I am not going to leave my job.
417 | * You aren’t going to visit your cousin this week.
418 | * He / She isn’t going to get married.
419 | * We aren’t going to move house.
420 | * They aren’t going to study at university.
421 |
422 |
423 | # Present Continuous
424 |
425 | We use the Present Continuous to talk about planned appointments and activities. These are the types of activities that you write in your diary, for example. We often give a time reference.
426 |
427 | * Very often, “be going to” and the Present Continuous can be used in the same situations.
428 | * I’m visiting our new office in London this afternoon. (I’m gong to visit our new office…)
429 | * You’re meeting the boss tomorrow. (You’re going to meet the boss…)
430 | * He / She is working from home next week. (He is going to work from home…)
431 | * We’re taking the train to Scotland. (We are going to take the train…)
432 | They’re leaving later today. (They are going to leave…)
433 |
434 | # Be planning to / Be thinking of
435 |
436 | You can use the verbs “plan” and “think” in the present continuous is to talk about activities that aren’t 100% definite.
437 |
438 | * I’m planning to study abroad next year.
439 | * We’re thinking of getting a dog.
440 |
441 | Remember: “be planning to” is followed by the verb; “be thinking of” is followed by a gerund (ing form).
442 |
443 | # Review of “will”
444 |
445 | We can use “will” to talk about the future and make predictions.
446 |
447 | * “We won’t have enough money to buy a new house this year.”
448 |
449 | We can also use “will” to talk about decisions that we make at the time of speaking (NOT decisions that we plan before):
450 |
451 | * “I’ll help you with your bags.” (at the moment you see someone with a heavy bag)
452 |
453 | # Past Perfect Tense
454 | The past perfect, also called the pluperfect, is a verb tense used to talk about actions that were completed before some point in the past.
455 |
456 | ## Example
457 | We were shocked to discover that someone had graffitied “Tootles was here” on our front door. We were relieved that Tootles had used washable paint.
458 |
459 | The past perfect tense is for talking about something that happened before something else. Imagine waking up one morning and stepping outside to grab the newspaper. On your way back in, you notice a mysterious message scrawled across your front door: Tootles was here. When you’re telling this story to your friends later, how would you describe this moment? You might say something like:
460 |
461 | * I turned back to the house and saw that some someone named Tootles had defaced my front door!
462 |
463 | In addition to feeling indignant on your behalf, your friends will also be able to understand that Tootles graffitied the door at some point in the past before the moment this morning when you saw his handiwork, because you used the past perfect tense to describe the misdeed.
464 |
465 | ## The Past Perfect Formula
466 | The formula for the past perfect tense is had + [past participle]. It doesn’t matter if the subject is singular or plural; the formula doesn’t change.
467 |
468 | ## When to Use the Past Perfect
469 |
470 | So what’s the difference between past perfect and simple past? When you’re talking about some point in the past and want to reference an event that happened even earlier, using the past perfect allows you to convey the sequence of the events. It’s also clearer and more specific. Consider the difference between these two sentences:
471 |
472 | * We were relieved that Tootles used washable paint.
473 | * We were relieved that Tootles had used washable paint.
474 |
475 | It’s a subtle difference, but the first sentence doesn’t tie Tootles’s act of using washable paint to any particular moment in time; readers might interpret it as “We were relieved that Tootles was in the habit of using washable paint.” In the second sentence, the past perfect makes it clear that you’re talking about a specific instance of using washable paint.
476 |
477 | Another time to use the past perfect is when you are expressing a condition and a result:
478 |
479 | * If I had woken up earlier this morning, I would have caught Tootles red-handed.
480 |
481 | The past perfect is used in the part of the sentence that explains the condition (the if-clause).
482 |
483 | Most often, the reason to write a verb in the past perfect tense is to show that it happened before other actions in the same sentence that are described by verbs in the simple past tense. Writing an entire paragraph with every verb in the past perfect tense is unusual.
484 |
485 | ## Common Irregular Verbs in the Past Perfect Tense
486 | Infinitive
487 |
488 | |Infinitive|Past Perfect|Negative|
489 | |----------|:-------------:|:-------------:|
490 | | To be | had been | had not been |
491 | | To have | had had | had not had |
492 | | To do | had done | had not done |
493 | | To say | had said | had not said |
494 | | To get | had gotten | had not gotten |
495 | | To make | had made | had not made |
496 | | To go | had gone | had not gone |
497 | | To take | had taken | had not taken |
498 | | To see | had seen | had not seen |
499 | | To come | had come | had not come |
500 |
501 | *The past participle of “to get” is “gotten” in American English. In British English, the past participle is “got.”
--------------------------------------------------------------------------------
/English/Curso de Inglés Práctico: Gramática/note.md:
--------------------------------------------------------------------------------
1 | # Curso de Inglés Práctico: Gramática
2 |
3 | ## Grammar: Simple past with the verb be and other verbs
4 | We use the simple past with the verb BE to talk about how things were before.
5 |
6 | Examples:
7 | * I **was** young when we **moved**.
8 | * She **was** a very good student at school.
9 | * He **was** very quite when he **was** a kid.
10 | * **Was** it too difficult?
11 | * You **were** very good students at school.
12 |
13 | Structure:
14 | * Subject + verb BE + complement
15 | * Subject + verb BE + NOT + complement
16 | * Verb BE + subject + complement + ?
17 |
18 | For other verbs the simple past is formed by adding -**ed** at the end of the verb.
19 |
20 | Examples:
21 | * We **moved** to Canada when I was 5.
22 | * I **accepted** the job and I **moved** to Mexico.
23 | * She **didn't** work there for so long
24 |
25 | There are some verbs that change. Irregular verbs.
26 | * She **spoke** English and Portuguese.
27 | * He **had** a very good friend when we **was** a kid.
28 | * They **didn't** **spend** time watching TV.
29 |
30 | ## Vocabulary: Types of determiners
31 |
32 | | Determiner | Example |
33 | |----------- |-------- |
34 | | Articles | A, an, the |
35 | | Possessives | My, your, his, her, its, our, their|
36 | | Demonstratives | This, that, these, those |
37 | | Numerals | One, Two, three, four |
38 | | Ordinals | First, second, next, last |
39 | | Quantifiers | Many, few, some, every, much, a lot of, any, less |
40 |
41 |
42 | ## Grammar: How to use determiners
43 | We use determiners to express the reference of a noun in a given context, they tell us if the noun is general or specific.
44 |
45 | ### Specific determiners
46 | We use specific determiners when we believe the listener/reader knows exactly we are talking about.
47 |
48 | * The definite article: **the**
49 | * Possessives: **My, your, his, her, its, their, our**
50 | * Demonstratives: **This, that, those, these**
51 | * Interrogative: **Which**
52 |
53 |
54 | Examples
55 | * Do you want **the** ketchup?
56 | * Look at **the** lovely dogs
57 | * Thanks for **your** presents
58 | * **This** is **my** computer
59 | * People don't like **this** candidate
60 |
61 | ### General determiners
62 | we use general determiners when the listener doesn't know what we are talking about.
63 | We can use un count noun or a plural noun with **no**.
64 | * A
65 | * An
66 | * Any
67 | * Another
68 | * Other
69 | * What
70 |
71 | Example
72 | * I like **any** dog I see
73 | * I need **another** computer.
74 | * **Education** is the most relevant aspect for society
75 | * **Water** is good for us
76 |
77 | ## Grammar: Expressions to give directions in the city
78 |
79 | There are many expressions to give directions in English
80 |
81 | * **Straight ahead**: To continue in the same direction.
82 | * Go straight ahead for two blocks
83 | * **Turn right**: Turn in different directions.
84 | * **Turn left**: Turin different directions.
85 | * Turn right at the corner and walk straight ahead
86 | * **To across the street**
87 | * Cross the street and you will see the bank.
88 |
89 | ## Prepositions of place
90 |
91 | | Preposition of place | Example |Notes|
92 | |-------------|---------|---------|
93 | |Next to|The bank **is next to** the bakery|
94 | |Beside|The bank is **beside** the bakery|
95 | |close to| The bank is **close to** the pet store|
96 | |Near|The bank is **near** the pet store|you don't us **to**|
97 | |In front of|The restaurant is in front of the pet store||
98 | |Across|The pet store is across the street||
99 |
100 | # Grammar: The expression its + adjective + to verb
101 |
102 | |Adjective|Example|
103 | |---------|-------|
104 | |Beautiful|It's beautiful to see the sunset|
105 | |Boring|It's boring to wait for the flight|
106 | |Exciting|It's exciting to visit new places|
107 | |Fascinating|It's fascinating to visit museums|
108 | |Expensive|It's expensive to stay 5 starts hotels|
109 | |Cheap|It's cheap to use public transport|
110 |
111 |
112 | # Grammar: The use of whose and possessive pronouns
113 | Whe use **WH** questions **WHOSE** to identify the owner of an object.
114 |
115 | A: Whose is this cellphone?
116 | B: This cellphone is Sebastian's but this one is **mine**.
117 |
118 | ## Possessive pronouns
119 | We use possessive pronouns to refer to the owner of an object.
120 |
121 | |Pronoun |Possessive Pronoun|Example|
122 | |--------|------------------|-------|
123 | |I|Mine|Juan's car is red **mine** is black|
124 | |You|Yours|My house is white, **yours** is blue|
125 | |He|His|**His** books are only about math **mine** are about programing|
126 | |She|Hers|Jose's desk is black, **hers** are brown|
127 | |It|Its|My dog is hungry and it's eating **its** food|
128 | |We|Ours|**Their** house is far from the city **ours** is very close|
129 | |They| Theirs |**Our** car is fast **theirs** is slow|
130 |
131 |
132 | # Grammar: Reflexive pronouns and the past continuous
133 | We use reflexive pronouns when the action affects the same subject who performs it.
134 |
135 | |Pronoun |Reflexive Pronoun|
136 | |--------|------------------|
137 | |I|Myself|
138 | |You|Yourself|
139 | |He|Himself|
140 | |She|Herself|
141 | |It|Itself|
142 | |We|Ourselves|
143 | |They| Theirselves |
144 |
145 | Example:
146 | * I love **myself**.
147 | * You put **yourself** in danger.
148 | * He looks at **himself**.
149 |
150 | Or when a person doing something on their own.
151 | Example:
152 | * I myself did all these things.
153 | * She did the project herself.
154 |
155 | ## Past continuous
156 | We use the past continuous to describe things that were happening at a specific moment in the past.
157 |
158 | Structure:
159 | * **+** Subject + verb in past + verb ing + complement
160 | * **-** Subject + verb in past + not + verb ing + complement
161 | * **?** WH + verb in past + subject + verb ing + complement + ?
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
--------------------------------------------------------------------------------
/English/note.md:
--------------------------------------------------------------------------------
1 | # Simple present BE.
2 | We use the simple present ad BE to talk about descriptions on locations in the present.
3 |
4 | * I am a teacher. Description
5 | * I am 30 years old. Description
6 | * She is a designer. Description
7 | * She is 27. Description
8 | * He is at the office right now. Location
9 |
10 | # Simple present with others verbs.
11 | We use the simple present with others verbs to talk about regular activities, likes and dislikes.
12 |
13 | * She works in a big office.
14 | * They walk to work every day.
15 | * We don't have a car right now.
16 | * Do you train in the morning?
17 |
18 | Note: When use third person "He, She and It" it is necessary to Conjugate the verbs in **third person**. s, es and ies.
19 |
20 | ## Structure
21 |
22 | * Affirmative
23 | * Subject + verbs + complement
24 | * Negative
25 | * Subject + DO/DOES + not + complement
26 | * Interrogative
27 | * WH/DO/DOES + subject + verb + complement + ?
28 |
29 | Auxiliaries
30 | * DO
31 | * I, we, they and you
32 | * DOES
33 | * He, she and it
34 |
35 |
36 | # Grammar: How to use too and either
37 |
38 | We use **too** and **either** when we want to show that have something in common with someone.
39 |
40 | **Too** is used in affirmative sentences and **either** for negative sentences.
41 |
42 | A: I love flowers
43 | B: I do **too**
44 |
45 | **Note**: We use the corresponding auxiliary to respond the expression.
46 |
47 | A: She isn't cold right now
48 | B: I'm **not either**
49 |
50 | A: They enjoy cooking
51 | B: We do **too**.
52 |
53 | A: He has a car
54 | B: She does **too**
55 |
56 | ## SO, TOO, NEITHER and EITHER
57 |
58 | ### So and too
59 | I like Japanese food a lot.
60 | * So do I / I do too
61 |
62 | I'm crazy about dessert
63 | * So I'm I / I am too
64 |
65 | I can eat spicy food
66 | * So can I / I can too
67 |
68 | ### Neither and Either
69 | I don't like greasy food
70 | * Neither do I / I don't either
71 |
72 | I'm not in the mood for Indian food
73 | * Neither am I / I'm not either
74 |
75 | I can't stand fast food
76 | Neither can I / I can't either
77 |
78 |
79 | # Grammar: Use of different types of verbs
80 | There are different types of verb forms
81 | * To + verb
82 | * Verb + ing
83 | * Modal + verb
84 |
85 | Examples:
86 | * we like **to spend**d time with our friends
87 | * They enjoy **waking** up early: The verb enjoy alway is fallow by **ing** verb
88 | * You **can** go to the GYM in the morning
89 | * They **can't** go outside now
90 | * She hates **working** out
91 |
92 |
93 | # Grammar: The use of object pronouns
94 | Object pronouns are used to replaced nouns that **received an action**.
95 | * My mom loves my sister. She loves her.
96 | * Nicholas cooks spaghetti. He cooks it.
97 |
98 | ## Object pronouns
99 | * I -> Me. She likes me.
100 | * You -> You. John calls you
101 | * He -> Him. I can see him
102 | * She -> Her. My mom loves her
103 | * We -> Us. You need us
104 | * They -> Them. She teach them
105 | * It -> It. I hit it
106 |
107 |
108 | * I have two dogs. I generally walk **them** in the morning when it’s cold.
109 |
110 | * I need to read this book. John is now reading **it**.
111 | * Carolina usually calls her mom in the afternoon. Right now she is calling **her**.
112 | * Many people like Carlos Vives. I personally don’t like **him**.
113 | Let’s go. They are waiting for **yuo**.
114 |
115 |
116 | # Grammar: The use of the pronouns everyone and nobody
117 |
118 | **Everyone** and **nobody** are indefinite pronouns, they use to refer to all members of a group that perform an action.
119 |
120 | Examples:
121 | * **Every** one in my class has a part time job.
122 | * **Nobody** in this conference wants to attend the next one.
123 | * **Everyone** in my family know how to cook.
124 | * **Nobody** in my job has a car **everyone** has a bike.
125 |
126 | # Grammar: Difference between simple present and present continuous
127 |
128 | **Simple present**
129 | We use the simple present to talk about things that happen all time, routines.
130 |
131 | Examples:
132 | * I have tea and crackers for breakfast
133 | * She walks everywhere, she doesn't have a car
134 | * He wakes up early in the morning
135 | * We eat a lot of fruits and vegetables
136 |
137 | **Present continuous**
138 | We use present continuous to talk about things that are happening right now.
139 |
140 | Structure:
141 | * Subject + Verb BE + Verb ING + complement
142 | * Subject + verb BE + NOT + verb ING + complement
143 | * Verb BE + Subject + verb ING + complement + ?
144 |
145 | Examples:
146 | * She is waking up early to go to the Gym
147 | * He isn't eating sugar right now
148 | * What are you doing to stay healthy?
149 | * They aren't reading books right now
150 | * I'm swimming three times a week
151 | * I'm trying to cut down on sugar and coffee
152 |
153 | A: What are you doing these days?
154 | B: I'm jogging at the park
155 |
156 |
157 | # Grammar: The use of the expressions if and when
158 |
159 | We use **IF** and **WHEN** to express the consequence of a specific action.
160 |
161 | Examples:
162 | * **When** I fell sick. I stay hom.e
163 | * **If** I feel sick. I stay home.
164 | * I take medicine **if** the doctor gives to me.
165 | * I take medicine **when** the doctor gives to me.
166 | * I see the doctor **when** I feel really bad.
167 | * I see the doctor **if** I feel really bad.
168 |
169 | # Grammar: How to use going to and the near future
170 | We use **be going to** to talk about plans and intentions.
171 |
172 | Structure:
173 | * Subject + verb be + going to + verb + complement
174 | * Subject + verb be + not + going to + verb + complement
175 | * Wh + verb be + subject + going to + verb + complement + ?
176 |
177 | Examples:
178 | * I'm going to have a big birthday celebration
179 | * They are going to get married in a small church.
180 | * She is going to graduate the next summer.
181 | * I'm not going to give up till pass this course.
182 | * When are we going to celebrate your birthday?
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
--------------------------------------------------------------------------------
/FRONT_END/HTMLCSS/note.md:
--------------------------------------------------------------------------------
1 | # Curso practico de HTML y CSS
2 |
3 | #### HTML
4 | Hyper Text Markup Language que nos ayuda a estructurar la información que se muestra al usuario.
5 |
6 | #### Tags
7 | Html utiliza tags que pueden ser contenedoras siempre abren y cierran pero cuando muestran contenido pueden cerrar o no.
8 |
9 | #### CSS
10 | Lenguaje que nos ayuda darle estilos a lo que estamos mostrando al usuario.
11 |
12 | #### Selector
13 | Selector + propiedad + valor de la propiedad = Reglas.
14 |
15 | Propiedades utilizadas en CSS:
16 | * Etiquetas: Etiquetas de html que se utilizan como referencia para dar el estilo.
17 | * Clases: Son más común utilizar
18 | * Id: id es un identificador de un componente
19 |
20 |
21 | #### HTML semantico
22 | Son nuevas etiquetas incluidas en HTML que nos ayudan a estructurar mejor un sitio web y añadir un significado concreto.
23 |
24 | ~~~html
25 |
26 |
27 |
28 |
29 |
30 |
31 | ~~~
32 |
33 | #### Tipos de display
34 | Los tipos de display más conocidos son:
35 | * Layout que inici en CSS1
36 | * Flex
37 | * Grid
38 |
39 | [Tipos de display](https://developer.mozilla.org/es/docs/Web/CSS/display)
--------------------------------------------------------------------------------
/FRONT_END/PREPROCESADORES/note.md:
--------------------------------------------------------------------------------
1 | # Preprocesadores CSS
2 | ## Introducción
3 | #### Conceptos básicos de CSS
4 | Cascading Styles Sheet, prácticamente son las reglas que se les aplicas a un documento HTML.
5 | * Extención .css
6 | * Puede ser envevido dentro de la etiqueta style en el documento HTML
7 | * Puede ser exportado con la etiqueta link dentro de la etiqueta header.
8 |
9 | **Un estilo CSS esta formado por: Selector, declaración y una propiedad o valor.**
10 |
11 | ```css
12 | h1 { color: blue; }
13 | ```
14 |
15 | #### Selectores CSS
16 |
17 | Nos permiten seleccionar un elemento de página a la cual vamos a aplicar los estilos.
18 |
19 | Selectores:
20 | * Selector universal **\***: Sirve para aplicar estilos a todo el documento.
21 | ```css
22 | /*
23 | Todas las etiquetas tendran margen de 0
24 | */
25 | * {
26 | margin: 0;
27 | }
28 | ```
29 | * Selector de etiqueta: Se utiliza las etiquetas de html a las las cuales podemos agreagrarles estilos.
30 |
31 | ```css
32 | /*
33 | Las etiquetas h1,h2,p tendran color blanco
34 | */
35 | h1,h2,p {
36 | color: white;
37 | }
38 | ```
39 | * Selector de ID: este selector se indentfica con **\#**, este debe de setr único
40 | ```css
41 | #service {
42 | color: white;
43 | }
44 |
45 | ```
46 | * Selector de clase: este selector se indentfica con **.**.
47 | ```css
48 | .service {
49 | color: white;
50 | }
51 | ```
52 |
53 | * Selector anidado, se aplican estilos a elemetos decendientes
54 |
55 | ```html
56 |
Services
57 |
58 |
Services
59 |
60 | ```
61 | ```css
62 | /*
63 | Para este caso todas la etiquetas dentro de la case container seran de color blanco.
64 | */
65 | .container h1{
66 | color: white;
67 | }
68 | ```
69 |
70 | * Selector hijo **>**
71 | ```css
72 | /*
73 | Para este caso los hijos directos de la clase service son los que tomaran los estilos
74 | */
75 | .service > p{
76 | color: white;
77 | }
78 | ```
79 |
80 | * Selector adyacente **+**
81 | ```html
82 |
Services
83 |
Services
84 | ```
85 |
86 | ```css
87 | /*
88 | Para este caso a la primera etiqueta de h1 tendra el color negro y las segunda sera de color blanco
89 | */
90 | h1 {
91 | color: black;
92 | }
93 | h1+h1{
94 | color: white;
95 | }
96 | ```
97 |
98 | * Selector de atributo **input[type: number]**
99 | ```html
100 |
101 |
102 | ```
103 |
104 | ```css
105 | /*
106 | El inout de tipo texto sera de color azul y el de numero rojo
107 | */
108 | input[type: "number"]{
109 | color: red;
110 | }
111 |
112 | input[type: "text"]{
113 | color: blue;
114 | }
115 | ```
116 |
117 | Como determinar el valor de una regla CSS
118 | * ID: 100
119 | * clase: 10
120 | *
121 |
122 | ## Evelución de las tecnologías de Front-End
123 | #### Introcucción a los preprocesadores
124 |
125 | Los preprocesadores nos ayudan a escribir pseudocódigo de forma modular el cual puede ser transformado de forma que el navagador pueda entender.
126 |
127 | Ventajas:
128 | * Tiempo
129 | * Código sencillo
130 | * Modularización
131 |
132 | #### Metodologías para estructurar código
133 |
134 | Ventajas
135 | * Evitar redundancia
136 | * Evitar mal uso de propiedades
137 | * Solución de problemas de manejo en sistemas grandes y complejos
138 |
139 | #### Introducción a BEM
140 |
141 | BEM establece que debemos utilziar clases para nuestros selectores:
142 | * Bloques: Son los elementos más grandes los cuales contienen otros elementos
143 | * Elementos: Estos siempre formam parate de un bloque, estos pueden ser:
144 | * Textos
145 | * Botones
146 | * Imagnes
147 | * Modificadores: Se uzan para darle un estilos espesifico a un bloque o elemento.
148 |
149 | #### Guías para creación y mantenimiento de código
150 |
151 | * Ser consistentes con la indentación.
152 | * Consistencia con espacios, corchetes, puntos y comas.
153 | * Consistencia de números, de selectores y divisiones.
154 | * Agrupaciones de propiedades.
155 | Uso de ID’s y clases.
156 |
157 | ## Preprocesadores para HTML
158 |
159 | #### Interpolación
160 |
161 | Prácticamente es la anidación de los elementos de HTML
162 |
163 | ```html
164 | html(lang="en")
165 | head
166 | meta(charset="UTF-8")
167 | meta(name="viewport", content="width=device-width, initial-scale=1.0")
168 | title Document
169 | link(rel="stylesheet", href="style.css")
170 | ```
171 |
172 | #### Variables
173 |
174 | Para declarar una variable en pug se realiza de la siguiente manera
175 |
176 | ```pug
177 | -var titlte = "Title"
178 | ```
179 |
180 | Para acceder a ella
181 | ```pug
182 | h1= titlte
183 |
184 | h1 #{titlte}
185 | ```
186 |
187 | #### Condicionales y Loops
188 |
189 | Loops
190 | ```pug
191 | -var titles = ["One","Two","Three"]
192 | ul
193 | each title in titles
194 | li #{title}
195 | ```
196 |
197 | Condicionales
198 | ```pug
199 | -var user = "Jose Luis"
200 | if user
201 | a Hola #{user}
202 | else
203 | a.button Registro
204 | ```
205 |
206 |
207 | #### Mixins
208 | Su finalidad es crear una funcionalidad que pueda ser reutilizada pero no de forma autonoma, nos permiten crear bloaues de código que cambian de acuerdo al valor del paramarametro que le enviemos.
209 |
210 | ```pug
211 | mixin box(image, title, content)
212 | .box
213 | .box__image: img(src="", alt="")
214 | .box__content
215 | h3 #{title}
216 | p #{content}
217 |
218 |
219 | main.content
220 | +box("image0", "title1", "content2")
221 | +box("image0", "title1", "content2")
222 | +box("image0", "title1", "content2")
223 | ```
224 |
225 | #### Includes y Extends
226 |
227 | Se puede utilizar **Includes** para importar archivos externos y **Extends** permite adicionar bloques de código.
228 |
229 |
230 | ## Introducción a Less
231 |
232 | #### Importar otros archivos
233 | ```less
234 | @import "file.less"
235 | ```
236 |
237 | #### Declaración de variables
238 | ```less
239 | @primary-color: #000000;
240 |
241 | h1 {
242 | color: @primary-color;
243 | }
244 | ```
245 |
246 | #### Funciones ya definidas
247 | ```less
248 | //Cambiar la opacidad
249 | color: fade(@color, 50%)
250 | ```
251 |
252 | #### Mixins
253 |
254 | Su funcionalidad es utilidar esta funcionalidad en otros componentes.
255 | ```less
256 | // se declara
257 | .box-shadow {
258 | -webkit-box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.75);
259 | -moz-box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.75);
260 | box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.75);
261 | }
262 |
263 | //como se invoca
264 | .box {
265 | .box-shadow;
266 | }
267 | ```
268 |
269 | ## Introducción a Sass
270 | Syntactically Awesome StyleSheets
271 | Badasa en Ruby
272 |
273 | #### Variable
274 | ```scss
275 | $font-one = "Lato";
276 |
277 | h1 {
278 | font-family: $font-one;
279 | }
280 | ```
281 |
282 | #### Imports y Extends
283 |
284 | **Import** nos permite escribir código modular separando en diferentes archivos para después importarlos todos en uno solo y tener una base código mucho más ordenada.
285 |
286 | **Extends** sirve para insertar los estilos de un selector en otro.
287 |
288 | ```scss
289 | @import"../componentes/globales.scss";
290 |
291 | .class-one {
292 | background: #FFFFFF;
293 | }
294 |
295 | .class-two {
296 | @extend .class-one;
297 | }
298 | ```
299 |
300 | #### Mixins
301 |
302 | Su funcionalidad es utilidar esta funcionalidad en otros componentes.
303 |
304 | ```scss
305 | // se declara
306 | @mixin box-shadow {
307 | -webkit-box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.75);
308 | -moz-box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.75);
309 | box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.75);
310 | }
311 |
312 | //como se invoca
313 | .box {
314 | @include box-shadow;
315 | }
316 | ```
317 |
318 |
319 | #### Funciones
320 |
321 | La diferencia entre mixins y funciones es que las funciones por general hacen cálculos y regresan un resultado que es usado como valor de alguna propiedad.
322 |
323 | ```scss
324 | @function get-opacity($color, $level){
325 | @return rgba($color, $level);
326 | }
327 |
328 | .box {
329 | color: get-opacity($color, 50%);
330 | }
331 | ```
332 |
333 | #### Condicionales y Loops
334 | ```scss
335 | @each $header, $size in (h1: 30px, h2: 25px, h3: 20px){
336 | #($header){
337 | font-size: $size;
338 | margin: 0;
339 | }
340 | }
341 |
342 | @if () {
343 | //
344 | } @else {
345 | //
346 | }
347 | ```
348 |
349 | ## Stylus
350 |
351 | Es el preprocesador CSS más reciente de los tres. Fue creado por TJ Holowaychuk (ex programador de Node.js) y escrito en JADE y Node.js.
352 |
353 | #### Variables
354 |
355 | ```stylus
356 | FontOne = 'Lato'
357 | FontTwo = 'Oswald'
358 |
359 |
360 | h1
361 | font-family FontOne
362 | ````
363 |
364 | #### Mixins
365 |
366 | ```stylus
367 | container()
368 | ...
369 |
370 | .demo
371 | container()
372 | ```
373 |
374 | #### Functiones
375 |
376 | ```stylus
377 | add(a, b)
378 | a + b
379 |
380 | body
381 | padding add(10px, 5)
382 | ```
383 |
384 | #### Condicionales y Loop
385 |
386 | ```stylus
387 | compare(a, b)
388 | if a > b
389 | higher
390 | else if a < b
391 | lower
392 | else
393 | equal
394 |
395 |
396 | compare(5, 2)
397 |
398 |
399 | for header in 3 2 1
400 | h{ header }
401 | font-zise 35px -(5 * header)
402 | margin 0
403 | ```
--------------------------------------------------------------------------------
/FRONT_END/REACT/PWA/note.md:
--------------------------------------------------------------------------------
1 | # Curso de PWA con ReactJS
2 |
3 | #### ¿Qué es una PWA?
4 |
5 | ¿Cómo es la web hoy?
6 | * No funciona muy bien
7 | * Malas conexiones
8 | * La UX no solamente es el diseño de nuestra app.
9 |
10 | Importancia
11 | * 50% de usuarios abandonan sitio en 3 segundos
12 | * cada segundo cuesta entre 5-10%
13 |
14 |
15 | **PWA es un Estándar de calidad en nuestras aplicaciones**.
16 |
17 | Palabras claves:
18 | * Performance
19 | * Instalable Homescreen
20 | * Dar soporte Offline
21 |
22 |
23 | #### Progressive Web App vs. Native App
24 |
25 | Depende de las funcionalidades que necesitemos.
26 |
27 | #### proyecto
28 |
29 | #### Google Lighthouse
30 |
31 | Permite hacer diagnostico de performance de nuestra app.
32 | Notas
33 | * Lighthose no sustituye pruebas con dispositivos reales.
34 | * Diagnostico First meaningful Paint y First interactive:
35 | * First meaningful Paint: tiempo que tarda en renderizar la primera pantalla debe de pasar de 1 y 2
36 | * First to intercative: Cuando ya se cargo React y podemos interactuar con la app.
37 |
38 | Para bajar los tiempos se debe de utilizar Server rendering (First meaningful Paint)
39 |
40 | Depende del framework que estamos utilizando (First intercative), este tiene que ser de almenos de 5 segundos.
41 |
42 | #### Creando un Web Manifest
43 | * short_name: Es el nombre que se utiliza en la Homescreen.
44 | * name: Es el nombre de nuestra aplicación.
45 | * icons: Especifica un array de imágenes que servirán como iconos de la aplicación. Cambiaremos el “favicon.ico” por “icon.png”, especificamos el tamaño a 512x512 y el tipo a “image/png”.
46 | * start_url: Nos indica en que página comienza nuestra aplicación, por compatibilidad siempre conviene que sea “/” en lugar de “./index.html”.
47 | * display: Define el modo de visualización para la aplicación. Standalone significa que la aplicación puede correr por si misma.
48 | * theme_color: Define qué color vamos a usar en la barra de tareas de Android para que combine con nuestra aplicación.
49 | * related_applications: Sirve si queremos que Chrome en el Add to Homescreen recomiende una aplicación del Store.
50 |
51 | ~~~json
52 | {
53 | "short_name": "Recetas",
54 | "name": "Platzi Recetas",
55 | "icons": [
56 | {
57 | "src": "/icon.png",
58 | "sizes": "512x512",
59 | "type": "image/png"
60 | }
61 | ],
62 | "start_url": "/",
63 | "scope": "/",
64 | "display": "standalone",
65 | "theme_color": "#ffa500",
66 | "background_color": "#ffffff",
67 | "related_applications": [],
68 | "prefer_related_applications": false
69 | }
70 | ~~~
71 |
72 |
73 | ## Servir Worker
74 | #### ¿Qué es un Service Worker?
75 | * Soporte Offlien
76 | * Proxy in browser
77 |
78 | Es una de las características más importantes de las PWA, es lo que hace las las PWA funcionen, es un script que se ejecuta detrás de un navegador y esto no puede tocar a nuestro DOM.
79 | Se puede tener control absoluto a nivel de red de nuestra aplicación.
80 |
81 | #### Introducción a workbox
82 |
83 | * Los service Workers solo funcionan en producción.
84 | * Limpiar la información del sitio.
85 | * No conviene escribir nuestros services workers debido a la complejidad del manejo del cache.
86 | * react-app-rewired: para evitar hacer [eject](https://medium.com/curated-by-versett/dont-eject-your-create-react-app-b123c5247741) se va utilizar react-app-rewired
87 | * config-overrides.js: Sobre escribir configuraciones
88 | * precacheAndRoute: archivos js los va aguardad en background
89 | * Cambiar react-scripts por react-app-rewired
90 |
91 | **Buena práctica es limpiar la cache del navegador**
92 |
93 | #### Implementando Workbox
94 | Estrategias de carga con Workbox
95 |
96 | * workbox toma una lista de assets para precargarlos y si la ruta coincide exactamente con un asset entonces lo tomara de cache.
97 | * registerNavigationRoute: se encarga de hacer el funcionamiento de un service worker y sino encuentra una url se dirige a index para que se encargue de mostrar
98 | * Estrategias de carga:
99 | * Network Only: se encarga de checar si hay internet, si hay hace la petición de lo contrario se rompe la aplicación, útil para cuando manejamos datos en tiempo real.
100 | * Network First: hace petición y si no hay red toma datos en cache, utilizar cuando se quiere la última versión y tener soporte en cache.
101 |
102 | #### Aplicando Estrategias de Carga
103 | * Cache First: Busca recursos en cache, si no están estos recursos, entonces hace petición y guarda recurso y muestra datos, utilizar en caso de recursos estáticos tales como imágenes o fuentes.
104 | * Stale While Revalidate: va a cache y a red al mismo tiempo y la que llegue más rápido lo muestra, en este caso siempre van a ser datos en cache, una vez que concluye la petición sustituye el recurso.
105 |
106 | Si se requiere un regla por defecto, esta debe de escribirse hasta el final del archivo.
107 |
108 | #### Google Analytics Offline
109 |
110 | * Para la implementación vamos a configurar react-ga: plugin el cual permite correr google analytics en React.
111 | * Cambiar BrowserRouter por router común para poder extender a los métodos de Router
112 | * Desactivar AdBlocker para desarrollo para no bloquear Google Analytics.
113 | * Workbox ya cuenta con con método para Google Análytics de forma Offline, captura todas las peticiones realizadas con react-ga, y cuando se retome la conexión a internet se enviaran las peticiones.
114 |
115 | ## Fucnionalidades Avanzadas
116 | #### Web Share API
117 | Nos permite usar un share nativo del sistema operativo.
118 |
119 | Web Share API solo funciona con HTTPS y para android
120 |
121 | #### Trabajando Offline
122 |
123 | Para saber si estamos offline utilizamos **Navigator.onLine**, este siempre marca online cuando no estemos offline lo que significa es que si tenemos una mala conexión va a marcar como offline.
124 |
125 | Lo mas correcto es utilizar window, "offline" y "online".
126 |
127 | #### Notificaciones
128 |
129 | Permisos para las notificaciones:
130 | * Estado por defecto: No sabemos si debemos enviar notificaciones por lo que debemos preguntar al usuario.
131 | * Granted: El usuario a concedido enviarle permisos.
132 | * Denieded: el usuario deniega mandarle permisos.
133 |
134 | Identificar si nuestro navegador puede mandar notificaciones.
135 |
136 | * Validar si hay notificaciones y serviceWorker para poder enviar la notificaciones.
137 | * Validar permisos de lo contraio solicitarlo.
138 |
139 | #### Notas
140 |
141 | #### ¿Cuándo usar Network Only?
142 | Por defecto si no queremos cache o manejamos información en tiempo real.
143 | **Network First** es otra estrategia de carga, se encarga mandar la petición a internet, si la conexión a internet esta caída entonces tomara la información que tenga almacenada en cache.
144 |
145 | #### ¿Cuándo usar Network First?
146 | Cuando queremos la última versión de un asset y tener soporte offline.
147 |
148 | **Cache First**: es una estrategia de carga que lo primero que hace es ir al cache y si encuentra el recurso lo sirve directamente. En caso de no encontrarlo va a ir a red, guardar la información en cache y servir esa versión.
149 |
150 | Esta estrategia puede ser peligrosa y solo es recomendable cuando queremos máxima velocidad y estamos manejando un recurso que nunca cambia, como una imagen o alguna fuente.
151 |
152 | **Stale While Revalidate**: esta es una estrategia de carga muy particular y que mejor funciona a la hora de mejorar el rendimiento. Lo que hace es ir a cache y a red al mismo tiempo, toma la versión más rápida que siempre será la de cache y en cuanto recibe la de red va a actualizar la versión de cache.
153 |
154 | Es recomendable esta estrategia cuando queremos mucha velocidad y estamos manejando un recurso que puede estar levemente desactualizado.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Contenido
2 |
3 |
4 | ## Algoritmos
5 | * [Algoritmos de ordenamiento](https://github.com/bautistaj/notes/blob/master/ALGORITMS/SORT/note.md)
6 |
7 | ## Arquitectura de software
8 | * [Fundamentos de arquitectura de software](https://github.com/bautistaj/notes/blob/master/ARCHITECTURE/BASIC/note.md)
9 | ## Crecimiento profesional
10 | * [Gestión de tiempo](https://github.com/bautistaj/notes/blob/master/CRECIMIENTO/GESTIONTIEMPO/note.md)
11 | * [Estrategias de estudio](https://github.com/bautistaj/notes/blob/master/CRECIMIENTO/ESTRATEGIAS/note.md)
12 |
13 | ## Base de datos
14 | * [Fundamentos de bases de datos](https://github.com/bautistaj/notes/blob/master/BD/BD/apuntes.md)
15 | * [SQL y MySql](https://github.com/bautistaj/notes/blob/master/BD/BDBASIC/apuntes.md)
16 | * [MongoDB](https://github.com/bautistaj/notes/blob/master/BD/MONGO/note.md)
17 | ## Backend
18 | * [Fundamentos de APIREST](https://github.com/bautistaj/notes/blob/master/BACK_END/API_REST/note.md)
19 | * [ECMAScript](https://github.com/bautistaj/notes/blob/master/BACK_END/JAVASCRIPT/ecmas6.md)
20 | * [Node](https://github.com/bautistaj/notes/blob/master/BACK_END/NODE/note.md)
21 | * [Expresiones Regulares](https://github.com/bautistaj/notes/blob/master/BACK_END/REGULAR_EXPRESSIONS/note.md)
22 | ## Frontend
23 | * [Web Components](https://github.com/bautistaj/web-components)
24 | * [PWA con React](https://github.com/bautistaj/notes/blob/master/FRONT_END/REACT/PWA/note.md)
25 |
26 | * [Preprocesadores](https://github.com/bautistaj/notes/blob/master/FRONT_END/PREPROCESADORES/note.md)
27 |
28 | ## Servidores
29 | * [Administración de servidores Linux](https://github.com/bautistaj/notes/blob/master/SERVER/LINUX_SERVER/note.md)
30 | * [AWS](https://github.com/bautistaj/notes/blob/master/SERVER/AWS/note.md)
31 | * [DigitalOcean](https://github.com/bautistaj/notes/blob/master/SERVER/DIGITALOCEAN/note.md)
32 | ****
33 |
34 | ## Inglés
35 | * [Curso de Inglés Práctico: Fundamentos](https://github.com/bautistaj/notes/blob/master/English/note.md)
36 | * [Curso de Inglés Práctico: Gramática](https://github.com/bautistaj/notes/blob/master/English/Curso%20de%20Ingl%C3%A9s%20Pr%C3%A1ctico:%20Gram%C3%A1tica/note.md)
37 |
38 |
39 |
--------------------------------------------------------------------------------
/SERVER/AWS/note.md:
--------------------------------------------------------------------------------
1 | # AWS
2 |
3 | #### ¿Qué es el cómputo en la nube?
4 | * Sitios web
5 | * Respaldos y configuración
6 | * Archivos permanentes
7 | * DevOps
8 | * Análisis masivos
9 | * Computo Serverless: Micorservicios
10 | * Computo de alto rendimiento
11 | * Aplicaciones empresariales: Levantar servicios cada que se utilice
12 | * Internet of Things
13 | * Aplicaciones empresariales
14 | * Distribución de media: Archivos, mecanismos de hacer transcoding
15 | * Servicios móviles
16 | * Cómputo cientifico
17 | * E-commerce
18 | * Ambientes híbridos.
19 | * Blockchain
20 |
21 | Ventajas de AWS
22 | * Cero inversión inicial
23 | * Uso lo que necesitas
24 | * Velocidad cuando la necesitas
25 | * Si no lo usas. no lo pagas
26 | * Cobertura mundial.
27 |
28 |
29 | #### Introducción a la oferta de servicios de AWS y sus aplicaciones
30 |
31 | * Sección de computo:
32 | * Storage
33 | * DataBase
34 | * Migrations of services
35 | * Networking & Content
36 | * Developer Tools
37 | * Management Tool
38 | * Cloud Watch
39 | * Media Service
40 | * Elastic trasncoder: transmisión streaming
41 | * Machine Leraning
42 | * Recognition
43 | * Analytics
44 | * Security, Identity & Compliance
45 | * IAM Administración de usuarios
46 | * GuardDuty: Registro de actividad para ataques
47 | * Mobile Services
48 | * AR & VR
49 | * Application Integration
50 | * Customer Engagement
51 | * Business Productivity
52 | * Desktop & Apps Streaming
53 | * Workspace configuración de recursos
54 | * Internet of Things
55 | * Game Development
56 |
57 | #### Ejemplo de arquitectura con Elastic Beanstalk
58 | Tiene como ventaja la alta disponibilidad y la eficiencia para atender una gran cantidad de usuarios
59 |
60 | #### ¿Qué es EC2?
61 | Maquinas virtuales en linea
62 | * instancias: Maquinas virtuales
63 | * Seguridad: Generación de diferentes llaves
64 | * Espacio: Diversos opciones de espacio en disco, virtualmente infinito
65 | * Redundancia: Tener varias copias de misma máquina.
66 | * Firewall: Configuración desde maquina y los puertos a utilizar.
67 | * Direcciones IP estáticas: Puedes optar comprar una IP pública estática.
68 | * Respaldos: Respaldo de ambientes, sistemas
69 | * Escalables: Incrementar los recursos de la máquina: CPU, RAM
70 | * Migración de snapshot: Puedes copiar snapshot en cualquier región.
71 |
72 | #### Creando una isntancia de ECs
73 |
74 | #### Conectándonos a nuestra instancia desde Windows
75 |
76 | Responsable
77 | * Actualizar software
78 | * Libertad de instalar lo que se necesite
79 | * Respaldos
80 | * Restauración
81 |
82 | Actualizar e instalar emacs
83 | * yum update
84 | * yum emacs
85 |
86 | #### Subiendo un proyecto: Clonando un repositorio de GitHub a nuestra Instancia de EC2
87 | * Instalar git: yum install git
88 | * Clonar proyecto
89 |
90 | #### Subiendo un proyecto a nuestra instancia de EC2: Ejecutar nuestro proyecto
91 | Instalar
92 | * pip install flask: pip gestor de dependencias de python
93 | * security groups agregar nueva regla para abrir puerto.
94 |
95 | #### ¿Qué es Lambda y Serverless?
96 |
97 | ¿Qué es lambda?
98 | Lugar donde puedes ejecutar tus funciones de código.
99 | * Serverless: No existe un servidor y solo el código que AWS se encarga de ejecutarlo.
100 | * Lenguajes soportados:
101 | * Node (Javascript)
102 | * Python
103 | * Java 8
104 | * C#
105 | * .Net Core
106 | * Go
107 |
108 | Ventajas:
109 | * Seguridad
110 | * Performance
111 | * Código aislado
112 |
113 | 1 000 000 de peticiones gratis al año.
114 |
115 | #### Creando una función Lambda
116 |
117 | ## Elastic Beastalk
118 |
119 | #### Conociendo Elastic Beanstalk
120 | ¿Qué es?
121 | Es una plataforma donde obtienes un balanceador de cargas y tantas instancias de EC2 como se requieran.
122 | Puedes escalar de manera dinámica según la respuesta del usuario CPU, RAM
123 | Soporta:
124 | * Docker image
125 | * GO
126 | * Java SE
127 | * Java con Tomcat
128 | * .NET + Windows server + IIS"
129 | * Node JS
130 | * Python
131 | * Ruby
132 |
133 | #### Creando un ambiente en Elastic Beanstalk
134 | #### Almacenamiento - S3
135 | Opciones de almacenamiento
136 | * S3: Repositorio de archivos para crear y manipular datos.
137 | * Glacier: Servicio de almacenamiento en la nube para almacenar datos y realizar copias de seguridad a largo plazo.
138 |
139 | #### Almacenamiento - Glacier
140 | Repositorio de almacenamiento económico pero más lento excelente para cuando requieras guardar archivos históricos.
141 | Tiempo de respuesta de entre 2 a 15 minutos.
142 |
143 | ## Bases de datos
144 | #### Bases de Datos - RDS Aurora PG
145 |
146 | Amazon creo un servicio llamado RDS que optimiza el rendimiento de base de datos.
147 | RDS tiene varias opciones de motores de base de datos:
148 | * Aurora PG
149 | * Aurora MySQL, MariaDB, PostgreSQL, Oracle y Microsoft SQL Server
150 |
151 | #### Conociendo RDS PG
152 | AWS implementa el motor de PostgreSQL (RDS PG)
153 | * Tareas optimizadas
154 | * Respaldos frecuentes automatizados
155 | * Cifrado
156 | * Migración asistida
157 | * Alta disponibilidad
158 |
159 | No es posible conectarse a la base de datos hasta que explícitamente lo indiques.
160 |
161 | #### Conociendo Aurora PG (Postgrest)
162 | Toma el motor de base datos Postgres optimiza el Kernel de lo cual se obtiene un postgrest 3x más rápido.
163 | * No es gratuito
164 | * AWS RDS PG es eficiente:
165 | * Modificaciones del código al mismo motor de la base de datos
166 | * Instancias de última generación
167 | * Compatible con PG 9.6.x
168 | Debido a que tiene un espejo entonces, al ralizar algún cambio este no deja de funcionar.
169 | Configuración inicial de alta disponibilidad en 3 diferentes zonas.
170 |
171 | #### Mejores prácticas de Bases de Datos y RDS
172 |
173 | * Respaldo diarios
174 | * Replicar la base de datos.
175 |
176 | ## Redes
177 | #### Redes - Route53
178 | Uno de los servicios de red más interesantes es Route53
179 | AWS provee un DNS muy poderos con el cual podras crear subdominios asignados a instancias y lo veras reflejado es segundos.
180 | Route53 esta disponible en todas las regiones.
181 |
182 |
183 | ## Herramientas de administración.
184 | Estas las herramientas de AWS para la administración
185 | * IAM: permite contralar los permisos de accesos de todos los usuarios.
186 | * CloudWatch: Te mostrara diversos eventos que suceden en el entorno, lo cual te va a permitir la centralización de los LOGS.
187 | * Cloudtrail: Herramienta de auditoría que permite ver quién y que realizó en la cuenta de AWS.
188 |
189 | Estas opciones cuentan con almacenamiento histórico.
190 |
191 | #### Utilizando IAM.
192 |
193 | #### Cloud Watch
194 | #### Cloudtrail
195 |
196 | #### Certificate manager
197 | Dos de los más importantes herramientas de seguridad son:
198 | * Certificate Manager: AWS te permite crear tus certificados o bien importarlos si ya tienes uno.
199 | * GuardDuty: Te permite auditar todos los intentos de conexión a tus instancias.
200 |
201 | #### GuardDuty
202 | Sistema de seguridad que permite ver los intentos de acceso a todas las instancias.
203 |
204 | ## Bonus
205 |
206 | #### AWS Rekognition
207 | Deep learning
208 |
209 | #### Creando servicio de postgres
210 | #### Accediendo a nustra base de datos de PG
--------------------------------------------------------------------------------
/SERVER/DIGITALOCEAN/note.md:
--------------------------------------------------------------------------------
1 | # Digital Oceal
2 |
3 | Existen tres categorías de servicios de internet:
4 | * Saas: Software as a Service
5 | * PaaS: Platform as aS Service
6 | * IaaS: Infrastructure as a Service
7 |
8 | Digital ocen es IaaS
9 |
10 | #### ¿Cuándo utilizar DigitalOcean?
11 | Existen muchas opciones para realizar despliegue de nuestro proyecto.
12 |
13 | * Hosting gratis: No se puede administrar el hardware, solo para una decena de usuarios.
14 | * Shared hosting: No se puede administrar el hardware, con un poco más de potencia por lo generas se utiliza LAMP
15 | * VPS Virtual Private Server: Dispositivo virtual donde podemos cambiar el hardware, para miles de usuario.
16 | * Dedicado: Maquina física dónde todos los recurso están dedicados a nuestra aplicación.
17 | * Cloud (PaaS/IaaS): Solución de tipo VPS dónde podemos administrar los recurso de hardware
18 | * DataCenter: Cuando se tiene millones de usuarios pero es una solución muy costosa.
--------------------------------------------------------------------------------
/SERVER/LINUX_SERVER/note.md:
--------------------------------------------------------------------------------
1 | # Administradores de servidores
2 |
3 | #### Comandos
4 | * clear: Limpiar pantalla
5 | * ls: Listar contenido de directorio
6 | * ls -l: listado en formato largo
7 | * ls -la: listado todos los archivos "incluyendo archivos ocultos" en formato largo
8 | * pwd: print work directory
9 | * ~: Indica que estamos en el home
10 | * touch: Crear nombre de archivos
11 | * cp: copiar archivos/directorios.
12 | * mkdir: male directory, crea directorios
13 | * cd: change directory
14 | * cd ..: Regresar al directorio padre
15 | * cd -: Regresar al directorio inmediato anterior
16 | * **d**rwxr-xr-x indica que es un directorio
17 | * **-**rwxr-xr-x indica que es un archivos
18 | * mv: mover un directorio que también nos sirve para cambiar nombre de directorio.
19 | * rm: remove
20 | * rm -r: Remove de forma recursiva
21 | * touch: modifica la fecha de creación
22 | *
23 |
24 | #### Diferencias entre LESS, CAT, HEAD y TAIL
25 |
26 | Comandos para leer archivos.
27 | * cat: concatenar archivos, no recomendable para archivos grandes.
28 | * less: mostrar contenido de un archivos de forma paginado.
29 | * tail: solo muestra las ultimas 10 lineas del archivos.
30 | * tail -f: solo muestra las primeras lineas pero se mantiene y muestra todos los cambios
31 | * head: muestra las primeras 10 lineas del archivo.
32 |
33 | #### Integración con archivos y permisos
34 | ~~~bash
35 | drwxr-xr-x 2 root root 4096 Feb 19 01:17 bin
36 | drwxr-xr-x 2 root root 4096 Apr 24 2018 boot
37 | ~~~
38 | Los primeros 0 caracteres excluyendo el primero nos muestran los permisos que se tienen en el archivo.
39 |
40 | ~~~
41 | r lectura
42 | w escritura
43 | x ejecución
44 |
45 | rwx-rwx-rwx
46 | * Primer grupo es para el usuario propietario del archivo
47 | * Segundo grupo es para el grupo al que pertenece el usuario
48 | * Tercer grupo es para otros usuarios.
49 | ~~~
50 |
51 | #### comandos
52 | * chmod: change owner
53 | Este comando se puede utilizar con letras **ugoa** donde u: usuario propietario, g: grupo, o: otros usuarios y a: todos.
54 |
55 | Para agregar el permiso de ejecuón al usuario ejecutamos
56 | ~~~
57 | chmod u+x file.txt
58 | ~~~
59 |
60 | Para el siguiente comando se agrega el permiso de ejeción para todos los usuarios
61 | ~~~
62 | chmod +x file.txt
63 | ~~~
64 |
65 | Hay otra forma de asignar permisos y es utilizando el formato **Octal** [1-7]
66 | ~~~
67 | chmod 755 file.txt
68 | ~~~
69 | Los permisos quedarían de la siguiente manera:
70 | ~~~
71 | rwxr-xr-x
72 | ~~~
73 |
74 | Para cambiar el propietario se utiliza **chown** change owner
75 | ~~~
76 | chown root: file.txt
77 | ~~~
78 |
79 | #### Conociendo las terminales linux
80 |
81 | Terminales de uno a 6 **tty1-tty6** la 7 es para ambientes gráficos.
82 |
83 | Comandos para el cambio de terminal.
84 |
85 | ~~~
86 | Ctrl+Alt+Fx
87 | ~~~
88 |
89 | Comando **chvt**
90 | ~~~
91 | sudo chvt 3
92 | ~~~
93 |
94 | * w: Cantidad de usuarios en el sistema
95 | * who: para identificar quién esta en sesión.
96 | * tty: terminal a la cual estoy conectado.
97 | * ps: proceso del sistema operativo
98 | * ps -ft tty1: identificar la terminal tyy1
99 | * tyy: muestra la terminal que estas usando.
100 | * kill: matar un proceso utilizando el process id **PID**
101 |
102 | Matar las terminales abiertas.
103 |
104 | #### Manejo y monitoreo de procesos y recursos del sistema
105 |
106 | Tarea importante verificar procesos que se estan ejecutando en el SO.
107 |
108 |
109 | * ps: proces status
110 | * ps aux:
111 | * | : se utiliza para enlazar comandos-
112 | * grep: busca en cadenas texto.
113 | * ctrl+z: Si se tiene un editor abierto es posible detener el proceso con este comando.
114 | * jobs: mostrar los procesos
115 | * fg: for ground, regresar al proceso que se paro.
116 | * &: ejecuta en background
117 | * nohup: Ejecuta el proceso per creara una salida llamada nohup.out en donde se encuentra lo que ejecuta el proceso.
118 |
119 | #### Monitoreo de recursos del sistema
120 |
121 | Monitoreo de CPU, Memoria, HHD.
122 |
123 | * top: Muestra información específica del sistema operativo.
124 | * cat /proc/cpuinfo | grep "Processor" para incluir mayusculas y minúsculas en la búsqueda incluimos **-i**
125 | * free: muestra el estado de la memoria.
126 | * free -h: Formato para humanos.
127 | * du: disk usage, Muestra información del disco duro.
128 | * du -hsc path: nos muestra el peso del directorio/archivo.
129 | * du -sm * : Muestra los archivos mas pesados.
130 | * du -hs * | sort -nr | head -5
131 | * ps auxf | sort -nr -k 3 | head -d: Listar los procesos que consumen más CPU **-k 3**.
132 | * ps auxf | sort -nr -k 4 | head -d: Listar los procesos que consumen más RAM **-k 4**.
133 |
134 | ## Instalación y manejo de software.
135 |
136 | #### Análisis de los parámetros de red
137 |
138 | * Ip publica:
139 |
140 | * Ip privada: solo se tiene acceso en mi propia red.
141 |
142 | * ifconfig: configuración de la interfaz, se listan las tarjetas y direccionamientos.
143 |
144 | * ip a: ip adress show, muestra la información de la red.
145 |
146 | * ip -4 a: muestra las tarjetas que utilizan ipv 4.
147 |
148 | * ip -6 a: muestra las tarjetas que utilizan ipv 6.
149 |
150 | * hostname: muestra el nombre de host.
151 |
152 | * route -n: muestra el gateway.
153 |
154 | * nslookup: nslookup nombre de dominio, nos muestra toda información de red del dominio.
155 |
156 | * curl: hace peticiones.
157 |
158 | * wget: obtener información de internet y descarga de archivos.
159 |
160 |
161 | #### Administración de paquetes acorde a la distribución.
162 |
163 | * Red hat
164 | * .rpm
165 | * Repositorios yum
166 |
167 | * Debian/Ubuntu
168 | * .deb
169 | * dpkg-reconfigure
170 | * repositorios apt
171 |
172 | **Red Hat Package Management**
173 | * Base de datos RPM almacenada en /var/lib/rpm
174 | * rpm -qa: Listar todos los rpm instalados en la máquina.
175 | * rpm -i package.rpm: instalar paquete
176 | * rpm -e package.rpm: Remover paquete del sistema.
177 |
178 | Comando yum
179 |
180 | * yum install package
181 |
182 | **Debian package Management**
183 | * Base de datos DPKG localizada en /var/dpkg
184 | * dpkg -l: Lstar todos los debs instalados en la máquina.
185 | * dpkg -i package.deb: Intalar paquete
186 | * dpkg -r package.deb: Remover paquete.
187 | * dpkg-reconfigure package: reconfigurar paquetes instalados.
188 | * apt install package
189 |
190 | #### Manejo de paquetes en sistemas basados en Debian
191 |
192 | Todo lo que tiene que ver con actualizaciones se debe de tener permisos root.
193 |
194 | * apt dist-upgrade: Modifica Kernel, live bash.
195 | * apt search "mysql$"
196 | * apt-cache search "mysql$"
197 | * dpkg -l
198 | * snap search aws: snap es el nuevo gestor de paquetes.
199 | * snap install canonical-livepatch: instalamos este software para poder actualizar le kernel sin la necesidad de reiniciar
200 |
201 |
202 | #### Administración de software con YUM y RPM para CentOS
203 |
204 | * rpm -qa: muestra todos los paquetes instalados
205 | * rpm -qi bash: Mostrar la información del paquete bash.
206 | * rpm -qc bash: muestra todos los archivos que se contemplan en la configuración de bash.
207 |
208 | * yum update: actualizar repositorios.
209 |
210 | #### Nagios: Desempaquetado, descompresión, compilación e intalación de paquetes.
211 | * sudo apt install build-essential libgd-dev openssl libssl-dev unzip apache2 php gcc libdbi-perl libdbd-mysql-perl
212 | * sudo make all: ejecuta todos los archivos configurados
213 | * sudo male install
214 | * .tar: Empaquetado
215 | * .gz: comprimido
216 |
217 | ## Administración de usuarios
218 | #### Los usuarios una tarea vital en proceso de administración.
219 | comandos
220 | * id: muestra id y grupo de usuario en sesión, debian inicia la creación desde 1000 en Centos desde 500 el usuario 0 es de root
221 | * whoami: Quien soy yo :)
222 | * /etc/passwd: Muestra información de usuario.
223 | * /root:/bash : home
224 | * etc/shadow: Contraseñas sombra
225 |
226 | passwd root para activar el usuario.
227 |
228 | #### Creando y manejando cuentas de usuarios.
229 |
230 | * useradd bob: agregar usuarios, en este caso no tiene password, se debe configurar, no crea un home
231 | * adduser bina: En est caso pide password, crea un home
232 | * userdel bina: Elimina nombre de usuario
233 | * hitory: muestra el histórico de comandos ejecutados.
234 | * !23 : En este caso ejecuta el comando 23.
235 | * usermode: Modificar usuario.
236 |
237 | **Nunca modificar el el archivo passwd con editor de texto.**
238 |
239 | #### Entendiendo la membresía de los grupos
240 |
241 | Comandos
242 | * su: swith user
243 | * sudo su - nodejs
244 | * groups nodejs: Verificamos los grupos de nodejs, por defecto se asigna a mismo grupo nodejs.
245 | * sudo gpasswd -a nodejs sudo: Agregamos al usuario nodejs al grupo sudo.
246 | * gpasswd -d nodejs sudo: Eliminamos del grupo al usuarios nodejs
247 | * usermod -aG sudo nodejs: comando para agreagr al grupo sudo
248 | * groups nodejs: nos muestra el grupo al que pertenece el usuario.
249 | * sudo -l: muestra los permisos del archivo sudores.
250 |
251 | #### Usando PAM para el control de acceso de usuarios.
252 |
253 | * /etc/pam.d/ : Carpeta Configuración
254 | * /lib64/security/ : Carperta de Librerías
255 | * /etc/security : Cambios de configuración.
256 |
257 | * pwscore: Centos validar contraseña.
258 | * ulimit: Listar permisos de usuaris
259 | * ulimit -u 10: Solo tendra 20 procesos
260 | * #!/bin/bash: Encabezado de archivo para script.
261 | * etc/security/time.conf: Como configurar los usarios para que se logean en un horario predeterminado.
262 | * sudo vi /etc/security/time.conf
263 | * grupo wheel: grupo para ejecutar como sudo.
264 |
265 | ## Servicios en el sistema operativo.
266 |
267 | #### Autenticción de clientes y servidores sobre SSH
--------------------------------------------------------------------------------
/devops/Docker/note.md:
--------------------------------------------------------------------------------
1 | # Fundamentos de Docker
2 |
3 | # Introducción
4 |
5 | ## Introducción
6 | Durante el desarrollo de software vamos a tener diferentes problamaticas que resolver, como por ejemplo:
7 | las construcción, distribución y la ejecuón. Cada uno de estos problemas nos enfrentamos todos los desarrolladores.
8 |
9 | Acontinuacón detallamos más las problematicas antes mencionadas.
10 |
11 | Escribir código es solo una parte de la contrucción de Software y algunos problematicas a las que nos enfrentamos se describen acontinuacón.
12 |
13 | * Entorno de desarrollo: que nuenstro entorno de desarrollo es diferente a los de stagin, qa o producción.
14 | * Dependencias: las dependencias que utilizamos son diferentes entre cada desarrollador.
15 | * Entorno de ejecución: diferentes sistemas operativos que se utlizan en cada uno de nuestros entornos.
16 | * Equivalencia con entorno productivo: capacidadades de las intancias utlizadoas, como por ejemplo las version de SO, memoria entre otras.
17 | * Servicios externos: las conexiónes a las bases dedatos o bien el consumo de apis
18 |
19 | Distribución de software: Tu código tiene que transformarse en un artefacto, o varios, que puedan ser transportados a donde tengan que ser ejecutados.
20 |
21 | * Divergencia de repositorios
22 | * Divergencia de artefactos
23 | * Versionado
24 |
25 | Ejecutar Software: La máquina donde se escribe el software siempre es distinta a la máquina donde se ejecuta de manera productiva.
26 |
27 | * Compatibilidad con el entorno productivo
28 | * Dependencias
29 | * Disponibilidad de servicios externos
30 | * Recursos de hardware.
31 |
32 | ## Virtualización
33 |
34 | Versión virtual de algún recurso como hardware, sitema operativo, dispositivo de almacenamiento o recurso de red.
35 | Con palabras más simples, es que nos permite atacar los tres grandes problemas del desarrollo de software profecionales.
36 |
37 | Ya antes se a propuesto formas para atacar los problemas antes mencionado como por ejemplo las maquinas virtuales, acontinuación se describe algunas problematicas que presnetan.
38 | * Peso: que va en el orden de GB.
39 | * Consto de administración: necesitan mantenimiento al igual que un maquina.
40 | * Múltipls formatos: VDI, VMDK, VHD.
41 |
42 |
43 | Los contenedores son practicamnte la estandarización
44 |
45 | * Flexibles
46 | * Livianos
47 | * Protables
48 | * Bajo acoplamineto
49 | * Escalables
50 | * Seguros
51 |
52 | ## ¿Qué es y como funciona Docker?
53 | * Docker deamon, es un servicion el cual maneja todas las entidades con las cuales utiliza docker, encargado directo de conmunicación con SO.
54 | * Docker API.
55 | * Client Docker.
56 |
57 |
58 | 4 entidades importantes:
59 | * Container
60 | * Image
61 | * Data volumes
62 | * Network
63 |
64 |
65 | # Contenedores
66 |
67 | ## Comandos de docker
68 |
69 | Arrancar un contenedor.
70 | * docker run
71 | * docker run hello-world
72 |
73 | Arrancar un contenedor asignándole un nombre.
74 | * docker run --name
75 | * docker run --name contenedor_test ubuntu
76 |
77 | Arrancar un contenedor con una terminal interactiva. Pasándole una shell para acceder al contenedor.
78 |
79 | * docker run -it
80 | * docker run -it ubuntu bash
81 |
82 | Arrancar un contenedor. Mapeando un puerto del host a un puerto del contenedor.
83 |
84 | puerto_host : puerto_contenedor
85 | * docker run -p :
86 | * docker run -p 8080:80 nginx
87 |
88 |
89 | Arrancar un contenedor con un volume.
90 | * docker run -v ::
91 | * Volume -> test
92 | * Punto de montaje en el contenedor -> /apps
93 | * Opciones -> rw (Lectura y escritura)
94 | * docker run -v test:/apps:rw nginx
95 |
96 |
97 |
98 | Arrancar un contenedor con un bind mount.
99 | * docker run -v ::
100 | * Ruta del host a compartir -> /home/application
101 | * Punto de montaje en el contenedor -> /apps
102 | * Opciones -> ro (Solo lectura)
103 | * docker run -v /home/application:/apps:ro ubuntu
104 |
105 | Arrancar un contenedor con tmpfs.
106 | * docker run \
107 | --mount type=tmpfs,destination=,tmpfs-mode=,tmpfs-size= \
108 |
109 | Ejemplo:
110 |
111 | * Punto de montaje en el contenedor -> /temporal
112 | * Permisos -> Todos los permisos solo para el propietario.
113 | * Tamaño del FS -> 21474836480 bytes = 20G
114 | * docker run \
115 | --mount type=tmpfs,destination=/temporal,tmpfs-mode=700,tmpfs-size=21474836480 \
116 | nginx
117 |
118 |
119 | Lista de los contenedores activos.
120 | * docker ps
121 |
122 |
123 | Lista de todos los contenedores activos e inactivos del sistema.
124 | * docker ps -a
125 |
126 | Lista los ID de todos los contenedores.
127 | * docker ps -aq
128 |
129 | Debugging
130 |
131 | Inspeccionar la data de un contenedor.
132 | Por su ID:
133 | * docker inspect
134 |
135 | Por su nombre:
136 | * docker inspect
137 |
138 | Aplicando filtros. Por ejemplo buscando las variables de entorno:
139 | * docker inspect -f '{{ json .Config.Env }}'
140 |
141 | Ver los logs del contenedor.
142 |
143 | docker logs
144 | - Eliminando contenedores
145 | 🔹 Eliminar un contenedor que no este arriba.
146 |
147 | Se puede hacer tanto por nombre como por ID.
148 | * docker rm
149 |
150 | Eliminar un contenedor aunque este arriba. Forzándolo.
151 |
152 | Se puede hacer tanto por nombre como por ID.
153 | * docker rm -f
154 |
155 |
156 | Eliminar todos los contenedores que no esten arriba a la vez.
157 | * docker rm $(docker ps -aq)
158 |
159 |
160 | ## Conceptos fundamentales de Docker: contenedores
161 | Un contenedor es una agrupación lógica la cual esta limitada a los recursos que puede puede acceder.
162 |
163 | Un contenedor es una maquina virtual la cual configuramos a los recursos que puede acceder.
164 |
165 | ## Comprendiendo el estado de Docker
166 |
167 | Comandos:
168 |
169 | * docker run hello-world (corro el contenedor hello-world)
170 | * docker ps (muestra los contenedores activos)
171 | * docker ps -a (muestra todos los contenedores)
172 | * docker inspect (muestra el detalle completo de un contenedor)
173 | * docker inspect (igual que el anterior pero invocado con el nombre)
174 | * docker run –-name hello-platzi hello-world (le asigno un nombre custom “hello-platzi”)
175 | * docker rename hello-platzi hola-platzy (cambio el nombre de hello-platzi a hola-platzi)
176 | * docker rm (borro un contenedor)
177 | * docker container prune (borro todos lo contenedores que esten parados)
178 |
179 |
180 |
181 |
182 | ## Ciclo de vida de los contenedores.
183 |
184 | Cada vez que un contenedor se ejecuta, lo que pasa es que un nuevo proceso se ejecuta.
185 |
186 | Un contenedor corre simpre y cunado su procesos principal esta corriendo.
187 |
188 | Entonces para mantener un contenedor corriendo podemos ejecutar.
189 | * docker run --name alwaysup --detach ubuntu tail -f /dev/null
190 |
191 | Y para connectarnos a un contenedor que se esta ejecutando:
192 | * docker exec -it alwaysup bach
193 |
194 |
195 | El sieguiente comando nos devuelve el pid del proceso pricipal del contenedor.
196 | * docker inspect --format '{{.State.Pid}}' alwaysup
197 |
198 | ## Exponiendo contenedores
199 |
200 | Cada contenedor tiene su propia interfaz de red virtual.
201 |
202 | Para exporner un prueto del contendor a nuestra maquina usamos el siguiente comando.
203 | * docker run -name proxy -p pruesto_anfitrion:puerto_contenedor
204 | * docker run --name proxy -p 8080:80 -d
205 |
206 |
207 | Para poder seguir los log del cotenedor podemos ejecutar:
208 | * docker logs -- tail 10 -f
209 |
210 | # Dato en docker
211 | ## Bind mounts
212 |
213 | Practicamente es atar una maquina una ruta que ejecuta el contenedir con un ruta dentro del contenedor.
214 | Entonces todo lo que oucurre en esta ruta dentro del contenedor va aparecer en la maquina anfitriona.
215 |
216 | Persistir la data en nuestra maquina y no en en el contenedor.
217 |
218 | * docker run -d --name db -v /Users/mac/Documents/DEV/dev-ops/docker/mongo/data:/data/db mongo
219 |
220 | Uno de los riesgos es que tiene acceso a nuestros disco.
221 |
222 | ## Volúmenes
223 | Forma más estandar de manjar datos con docker.
224 |
225 | Los volúmenes son el mecanismo preferido para conservar los datos generados y utilizados por los contenedores de Docker.
226 |
227 | Mostrar todos los vólumenes
228 | * docker volume ls
229 |
230 | Crear un nuevo volumen
231 | * docker volume create dbdata
232 |
233 | Montar un volumen en un docker container
234 | * docker run -d --name db --mount src=dbdata,dst=/data/db mongo
235 |
236 |
237 | ## Insertar y extraer archivos de un contenedor
238 | Para poder copiar un archivo desde el host a nuetro contenedor.
239 |
240 | * docker cp file_name container_name:/path/file_name
241 | * docker cp test.txt copytest:/testing/prueba.txt
242 |
243 | Para extraer un archivo desde el contenedor a nuestro host
244 | * docker cp name_container:/path path_host
245 | * docker cp copytest:/testing/ localtesting
246 |
247 | No es necesario que el contenedor no esta corriendo para extraer los archivos.
248 |
249 | # Conceptos fundamentales de Docker: imágenes
250 | Imagenes es la forma en que docker intenta solucionar os problemas de contrucción y distribuicón de software.
251 |
252 | Las imagenes son plantillas a paratir de las cuales docker genera contenedores.
253 |
254 | Es solo una pieza de software que contiene lo necesario para que un contenedor se peude ejecutar exitosamente.
255 |
256 | Se podria comparar como una clase en POO.
257 |
258 |
259 | Listar las imagenes
260 | * docker image ls
261 |
262 | el *tag* es la version de la imagen.
263 |
264 | Descargar una imagen desde docker hub
265 | * docker pull ubuntu:20.04
266 |
267 |
268 | ## Construyendo una imagen propia
269 | Para construir una imagen nos basamos en un archivo llamado Dockerfile.
270 |
271 | ```Docker
272 | FROM ubuntu:latest
273 | RUN touch /usr/src/hola-platzi.txt
274 | ```
275 |
276 |
277 | * docker pull
278 | * docker push
279 |
280 | Crear una imagen apartir de un Dockerfile
281 | * docker build -t ubuntu:btaj .
282 | Cambiar el tag para poder publicar nuestras propias imagenes
283 | * dcoker tag ubuntu:btaj bautistaj/ubuntu:btaj
284 |
285 | ## El sistema de capas
286 |
287 | Revisar las capas de una imagen
288 |
289 | * docker history ubuntu
290 |
291 |
292 | Una imagen ocupa espacion dependinedo de las capas agregadas.
293 |
294 | Si agegamos y removemos archivos el peso aunmenta ya que cada capa es inmutable.
295 |
296 |
297 | # Usando Docker para desarrollar aplicaciones
298 |
299 | La configuración de Dockerfile es muy importante, esto para aprovechar todos los beneficios que docker nos ofrece.
300 |
301 | Para el siguiente caso que es para un aplicación de Node.
302 |
303 | Los archivos principales para el manejo de las dependencias son:
304 | * package.json
305 | * package-lock.json
306 |
307 | Por esta razón son las mirameras en mover al contenedor y posteriormente hacer el install de node.
308 |
309 | El siguienete paso es mover los archivos de nuestra app, en este caso docker.
310 |
311 | ```docker
312 | FROM node:12
313 |
314 | COPY ["package.json","package-lock.json", "/usr/src/"]
315 |
316 | WORKDIR /usr/src
317 |
318 | RUN npm install
319 |
320 | COPY [".", "/usr/src/"]
321 |
322 | EXPOSE 3000
323 |
324 | CMD ["npx","nodemon", "index.js"]
325 | ```
326 |
327 | Ahora bien, necesitamos que nuestra app refleje los cambios de la app sin la necesidad de hacer el build.
328 | Paa ello vamos a realizar un bind-mount de los archivos que implican nustro app. Que para el caso es index.js
329 | * docker run --rm -p 3000:3000 -v /Users/mac/docker/index.js:/usr/src/index.js platziapp
330 |
331 |
332 |
333 | ## Docker networking: colaboración entre contenedores
334 |
335 | Listar las redes de red:
336 | * docker network ls
337 |
338 | bridge: retrocompatibilida
339 | host: para que el contenedor tenga acceso a las redes de la maquina host.
340 | none: deshbilitar la networking.
341 |
342 | Crear red en docker.
343 | * docker network create --attachable platzinet
344 | --atachable permite que otros contenedores se conecte a ella.
345 |
346 | Inspeccionar las redes.
347 | * docker network inspect platzinet
348 |
349 | Vamos a crear un nuevo contenedor con mongo
350 | * docker run -d --name db mongo
351 |
352 | Ahora conectar el contendor anterior a nuestra red
353 | * docker network connect platzinet db
354 |
355 | Es turno de levantar una app para que se conecte a nuestra base de datos.
356 | * docker run -d --name app -p 3000:3000 --env MONGO_URL=mongodb://db:27017/test platziapp
357 |
358 | Si dos contenedores estan connectados a una misma red estas se pueden encontrar entre si con el nombre del contendor.
359 |
360 | Ahora solo resta conectar el contendor anterior a la red
361 | * docker network connect platzinet app
362 |
363 |
364 | ## Docker Compose
365 |
366 | Todo lo anterio se puede realizar utilizando docker-compose
367 | ```docker
368 | version: "3.8"
369 |
370 | services:
371 | app:
372 | image: platziapp
373 | environment:
374 | MONGO_URL: "mongodb://db:27017/test"
375 | depends_on:
376 | - db
377 | ports:
378 | - "3000:3000"
379 |
380 | db:
381 | image: mongo
382 | ```
383 |
384 | ## Comandos
385 |
386 | Ver la red que crea docer compose
387 | * docker network inspect docker_default
388 |
389 | Ver los servicios de docker compose
390 | * docker-compose ps
391 |
392 | Ver los logs de los servicios
393 | * docker-compose logs -f app
394 |
395 | Ejecutar un compnado
396 | * docker-compose exec app bash
397 |
398 | Bajar los servicios
399 | * docker-compose down
400 |
401 |
402 | ## Docker Compose como herramienta de desarrollo
403 |
404 | ```docker
405 | version: "3.8"
406 |
407 | services:
408 | app:
409 | build: .
410 | environment:
411 | MONGO_URL: "mongodb://db:27017/test"
412 | depends_on:
413 | - db
414 | ports:
415 | - "3000:3000"
416 | volumes:
417 | - .:/usr/src
418 | - /usr/src/node_modules
419 | command: npx nodemon index.js
420 |
421 | db:
422 | image: mongo
423 | ```
424 |
425 |
426 | ## Compose en equipo: override
427 |
428 | El archivo docker-compose.override.yml nos ayuda a sibreescribir el archivo original lo cuál no ayuda en el desarrollo.
429 |
430 | Archivo docker-compose.yml
431 | ```docker
432 | version: "3.8"
433 |
434 | services:
435 | app:
436 | build: .
437 | environment:
438 | MONGO_URL: "mongodb://db:27017/test"
439 | depends_on:
440 | - db
441 | ports:
442 | - "3000:3000"
443 | volumes:
444 | - .:/usr/src
445 | - /usr/src/node_modules
446 | command: npx nodemon index.js
447 |
448 | db:
449 | image: mongo
450 | ```
451 |
452 | Archivo docker-compose.overrideyml
453 | ```docker
454 | version: "3.8"
455 |
456 | services:
457 | app:
458 | build: .
459 | volumes:
460 | - .:/usr/src
461 | - /usr/src/node_modules
462 | command: npx nodemon index.js
463 | ```
464 |
465 | NOTA: *Se recominda manejar los puertos en un solo archivo.*
466 |
467 |
468 | Podemos agregar un rango de puertos para poder escalar las aplicaciones.
469 |
470 | ```docker
471 | ports:
472 | - "3000-3001:3000"
473 | ```
474 |
475 | Para lavantar más de un servicio de un contenedor:
476 | * docker-compose up -d --scale app=2
477 |
478 |
479 | ## Administrando tu ambiente de Docker
480 |
481 | Eliminar los contenedores
482 | * docker container prune
483 |
484 | Borra todos los contenedores que estén corriendo o apagados
485 | * docker rm -f $(docker ps -aq)
486 |
487 | Lista todos los volumes
488 | * docker volume ls
489 |
490 | Borra todo lo que no se esté usando
491 | * docker system prune
492 |
493 | Limitar los recurso de nustros contenedores
494 | * docker run --name app --memory 1G platziapp
495 |
496 | Ver los estatus de los contenedores
497 | * docker stats
498 |
499 | ## Deteniendo contenedores correctamente: SHELL vs. EXEC
500 | sigterm
501 | sigkill
502 |
503 | Ver los últimos procesos
504 | * docker ps -l
505 | *
506 | Si vemos el estatus de algún contenedor tiene un código de salida mayor a 128, la salida se produjo por un exception.
507 |
508 |
509 | Construyo la imagen
510 | * docker build -t loop.
511 |
512 | Corro el contenedor
513 | * docker run -d --name looper loop.
514 |
515 | Le envía la señal SIGTERM al contenedor, y si no se puede detener manda SIGKILL
516 | * docker stop looper
517 |
518 | Muestra el ps del último proceso
519 | * docker ps -l
520 |
521 | Le envía la señal SIGKILL al contenedor
522 | * docker kill looper
523 |
524 | Ver los procesos del contenedor
525 | * docker exec looper ps -ef
526 |
527 |
528 | *NOTA*
529 |
530 | *SHELL*
531 | Deja como proeceso principal al shell y no así el comando que nosotros estamos ejecutando
532 |
533 | *EXEC*
534 | Deja como proeceso principal el comando que nosotros estamos ejecutando
535 |
536 |
537 |
538 | ## Contenedores ejecutables: ENTRYPOINT vs CMD
539 |
540 | El ENTRYPOINT de un contenedor es el comando que se va a correr y va a utilizar lo que diga comando como parametro del
541 | ENTRYPOINT
542 |
543 | ```docker
544 | FROM ubuntu:trusty
545 |
546 | ENTRYPOINT ["/bin/ping", "-c", "3"]
547 |
548 | CMD ["localhost"]
549 | ```
550 |
551 | ## El contexto de build
552 | Docker va a montar en un filesystem temporal todo los archivos disponibles en la ruta que se le pasa como parametro, "Que le build puede utilizar"
553 |
554 |
555 | Para evitar que no se copien archivos como node_modules al contenedor debemos utilizar .dockerignore
556 |
557 | Ejemplo .dockerignore
558 | ```docker
559 | *.log
560 | .git
561 | .gitignore
562 | build/*
563 | Dockerfile
564 | npm-debug.logs
565 | README.md
566 | node_modules
567 | docker-compose
568 | ```
569 |
570 | ## Multi-stage build
571 | ```docker
572 |
573 | # Define una fase llamada builder
574 | FROM node:12 as builder
575 |
576 | # copiar los archivos necesario para las dependecnias
577 | COPY ["package.json", "package-lock.json", "/usr/src/"]
578 |
579 | WORKDIR /usr/src
580 |
581 | # Se intalan las dependencias de producción esto para aprovechar las capas
582 | RUN npm install --only=production
583 |
584 | COPY [".", "/usr/src/"]
585 |
586 | # instalación dependencias de desarrollo
587 | RUN npm install --only=development
588 |
589 | # Ejecutar los test
590 | RUN npm run test
591 | ## Esta imagen esta creada solo para pasar los tests.
592 |
593 | # Productive image
594 | FROM node:12
595 |
596 | COPY ["package.json", "package-lock.json", "/usr/src/"]
597 |
598 | WORKDIR /usr/src
599 | # instar las dependencias de PRO
600 | RUN npm install --only=production
601 |
602 | # Copiar el fichero de la imagen anterior.
603 | # De cada stage se reutilizan las capas que son iguales.
604 | COPY --from=builder ["/usr/src/index.js", "/usr/src/"]
605 | # Pone accesible el puerto
606 | EXPOSE 3000
607 |
608 | CMD ["node", "index.js"]
609 | ### En tiempo de build en caso de que algún paso falle, el build se detendrá por completo.
610 | ```
611 |
612 | ## Docker-in-Docker
613 | Usar docker desde otros contenedores.
614 |
615 | Se puede comunica con docker deamon debido a que tiene una interfaz "socket".
616 | De este modo
617 | * docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock docker:19.03.12
618 | * docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v $(wich docker):/bin/docker wagoodman/dive:latest prodapp
619 |
620 |
621 |
622 |
623 |
624 |
625 |
626 |
627 |
628 |
--------------------------------------------------------------------------------
/devops/note.md:
--------------------------------------------------------------------------------
1 | ## Deploy api with NestJS in Heroku.
2 |
3 | Create app in heroku.
4 | Add instance of Postgres
5 |
6 | See the documentation https://devcenter.heroku.com/articles/heroku-cli#download-and-install
7 |
8 | create an app with heroku.
9 |
10 | heroku login
11 | heroku create store-api
12 | heroku addons:create heroku-postgresql:hobby-dev
13 |
14 | Heroku add-ons are components that support your application, such as data storage, monitoring, analytics, data processing, and more.
15 |
16 | now go to the app > settings > Reveal Config Vars. Heroku add a environment variable called DATABASE_URL, this variable contain the url connection to the data base.
17 |
18 |
19 | GitLab configuration.
20 |
21 | In the repository of the app go to the Settings > CI/CD > Variables. You should to configure two important variables HEROKU_API_KEY and HEROKU_APP_STAGING. HEROKU_API_KEY contain the key for the connection to the heroku instance and HEROKU_APP_STAGING the name of the app and a important configuration is change the flag of Protected to false.
22 |
23 | Configuration of .gitlab-ci.yml
24 |
25 | ```
26 | image: node:latest # version of the image
27 |
28 | before_script:
29 | - apt-get update -qy # update the packages from the repositories, q = Quiet. Produces output suitable for logging, omitting progress indicators. y = yes. Automatic yes to prompts.
30 | - apt-get install -y ruby-dev
31 | - gem install dpl # dlp is a deploy tool made for continuous deployment that’s developed and used by Travis CI, but can also be used with GitLab CI/CD. https://docs.gitlab.com/ee/ci/examples/deployment/
32 |
33 | stages:
34 | - staging #Configuration of the stages of the deploy.
35 |
36 | staging:
37 | type: deploy
38 | stage: staging
39 | image: ruby:latest
40 | script:
41 | - dpl --provider=heroku --app=$HEROKU_APP_STAGING --api-key=$HEROKU_API_KEY
42 |
43 | only: # specify the branch tha are listening for the deploy.
44 | - 27-deploy-in-staging-environment # name of the branch
45 |
46 | ```
47 |
48 | configuration Procfile
49 | ```
50 | web: npm run start:prod
51 | ```
52 |
53 | scripts in package.json
54 | ```
55 | "postinstall": "npm run prestart:prod",
56 | "prestart:prod": "rimraf dist && npm run build && npm run migration:run"
57 | "prebuild": "rimraf dist"
58 | "build": "nest build"
59 | "start:prod": "node dist/main"
60 | "migration:run": "ts-node node_modules/.bin/typeorm migration:run --config ./orm.config.js"
61 | ```
62 |
63 | Configuration of file to connect data base.
64 | orm.config.js
65 |
66 | ```
67 | module.exports = {
68 | 'type': 'postgres',
69 | 'url': process.env.DATABASE_URL,
70 | 'entities': [entitiesPath],
71 | 'migrations': [migrationPath],
72 | 'cli': {
73 | 'migrationsDir': 'src/database/migrations'
74 | },
75 | 'synchronize': true
76 | }
77 | ```
78 |
79 | .env file
80 |
81 | ```
82 | PORT=3000
83 | PORT_DB=5444
84 | JWT_SECRET=090909
85 | ENVIRONMENT=PROD
86 | DATABASE_URL=postgres://postgres:password@localhost:5444/persist
87 | ```
88 |
89 |
90 | # Deploy Angular App in heroku
91 | Create app in heroku
92 |
93 |
94 | crate configuration of environment in file angular.json
95 | "staging": {
96 | "fileReplacements": [
97 | {
98 | "replace": "src/environments/environment.ts",
99 | "with": "src/environments/environment.staging.ts"
100 | }
101 | ],
102 | "optimization": true,
103 | "outputHashing": "all",
104 | "sourceMap": false,
105 | "extractCss": true,
106 | "namedChunks": false,
107 | "aot": true,
108 | "extractLicenses": true,
109 | "vendorChunk": false,
110 | "buildOptimizer": true,
111 | "budgets": [
112 | {
113 | "type": "initial",
114 | "maximumWarning": "2mb",
115 | "maximumError": "5mb"
116 | },
117 | {
118 | "type": "anyComponentStyle",
119 | "maximumWarning": "6kb",
120 | "maximumError": "10kb"
121 | }
122 | ]
123 | },
124 |
125 |
126 | You should configurate NPM_CONFIG_PRODUCTION in false with the next command
127 | heroku config:set NPM_CONFIG_PRODUCTION=false.
128 |
129 |
130 |
131 |
132 |
133 | Create server.js file for our app
134 |
135 | ```js
136 | const express = require('express');
137 | const path = require('path');
138 |
139 | const app = express();
140 |
141 | app.use(express.static(__dirname+'/dist/persist'));
142 | app.get('/',function(req,res){
143 | res.sendFile(path.join(__dirname+'/dist/persist/index.html'));
144 | });
145 |
146 | app.listen(process.env.PORT || 8080);
147 | ```
148 |
149 | We should install express path
150 |
151 | ```bash
152 | npm install express path --save
153 | ```
154 |
155 |
156 | create environment variable HEROKU_WEB_APP_STAGING name od the app and HEROKU_API_KEY the access token to heroku.
157 |
158 |
159 | Configure .gitlab-ci.yml
160 |
161 | ```yml
162 | image: node:latest
163 |
164 | before_script:
165 | - apt-get update -qy
166 | - apt-get install -y ruby-dev
167 | - gem install dpl
168 |
169 | stages:
170 | - staging
171 |
172 | staging:
173 | type: deploy
174 | stage: staging
175 | image: ruby:latest
176 | script:
177 | - dpl --provider=heroku --app=$HEROKU_WEB_APP_STAGING --api-key=$HEROKU_API_KEY
178 | only:
179 | - staging
180 |
181 | ```
182 |
183 |
184 | crate Procfile with next command.
185 |
186 | ```
187 | web: npm run start:prod
188 | ```
189 |
--------------------------------------------------------------------------------
/devops/swarm/note.md:
--------------------------------------------------------------------------------
1 | # Docker Swarm
2 |
3 | Herramienta que ofrece docker para poder escalar las aplicaciones.
4 |
5 | ## Conceptos básicos
6 | ### ¿Qué es Swarm?
7 | Docker Swarm es un herramienta de orquestación, esto permite el manejo de multiples contenedores desplegados en multiples maquinas.
8 |
9 | ### El problema de la escala. ¿Qué pasa cuándo una computadora sola no alcanza?
10 |
11 | * Escalabilidad: Poder aumentar el poder computo de un servidor para poder servir a más usuarios. Podemos escalar de 2 formas:
12 | * Vertical: Agregar más Hardware
13 | * Horizontal: Tener muchos servidores donde se distribuye la carga.
14 |
15 | * Disponibilidad: Capasidad de un servicio de estar disponibilidad 24/7.
16 |
17 | ### Arquitectura docker swarm
18 | Par la arquitectura de Swarm, se ven involucrados dos tipos de servidores:
19 |
20 | * Manager: Son nodos de la administración del cluster.
21 | * Workers: Es donde se va a ajecutar las aplicaciones, la parte principal.
22 |
23 | Manager y Workers deben de tener la misma version de dokerdeamon y tener visibilidad entre ellos en la misma red.
24 |
25 | ### Preparando tus proyectos con docker swarm: 12 factores.
26 |
27 | !2 fatores que se deben de tener en cuenta para empezar a utilizar Swarm en tus aplicaciones.
28 |
29 | [12 Factores](https://12factor.net/)
30 |
31 | * Codebase: El código debería estar en un repo.
32 | * Dependencies: Las dependencias deben de estar en un archivo de configuración.
33 | * Configuration: Configuración de todos los ambientes con el mismo código.
34 | * Baking Services: Servicios que son necesarios para nuestar aplicación, estos se deberían tratar como servicios externos los cuales deben de tener una configuración para establecer la comunicación.
35 | * Build, Release and Run: Estas faces en el flujo de desarrollo deben de estar bien separadas.
36 | * Processes: La app debe poder ejecutarse sin algún tipo de estado, que el fucionamiento que realice debe ser atomica, de todo lo que necesite debe de tener un service configuration.
37 | * Port Binding: La app debería poder exponerse así misma y no debe existir un intermediario.
38 | * Concurrency: Que la app pueda correr con multiples intancias en paralelo.
39 | * Disposability: La app debe de tener la capacidad de destriurse rapido y levantarse muy rapido y poder cambiar de lugar.
40 | * Dev/Prod parity: Tener las mismas espesificaciones en los diferentes servidores.
41 | * Logs: Flujos de bytes.
42 | * Admin processes: Poder administrar las apps sin la neceisdad de inciar sesion como adminitrador para hacer dichas tareas.
43 |
44 |
45 | ## Primeros pasos.
46 |
47 | ### Tu primer docker swarm
48 |
49 | Para inicializar **Swarm** solo ejecutamos
50 |
51 | ```bash
52 | docker swarm init
53 | ```
54 |
55 | Cabe mencionar que este nodo se inicializa como un **manager**
56 |
57 | Para agregar un nodo de tipo **worker** necesitamos ejecutar el siguiente comando.
58 |
59 | ```bash
60 | docker swarm join --token
61 | ```
62 |
63 | Para agregar un **manager** ejecutamos y seguimos las intrucciones.
64 | ```bash
65 | docker swarm join-token manager
66 | ```
67 |
68 | Listamos los nodos disponibles
69 | ```bash
70 | docker node ls
71 | ```
72 |
73 | Inspeccionar el nodo, pues usar **self** o bien el ID del container.
74 | ```bash
75 | docker node inspect self
76 | ```
77 |
78 | Para salir de docker Swarm ejecutamos
79 | ```bash
80 | docker swarm leave --force
81 | ```
82 | Debemos tener cuidado cuando salimos de un nodo, si este es de tipo **worker** no hay problema, el problema se presenta cunado intentamos salir de un **manager**.
83 |
84 |
85 |
86 | ### Fundamentos de docker swarm, Servicios
87 |
88 | Los servicios de Swarm usan un modelo declarativo, lo que significa que el estado del servicio los pudes definir y confiar en docker para que lo mantenga.
89 |
90 | Comando para crear un servicio
91 | ```bash
92 | docker service create --name pinger alpine ping wwww.google.com
93 | ```
94 |
95 | Listar los servicios
96 |
97 | ```bash
98 | docker service ls
99 | ```
100 |
101 |
102 | ### Entendiendo el ciclo de vida de un servicio
103 |
104 | Para ver el estatus de un servicio.
105 | ```
106 | docker service ps service_name
107 | ```
108 |
109 | Cliente:
110 | * docker service create
111 | Nodo manager:
112 | * Crea el servicio
113 | * Creaa tareas del servicio y asigna una IP
114 | * Asigna tareas a nodos
115 | Nodo Worker
116 | * Recibe la descriptción de la tarea
117 | * Prepaa la tarea
118 | * Ejecuta contanedores
119 |
120 |
121 | Comando para inpeccionar un servicio
122 | ```bash
123 | docker service inspect service_name
124 | ```
125 |
126 | Revisar los logs
127 | ```bash
128 | docker service logs -f service_name
129 | ```
130 |
131 | Eliminar un servicio
132 | ```bash
133 | docker service rm service_name
134 | ```
135 |
136 |
137 |
--------------------------------------------------------------------------------
/requirements/notes.md:
--------------------------------------------------------------------------------
1 | **Sistema Gestor de Exámenes para Laboratorios Clínicos**
2 |
3 | Nombre descriptivo del proyecto
4 | Aplicación web para la gestión de exámenes para laboratorios clínicos y sistemas médicos.
5 |
6 | Descripción del proyecto a nivel funcional (requerimientos):
7 | Esta aplicación cuenta con diferentes tipos de usuario y de acuerdo al rol permitirá realizar acciones que se verán reflejadas y directamente relacionadas con el flujo de trabajo de los demás tipos de usuario.
8 |
9 | Según el tipo de usuario, las funcionalidades son:
10 |
11 | **Paciente:**
12 |
13 | El paciente puede visualizar en una tabla de manera gráfica la información sobre sus últimos exámenes clínicos realizados con fecha y la opción para verlos en línea.
14 |
15 | El paciente puede descargar los resultados en formato PDF de manera individual o seleccionar varios y descargarlos en un mismo documento juntos.
16 |
17 | Si los resultados de los exámenes aún no están disponibles, debe salirle el nombre de los exámenes que se ha realizado y están a la espera de resultados con un ícono inactivo de descarga y un mensaje que indique la no disponibilidad del resultado.
18 |
19 | **Médico**
20 |
21 | Este perfil es quien asigna los exámenes que un paciente se debe realizar y los asocia en el sistema.
22 |
23 | El médico debe tener una vista principal donde puede buscar un paciente por su número de documento y visualizar su información de contacto principal y su historia clínica. En esta vista puede asociar exámenes clínicos a realizarse el paciente, para esto debe contar con una ventana que le permita seleccionar de una lista precargada los diferentes exámenes clínicos posibles y agregarlos uno a uno al paciente.
24 |
25 | En el momento que el médico asocia exámenes clínicos a un paciente, el perfil de paciente ya debe poder visualizar estos exámenes en su vista principal aún si aún no están los resultados.
26 |
27 | Si el paciente tiene su sesión abierta en el momento en que los exámenes se están asociando, debe recibir una notificación en tiempo real para recargar su vista y poder visualizarlos.
28 |
29 | **Bacteriólogo**
30 |
31 | El profesional de la salud cuenta con una interfaz gráfica que le permita buscar a un paciente a través de su número de identificación y abrir una ventana que le permita ingresar los resultados a los exámenes asociados al paciente seleccionado.
32 |
33 | Una vez ingresados los resultados, deben estar inmediatamente disponibles para su descarga desde el lado del paciente.
34 |
35 | Si el paciente tiene su sesión abierta en el momento en que los resultados de los exámenes están disponibles, debe recibir una notificación en tiempo real para recargar su vista y poder descargar sus resultados.
36 |
37 | **Administrador**
38 |
39 | Este perfil lo tendrá personal administrativo que podrá acceder a la información de todos los demás roles y podrá administrarlos (agregar nuevos, editar existentes y eliminarlos) a través de una vista principal tipo tabla donde podrá seleccionar el tipo de perfil que desea cargar y realizar búsquedas por identificación y nombre.
40 |
41 | Es el único perfil que puede crear nuevos bacteriólogos, médicos y pacientes; incluso puede crear otros administradores y realizar las mismas acciones para todos.
42 |
43 | Debe poder cargar información en grupos con una opción para leer archivos en formato .csv que guarde directamente la información de cualquier perfil, generando de manera automática usuario y contraseña para cada registro que será correspondiente a un nuevo usuario en el sistema.
44 |
45 | Cuando se crea un nuevo usuario, debe llegar un correo electrónico a su cuenta con un mensaje de bienvenida y sus credenciales de acceso al sistema.
46 |
47 | **Requerimientos generales**
48 | Al crear un nuevo usuario, independientemente del perfil se debe proveer de manera obligatoria identificación numérica, nombre, apellido, correo electrónico y número de contacto, a partir de esta información se generará de forma automática un nombre de usuario con la estructura: nombre.apellido.ultimos4numerosdeidentificación. Por ejemplo: María Jaramillo con cédula 1234567 su usuario sería maria.jaramillo.4567.
49 |
50 | Cada vez que se genere un nuevo nombre de usuario se debe validar que no exista otro igual, en caso de existir, se asignan los últimos dígitos de manera aleatoria y se conservan las dos primeras partes.
51 |
52 | La contraseña debe estar cifrada y no puede generarse a partir de información personal del usuario.
53 |
54 | El inicio de sesión debe ser el mismo para todos los usuarios e internamente se identificará el perfil al que corresponde y se cargará su información.
55 |
56 | El acceso al sistema se debe realizar a través de la página web del laboratorio clínico que tendrá implícito el formulario de login.
57 |
58 | Ningún usuario debe poder registrarse en ningún rol, todos deben estar creados desde el perfil del administrador pues no es un laboratorio público y por seguridad no todas las personas deben tener acceso a su sistema.
59 |
60 | **Documentación requerida**
61 | Organización del equipo (roles, actividades individuales).
62 |
63 | Mockups del proyecto en web y móvil (si aplica), y de cada feature detallado.
64 |
65 | Explicación escrita detallada de cada feature.
66 |
67 | Diagrama de entidad relación del flujo de base de datos.
68 |
69 | **Manual de uso para administradores.**
70 |
71 | Toda la documentación anterior debe estar en inglés.
72 |
73 | Elementos de seguimiento y planeación
74 | Repositorio desde la etapa inicial del proyecto con toda la documentación de planeación.
75 |
76 | Tablero kanban en el repositorio de GitHub, con las tareas y responsables asignados, configurado con tiempos de entrega por cada tarea y estado actual en tiempo real.
77 |
78 | Readme del proyecto con el estado actual de la aplicación, actualizado hasta el cambio más reciente y en inglés.
79 |
80 | Requerimientos técnicos para frontend
81 | Estructura de maquetación debe ser 100% responsive.
82 |
83 | El CSS debe ser implementado por un preprocesador y usar una metodología CSS.
84 |
85 | Debe contar cumplir con todos los requerimientos de accesibilidad web.
86 |
87 | Todos los elementos del frontend deben contar con pruebas unitarias y un average mínimo de 70%.
88 |
89 | La maquetación no debe ser desarrollada bajo ningún framework prediseñado.
90 |
91 | La estructura de los archivos debe respetar el principio de responsabilidad única.
92 |
93 | Debe implementar buenas prácticas en la escritura de código y código limpio.
94 |
95 | Se deben implementar mensajes para casos de error incluídos en la interfaz gráfica.
96 |
97 | Todo el código debe estar en inglés, incluyendo documentación.
98 |
99 | Requerimientos técnicos para backend
100 | Debe implementar un patrón de diseño justificado que sea escalable y optimizado.
101 |
102 | Se puede implementar más de una tecnología para backend pero debe justificarse por qué es una mejor opción.
103 |
104 | El proyecto de backend debe estar separado al proyecto del frontend.
105 |
106 | Cada feature debe contar con su propio test (average mínimo de 70% por feature).
107 |
108 | Debe ser un sistema con estructura modular escalable.
109 |
110 | La estructura de los archivos debe respetar el principio de responsabilidad única.
111 |
112 | Debe implementar buenas prácticas en el código y código limpio (Eso incluye que bajo ninguna circunstancia se debe repetir código funcionalmente igual, no deben haber bloques de código comentados, toda función debe estar debidamente documentada).
113 |
114 | Se deben implementar excepciones y códigos de error en caso de fallos desde el backend por cada feature (el frontend sólo debería recibirlos, no procesarlos).
115 |
116 | Todo el código debe estar en inglés, incluyendo documentación.
117 |
118 | **Requerimientos de base de datos**
119 | Debe registrar un log de errores.
120 |
121 | No se debe eliminar información definitivamente.
122 |
123 | En caso de bases de datos relacionales, debe contar con todas las llaves primarias y llaves foráneas debidamente documentadas y configuradas.
124 |
125 | Los registros deben ser consistentes a registros reales (simulaciones), no se admiten registros como: test, prueba1, probando, etc.
126 |
127 | **Debe ser escalable.**
128 |
129 | Deben cumplir con buenas prácticas en los nombres y estructuras.
130 |
131 | Debe tener documentado su diseño y funcionamiento, en inglés.
132 |
133 | **Entrega única final**
134 | Documentación requerida completa al 100%.
135 |
136 | Proyecto completo desplegado en un ambiente de producción.
137 |
138 | Sustentación oral del proyecto a nivel estructural y técnico.
139 |
140 |
--------------------------------------------------------------------------------