Skip to content

Instantly share code, notes, and snippets.

@monochromer
monochromer / headless-chrome-pdf-async.js
Last active April 26, 2024 23:19
Print pdf with headless chrome
/**
* chrome-remote-interface: JavaScript API, обеспечивающее простую абстракцию для команд и уведомлений
*
* chrome-launcher: позволяет нам запускать Chrome из Node.js кроссплаторменно
*/
const chromeLauncher = require('chrome-launcher');
const CDP = require('chrome-remote-interface');
const file = require('fs');
@monochromer
monochromer / index.html
Created September 10, 2017 18:19
view.js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>View</title>
</head>
<body>
<div id="app"></div>
@monochromer
monochromer / svg-notes.md
Last active January 16, 2019 18:49
Заметки о SVG

viewport

видимая часть холста, на которой отрисовывается SVG. Соответствует размерам svg-элемента. Размеры по-умолчанию - 300x150

viewBox (пользовательская область просмотра)

Для управление масштибированием и обрезкой.

  • если у SVG заданы размеры и viewBox, содержимое будет сжиматься и растягиваться с сохранением пропорций, чтобы поместиться целиком (аналог background-size: contain)
  • если у SVG нет размеров, но задан viewBox, изображение займёт собой всё доступное пространство.
  • preserveAspectRatio (не работает без viewBox) (пример - preserveAspectRatio="xMidYMid slice")
  • none - при изменении размеров содержимое масштабируется под размеры вьюпорта не сохраняя пропорции (будет полезно для резиновых фонов)
@monochromer
monochromer / es6-фишки.js
Last active August 26, 2018 20:13
ES6 фишки
// Уникальный массив
const numbers = [1, 2, 1, 1, 2, 1, 3, 4, 1 ]
const uniq = [...new Set(numbers)] // => [ 1, 2, 3, 4 ]
const uniq2 = Array.from(new Set(numbers)) // => [ 1, 2, 3, 4 ]
// Обновление объекта в массиве по свойству
const initial = [ {id: 1, score: 1}, {id: 2, score: 2}, {id: 3, score: 4}]
const newValue = {id: 3, score: 3}
const updated = initial.map(x => x.id === newValue.id ? newValue : x)
@monochromer
monochromer / modal.js
Created October 2, 2017 18:02
Модальные окна modal.js
/**
* Модальные окна
*/
(function() {
function Modal(elem, options) {
this._id = elem.id || new Date();
this.elem = elem;
this.$elem = $(elem);
this._isOpen = false;
}
@monochromer
monochromer / dom-events.js
Created November 19, 2017 16:08
DOM Events
var events = {
on: function() {
var elem = arguments[0];
var args = Array.prototype.slice.call(arguments, 1);
elem.addEventListener.apply(elem, args);
},
off: function() {
var elem = arguments[0];
var args = Array.prototype.slice.call(arguments, 1);
@monochromer
monochromer / git-notes.md
Last active March 22, 2024 06:02
git notes

GIT

Подготовка

git config --global user.name "Your Name"
git config --global user.email "your_email@whatever.com"

Для Unix

@monochromer
monochromer / code-splitting.jsx
Created January 23, 2018 08:43
code splitting react react-router
// https://medium.freecodecamp.org/code-splitting-with-react-and-react-router-62e174382d4c
import React, { Component } from 'react'
import {
BrowserRouter as Router,
Route,
Link,
} from 'react-router-dom'
@monochromer
monochromer / promise-patterns.js
Last active August 19, 2022 09:56
Паттерны использования promise (Promise Patterns)
/*
conf: Falsy Values 2015
author: Kornel Lesinski
theme: And .then() what? Promise programming patterns
link: https://www.youtube.com/watch?v=KrhQE8K2I7Q
*/
// 1 waterfall. Использование результатов предыдущих промисов
doFirst()
.then(firstResult => {
@monochromer
monochromer / lazyRequireTask.js
Created March 21, 2018 04:45
Загрузка таска gulp.js
// http://learn.javascript.ru/screencast/gulp
function lazyRequireTask(path) {
var args = [].slice.call(arguments, 1);
return function(callback) {
var task = require(path).apply(this, args);
return task(callback);
};
}