Skip to content

Instantly share code, notes, and snippets.

View ndelitski's full-sized avatar

Nick Delitski ndelitski

  • Lisbon, Portugal
  • 22:28 (UTC -12:00)
View GitHub Profile
@ndelitski
ndelitski / react-components.jsx
Created November 1, 2017 18:38
type of components
const Avatar = ({ src }) => <img width="100px" height="100px" src={src}/>
class AvatarComponent extends React.Component {
render() {
return <img width="100px" height="100px" src={this.props.src}/>
}
}
class User extends React.Component {
render() {
const src = "https://api.adorable.io/avatars/285/abott@adorable.png"
const avatars = Array(500).fill(0).map(() => {
// editable. data in form
const editableDataSourceSelector = createSelector(getFormValues('budget', 'budgetitems'), items => [{ids: items.map(item => item.get('id'))}])
const editableRowDataSelector = rowId => createSelector(getFormValues('budget', 'budgetitems'), items => items.get(items.findIndex(item => item.get('id') === rowId)))
// readonly - data in application section
const readDataSourceSelector = createSelector(getSectionData('budget'), ({budgetItems: items}) => [{ids: items.map(item => item.id)}])
const readRowDataSelector = rowId => createSelector(getFormValues(getSectionData('budget'), data => find(data.budgetItems, {id: rowId}))
@ndelitski
ndelitski / streamtest_client.js
Created July 23, 2017 23:38 — forked from mwagstaff/streamtest_client.js
Streaming data performance test client harness (Node.js, Socket.io)
var URI = process.argv[2],
TEST_ID = new Date().getTime(),
SOCKET_INTERVAL = 0,
MAX_SOCKETS = 5000,
WARM_UP_SOCKETS = 10,
MESSAGE_PADDING_SIZE = 2000,
MESSAGE_SIZE_BASE = 41,
ADD_RESULT_DOMAIN = "lonlx10557.nomura.com",
ADD_RESULT_PORT = 80,
ADD_RESULT_PATH = "/streamtest/add_result.php",
@ndelitski
ndelitski / gist:e149259c458bac06ac80faba78bc705d
Last active July 22, 2017 16:57
brute way to force fontfaces load
function bruteforceWaitForWebfonts(fonts, callback) {
var loadedFonts = 0;
const onceCallback = once(callback)
for (var i = 0, l = fonts.length; i < l; ++i) {
(function ({fontFamily, fontWeight}) {
var node = document.createElement('span');
// Characters that vary significantly among different fonts
node.innerHTML = 'giItT1WQy@!-/#';
// Visible - so we can measure it - but not on the screen
@ndelitski
ndelitski / vm.swift
Created September 28, 2016 13:09
RX+MVVM.swift
import Foundation
import RxSwift
import GoogleSignIn
import RxViewModel
import RxCocoa
import RealmSwift
class InboxDetailViewModel: RxViewModel {
// Input
struct Input {
@ndelitski
ndelitski / gmail-threads.es6
Created September 13, 2016 14:01
Gmail Threads Processing
import _ from 'lodash';
import B, {promisifyAll} from 'bluebird';
import {Log, trace} from '@synccloud/logging';
import {assertType} from '@synccloud/utils';
import {HtmlConverter, Markup, StripBlockquoteHandler} from '@synccloud/mime-letter-markup';
import {serializeDate, deserializeDate} from './date-convertor.es6';
import {MailParser} from 'mailparser';
import s3Stream from 's3-upload-stream';
import {S3} from 'aws-sdk';
import streamLength from 'length-stream';
@ndelitski
ndelitski / b-tags-editor.js
Created September 13, 2016 13:51
Tags Editor
var BemView = require('../../static/js/bomba/bem-view'),
TagView = require('../b-tag/b-tag'),
Dropdown = require('../controls/b-dropdown/b-dropdown'),
utils = require('../i-utils/i-utils'),
ColorPicker = require('../b-color-picker/b-color-picker'),
ColorPalette = require('../b-color-palette/b-color-palette');
var TagsEditorView = BemView.extend('b-tags-editor', {
events: {
_sendToServer: function (data) {
var quotedPart = '',
user = getCurrentUser(),
shouldRemoveParticipantIfFail,
lastMessage;
if (this.emailModel.get('messages').length ) {
// сообщения отсортированы в обратном порядке, самый последний – в начале
lastMessage = this.emailModel.get('messages').find(function (m) {
return !!m.id;
@ndelitski
ndelitski / redis-no-persistence.conf
Created July 20, 2016 09:10
redis without persistence config
# Note on units: when memory size is needed, it is possible to specify
# it in the usual form of 1k 5GB 4M and so forth:
#
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
#!/bin/bash
set -x
export DEBIAN_FRONTEND=noninteractive
curl -SsL https://get.docker.com/ | sudo sh
sudo usermod -aG docker sc
sudo curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose