Skip to content

Instantly share code, notes, and snippets.

View dimensi's full-sized avatar
🏠
Working from home

Nikita Nafranets dimensi

🏠
Working from home
View GitHub Profile
@dimensi
dimensi / 0_reuse_code.js
Created May 12, 2016 15:18
Here are some things you can do with Gists in GistBox.
// Use Gists to store code you would like to remember later on
console.log(window); // log the "window" object to the console
@dimensi
dimensi / required.md
Last active October 4, 2016 18:56
Требования к дизайн-макету

Требованию к дизайн-макетам

  • Макет должен быть представлен в форматах PSD, цветовое пространство sRGB IEC61966-2.1
  • Имя файла должно состоять только из латинских букв, цифр и _ (underscore)
  • Если макет дополняет/изменяет уже существующий, то в его имени должен быть суффикс, указывающий версию (например landing_v2.psd)
  • В рамках макета должна быть соблюдена сетка
  • Rulers должны быть выровнены точностью до одного пикселя. Полпикселя не допустимо
  • При разработке дизайна «под разрешение» обязательно отрисовывать в разрешение окна браузера, а не монитора (при 1024 пкс ширина браузера 1000 пкс)
  • Должно быть несколько версий макетов, минимум для мобильной и для пк.

Тестирование и отладка верстки под ИЕ

Начнем с того, что надо писать не под «ИЕ», а номера конкретных версий. Каждая версия ИЕ по своим особенностям и багам напоминает отдельный браузер, под который надо подкладывать свои, отдельные костыли. И что хуже, MS иногда выпускает исправления багов, и мы имеем кучу пользователей, с разными версиями, с разными наборами сервис-паков и обновлений. И что еще хуже, в некоторых браузерах есть режимы совместимости, например ИЕ8 может отобразить страницу в режиме совместимости с ИЕ7, и — кто бы ожидал — при этом с другим набором багов, нежели настоящий ИЕ7.

Вот плач тестировщика Яндекса по этому поводу: http://habrahabr.ru/post/201172/ (мне особенно нравится картинка из фильма про хоббитов — она очень хорошо выражает суть ситуации). Можете прочитать статью для осознания масштабов проблемы.

Потому начнем изучение противника с версий.

Версии ИЕ

const createRequestFunc = (ctx, next) => axios(ctx.options)
.then(response => {
ctx.response = response
next()
})
if (record.options instanceof Array) {
record.options = merge.all(record.options)
}
@dimensi
dimensi / hw1.md
Created March 10, 2018 18:52
mailru home work

Утилита tree.

Выводит дерево каталогов и файлов (если указана опция -f).

Необходимо реализовать функцию dirTree внутри main.go. Начать можно с https://golang.org/pkg/os/#Open и дальше смотреть какие методы есть у результата.

Код писать в файле main.go

Запускать тесты через go test -v находясь в папке c заданием. После запуска вы должны увидеть такой результат:

@dimensi
dimensi / swagger.json
Created March 10, 2018 20:36
херь какая-та
{
"components": {
"callbacks": null,
"examples": null,
"headers": {
"HalJsonContentType": {
"description": "A MIME type of response.",
"example": "A MIME type of response.",
"required": true,
"schema": {
@dimensi
dimensi / text.md
Created March 11, 2018 16:42
Will-change свойство, когда его применять

will-change нужно юзать там, где браузеру нужно подсказать, какие свойства будут меняться (инлайн через js или pure css – не важно). это свойство, как правило, признано облегчить работу браузеру там, где используются дорогие переходы (трансформации например), и они же, в свою очередь, переходы и анимации отрабатывают не всегда гладко. указывание начального значения (если оно !== initial значению) не требуется для браузера (если это не старый хак в виде, например, принудительной 3d-трансформации translate3d(0, 0, 0) to translate3d(10px, 0, -20px) например), оно не дает понять браузеру, что будет переход, поскольку наличие стилевого правила еще не означает, что оно применится (опять же, таких блоков бывает много и сулит перегрузкой в противном случае). нужно использовать там, где операция анимирования / перехода создает доп условия (hardware acceleration, stacking context, etc), или где нужно облегчить скорость (фильтры, тени тоже дорогие операции), подсказать браузеру о том, что мы точно намерены изменить свой

@dimensi
dimensi / Readline.js
Created March 14, 2018 21:25
readline.js for md
const readline = require('readline')
const fs = require('fs')
const { format } = require('util')
async function start() {
const rl = readline.createInterface({
input: fs.createReadStream('./text.html'),
crlfDelay: Infinity
})
@dimensi
dimensi / makeBlock.js
Last active April 3, 2018 10:34
MakeBlock generator for vue components
#!/usr/bin/env node
const inquirer = require('inquirer');
const program = require('commander');
const changeCase = require('change-case');
const fs = require('fs');
const path = require('path');
const { promisify } = require('util');
const prettier = require('prettier');
@dimensi
dimensi / AvatarUploader.vue
Last active April 4, 2018 10:11
AvatarUploader
<template>
<Avatar
editMode
:image="avatar"
@changeFile="onFileChange"
@edit="editPhoto"
:size="size"
:color="color"
@remove="removePhoto"/>
</template>