Skip to content

Instantly share code, notes, and snippets.

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();
}
}
@pechitook
pechitook / DJI.md
Created August 24, 2017 00:36
DJI - Combinar audio del cache del celular con el video original

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
@pechitook
pechitook / README.md
Created November 19, 2016 20:40
Push to deploy en hosting compartido con PHP

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!
@pechitook
pechitook / instabot.js
Created September 24, 2016 16:25
Instagram scripts to automate common tasks
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"
}
}