Skip to content

Instantly share code, notes, and snippets.

View floatdrop's full-sized avatar
🐒

Vsevolod Strukchinsky floatdrop

🐒
View GitHub Profile
@floatdrop
floatdrop / Validation.kt
Last active August 6, 2022 17:08
Konform proposal
package io.konform.validation
import com.quickbirdstudios.nonEmptyCollection.list.NonEmptyList
import com.quickbirdstudios.nonEmptyCollection.unsafe.toNonEmptyList
import kotlin.reflect.KProperty1
class Validation<T, E>(private val block: ValidationBuilder<T, E>.(T) -> Unit) : Validator<T, E> {
override operator fun invoke(
value: T,
builder: ValidationBuilder<T, E>
@floatdrop
floatdrop / thoughts.md
Last active January 18, 2021 03:54
Error management in gulp

#Error management in gulp

Sucking at something is the first step to becoming sorta good at something

No one can assure you, that plugins will run smooth in any circumstances (except for tests - they could), so neither should you convince anyone, that your plugin will never break. Only thing, that you could possibly do (if something gone wrong) - is gracefully inform your plugin user, that something went wrong and die.

We are will use this plugin from beginning to demonstrate error management. Suppose you have a task in gulpfile.js that contains this code (we modified it a little bit to be closer to real-usage):

var coffee = require('gulp-coffee');
@floatdrop
floatdrop / gulpfile.js
Last active January 6, 2021 23:22
gulp.src - working with multiple source in one task
// npm i gulp event-stream
var gulp = require('gulp');
var es = require('event-stream');
gulp.task('test', function(cb) {
return es.concat(
gulp.src('bootstrap/js/*.js')
.pipe(gulp.dest('public/bootstrap')),
gulp.src('jquery.cookie/jquery.cookie.js')
@floatdrop
floatdrop / gulpfile.js
Last active May 9, 2019 15:18
gulp.watch - run mocha tests on every file changed
// npm i gulp gulp-watch gulp-mocha gulp-batch
var gulp = require('gulp');
var mocha = require('gulp-mocha');
var batch = require('gulp-batch');
gulp.watch(['test/**', 'lib/**'], batch(function (events, cb) {
return gulp.src(['test/*.js'])
.pipe(mocha({ reporter: 'list' }))
.on('error', function (err) {
In file included from /Users/floatdrop/xtensor-benchmark/src/main.cpp:13:
/Users/floatdrop/xtensor-benchmark/src/benchmark_1D.hpp:61:46: error: no member named 'raw_data' in 'xt::xtensor_container<xt::uvector<double,
xsimd::aligned_allocator<double, 32> >, 1, xt::layout_type::row_major, xt::xtensor_expression_tag>'
benchmark::DoNotOptimize(res.raw_data());
~~~ ^
In file included from /Users/floatdrop/xtensor-benchmark/src/main.cpp:14:
/Users/floatdrop/xtensor-benchmark/src/benchmark_2D.hpp:56:42: error: no member named 'raw_data' in 'xt::xtensor_container<xt::uvector<double,
xsimd::aligned_allocator<double, 32> >, 2, xt::layout_type::row_major, xt::xtensor_expression_tag>'
benchmark::DoNotOptimize(res.raw_data());
~~~ ^
var onError = function (err) {
gutil.beep();
console.log(err);
};
gulp.task('styles', function () {
gulp.src('scss/style.scss')
.pipe(plumber(onError)
.pipe(rubysass())
.pipe(gulp.dest('dist/'));
@floatdrop
floatdrop / watchem.js
Last active November 24, 2016 02:36 — forked from yocontra/watchem.js
var gulp = require('gulp');
var browserify = require('gulp-browserify');
var less = require('gulp-less');
var concat = require('gulp-concat');
var jshint = require('gulp-jshint');
var watch = require('gulp-watch');
var outDir = './temp';
var isWatch = false;
'use strict';
var gulp = require('gulp'),
gutil = require('gulp-util'),
tslint = require('gulp-tslint'),
typescript = require('gulp-tsc'),
watch = require('gulp-watch'),
plumber = require('gulp-plumber'),
//livereloadEmbed = require('gulp-embedlr'),
@floatdrop
floatdrop / gulpif.js
Created January 18, 2014 17:00
_if example
gulp.src('...')
.pipe(_if(expression, damn().many().piped().actions().to().do().and().there().is().more().to().come().after().you().gone().a().sleep(), true)
@floatdrop
floatdrop / gulpfile.js
Created January 18, 2014 08:31
eslinting
var watch = require('../gulp-watch');
var gulp = require('gulp');
var debug = require('gulp-debug');
var eslint = require('gulp-eslint');
var esformatter = require('gulp-esformatter');
var eslintStylish = require('eslint-stylish');
gulp.task('default', function() {
gulp.src('./src/**/*.js')
.pipe(watch(function(files) {