Skip to content

Instantly share code, notes, and snippets.

View nkbt's full-sized avatar
💚

Nikita Butenko nkbt

💚
View GitHub Profile
GIT_COMMITTER_DATE="Wed Nov 20 07:15:57 WITA 2019" git commit --amend --no-edit --date "Wed Nov 20 07:15:57 WITA 2019"
@nkbt
nkbt / example.jsx
Created May 2, 2019 04:33 — forked from bvaughn/LICENSE.md
Advanced example for manually managing subscriptions in an async-safe way using hooks
import React, { useMemo } from "react";
import useSubscription from "./useSubscription";
// In this example, "source" is an event dispatcher (e.g. an HTMLInputElement)
// but it could be anything that emits an event and has a readable current value.
function Example({ source }) {
// In order to avoid removing and re-adding subscriptions each time this hook is called,
// the parameters passed to this hook should be memoized.
const subscription = useMemo(
() => ({
#leftCol {
position: fixed;
}
#rightCol{
display:none;
}
#pagelet_sidebar {
display:none;
@nkbt
nkbt / Filters.jsx
Last active April 8, 2018 02:31
ImmutableJS + Redux
import React from 'react';
import {List} from 'immutable';
import {shouldComponentUpdate} from 'react-addons-pure-render-mixin';
import {connect} from 'react-redux';
import getFiltersData from './filtersData';
import {filtersDataReady} from './reducer';
const Filters = React.createClass({
propTypes: {
getFiltersData: React.PropTypes.func.isRequired,
[remote "pr"]
url = git@github.com:nkbt/react-collapse.git
fetch = +refs/pull/*/head:refs/remotes/pr/*

Hi all, we have a problem doing i18n with React. This is about template strings.

What we need:

<p>
  By clicking SignUp, you accept our <a href="/terms">Terms of Service</a>
</p>

How I would do it (not in React):

@nkbt
nkbt / perf.js
Created February 2, 2018 02:18
Namespaced perf measurer
const perfCache = {start: {}, end: {}};
const perf = key => {
if (key in perfCache.end) {
return perfCache.end[key];
}
if (key in perfCache.start) {
const [s, ns] = process.hrtime(perfCache.start[key]);
Object.assign(perfCache.end, {[key]: (s + ns / 1e9)});
return perfCache.end[key];
}
@nkbt
nkbt / glob.js
Created February 2, 2018 02:26
My own slow and unoptimised glob
const process = require('process');
const fs = require('fs');
const util = require('util');
const readdir = util.promisify(fs.readdir);
const realpath = util.promisify(fs.realpath);
const stat = util.promisify(fs.stat);
const ls = async (cwd, paths = []) => {
for (let p of (await readdir(cwd))) {
const rp = await realpath(`${cwd}/${p}`);
@nkbt
nkbt / osx-home-end.sh
Created February 6, 2018 01:34
Proper home/end bindings for OSX
mkdir -p $HOME/Library/KeyBindings
echo '{
/* Remap Home / End keys to be correct */
"\UF729" = "moveToBeginningOfLine:"; /* Home */
"\UF72B" = "moveToEndOfLine:"; /* End */
"$\UF729" = "moveToBeginningOfLineAndModifySelection:"; /* Shift + Home */
"$\UF72B" = "moveToEndOfLineAndModifySelection:"; /* Shift + End */
"^\UF729" = "moveToBeginningOfDocument:"; /* Ctrl + Home */
"^\UF72B" = "moveToEndOfDocument:"; /* Ctrl + End */
"$^\UF729" = "moveToBeginningOfDocumentAndModifySelection:"; /* Shift + Ctrl + Home */
module Test
  def get
    y x
  end

  def x
    'x'
  end