Extraer audio del video:
ffmpeg -i audio.mp4 -map 0:a audio.aac -vn
Combinar audio en video
ffmpeg -i video.mp4 -i audio.aac -c copy -map 0:v:0 -map 1:a:0 videoconaudio.mp4
import Store from 'test/Store'; // El store re piola que hicimos | |
describe('Shows modal', () => { | |
beforeEach(() => { | |
// inicializamos nuestro store | |
store = new Store(); | |
// Disparamos acciones necesarias para poder tener los datos | |
return store.dispatch(loadPost(POST_ID)).then(() => { | |
// Limpiamos el log para poder tener asserts más limpitos | |
store.clearActions(); |
/* | |
Importamos el store de verdad, el cual fue modificado para recibir un array | |
de middlewares que aplica además de los default (thunk en mi caso). Utilicé | |
la función `compose` de redux para esto, y quedó algo así: | |
``` | |
export default (middlewares = []) => createStore( | |
reducer, | |
compose(applyMiddleware(thunk, ...middlewares), | |
) | |
``` |
import { Component } from 'react'; | |
import PropTypes from 'prop-types'; | |
class KeyEvent extends Component { | |
listen = (event) => { | |
if (event.key === this.props.when) { | |
this.props.do(); | |
} | |
} |
Extraer audio del video:
ffmpeg -i audio.mp4 -map 0:a audio.aac -vn
Combinar audio en video
ffmpeg -i video.mp4 -i audio.aac -c copy -map 0:v:0 -map 1:a:0 videoconaudio.mp4
Crear archivo /pull.php
<?php
shell_exec('./pull.sh 2>&1');
echo "Done.";
export default ` | |
type Query { | |
post(id: Int!): Post | |
posts: [Post] | |
author(id: Int): Author | |
} | |
` |
export default ` | |
type Author { | |
id: Int! | |
firstName: String | |
lastName: String | |
posts: [Post] | |
} | |
type Post { | |
id: Int! |
clickAndWait = (cb, ms = 2000) => { | |
setTimeout(cb, ms) | |
} | |
openFirstPhoto = () => { | |
document.querySelectorAll('._nljxa')[0].childNodes[0].childNodes[0].click() | |
} | |
likePhoto = () => { | |
document.querySelectorAll('.coreSpriteHeartOpen')[0].click() |
URL: https://www.youtube.com/watch?v=NGxVLnJKhP8
La charla explica cómo funciona internamente React con el objetivo de entender cómo y por qué ciertas optimizaciones de performance funcionan.
shouldComponentUpdate
puede no funcionar bien sin inmutabilidad, porque necesitás hacer un deep equal lo cual puede ser muy costoso, y un simple ===
no va a funcionar porque tanto this.state.key
y nextProps.key
referencian a la misma instancia del objeto. Con datos inmutables, cada uno referenciaría a una nueva instancia por lo cual un ===
funcionaría.
usar setState()
o connect()
en los children puede tener un impacto en la performance. En el caso de un List
cuyos hijos son varios Item
, en lugar de pedir la data de los items en la lista, se puede pasar el id y llamar a mapStateToProps en cada Item
para evitar un recálculo en el elemento padre, que obliga a un recálculo en todos los elementos hijos.
{ | |
"scripts": { | |
"start": "webpack-dev-server --config webpack.config.dev.js", | |
"build-prod": "NODE_ENV=production webpack -p --config webpack.config.prod.js" | |
} | |
} |