• Кнопка "Отписаться" в письме, как сделать?

    Machez
    @Machez
    Бу!
    1) Для каждого адреса генерируем токен и пишем его например в таблицу базы данных
    2) В письмо на кнопку Отписаться ставим ссылку вида site.ru/unsubscribe?token=сенерированный_токен
    3) При переходе по ссылке - проверяем наличие токена в таблице и отписываем соотвествующий e-mail
    Ответ написан
    1 комментарий
  • Странный javascript в коде? что это?

    sedoyjan
    @sedoyjan
    фронт-енд разработчик
    Это мониторинг ошибок https://newrelic.com/
    Ответ написан
    Комментировать
  • Как сделать автоматическое преобразование латинских символов в кириллицу в jquery.autocomplete?

    @FATius
    ///Распознаем нажатие клавиши с английской буквой и переводим на русс.
    var mapKey = {
    'q' : 'й', 'w' : 'ц', 'e' : 'у', 'r' : 'к', 't' : 'е', 'y' : 'н', 'u' : 'г', 'i' : 'ш', 'o' : 'щ', 'p' : 'з', '[' : 'х', ']' : 'ъ', 'a' : 'ф', 's' : 'ы', 'd' : 'в', 'f' : 'а', 'g' : 'п', 'h' : 'р', 'j' : 'о', 'k' : 'л', 'l' : 'д', ';' : 'ж', '\'' : 'э', 'z' : 'я', 'x' : 'ч', 'c' : 'с', 'v' : 'м', 'b' : 'и', 'n' : 'т', 'm' : 'ь', ',' : 'б', '.' : 'ю','Q' : 'Й', 'W' : 'Ц', 'E' : 'У', 'R' : 'К', 'T' : 'Е', 'Y' : 'Н', 'U' : 'Г', 'I' : 'Ш', 'O' : 'Щ', 'P' : 'З', '[' : 'Х', ']' : 'Ъ', 'A' : 'Ф', 'S' : 'Ы', 'D' : 'В', 'F' : 'А', 'G' : 'П', 'H' : 'Р', 'J' : 'О', 'K' : 'Л', 'L' : 'Д', ';' : 'Ж', '\'' : 'Э', 'Z' : '?', 'X' : 'ч', 'C' : 'С', 'V' : 'М', 'B' : 'И', 'N' : 'Т', 'M' : 'Ь', ',' : 'Б', '.' : 'Ю',
    };

    $("#idinput").on('keyup', function () {
    var str = $("#idinput").val();
    var r = '';
    for (var i = 0; i < str.length; i++) {
    r += mapKey[str.charAt(i)] || str.charAt(i);
    }
    // $("#idinput").val(r).trigger('keydown');
    // Тригерр, если это поле ввода для другого плагина, например autocomplete
    $("#idinput").val(r);
    });
    ///Распознаем нажатие клавиши с английской буквой и переводим на русс.
    Ответ написан
    1 комментарий
  • Какой внешний диск выбрать для бэкапов time machine с 2х маков?

    fedorez
    @fedorez
    Хатуль мадан
    у меня уже 5 лет для бэкапов тайммашины макмини трудится WD Mybook 2 Тб. Полёт нормальный. Быстрый, надёжный, безпроблемный. Минусы - шумноват и вибрация по столу (вылечил вырезанием подкладки из куска гофрокартона от первой попавшей под руку коробки)
    также для бэкапов макбука уже 4 года используется тайпкапсула последнего поколения на 2 Гб. она же служит роутером для всего дома. без замечаний.
    Сейчас бы для аналогичной вашей задачи купил бы таймкапсулу по объявлению - их там много, цена невысокая...
    Ответ написан
    Комментировать
  • Как получить родителя объекта (jquery/javascript)?

    @sergeysmishin
    var origObj = {
            a: {
                a_val1: {
                    a_val1_a: "some text"
                },
                a_val2: "text"
            },
            b: {
                b_val1: {
                    b_val1_a: "one more",
                    b_val2_a: "one more2"
                },
                b_val2: "this is string"
            }
        }
    
        var text = "one more2";
    
        function search(obj, path) {
    
            obj._path = path;
    
            for (var key in obj) {
    
                if (!obj.hasOwnProperty(key) || key === '_path') {
                    continue;
                }
    
                obj[key]._path = (obj._path + "." + key);
    
                if (typeof obj[key] === "object") {
                    search(obj[key], obj[key]._path);
                }
                else if (obj[key] === text) {
                    console.log(text, " найден в объекте: " + obj._path + " , свойсво: " + key);
                }
    
            }
    
        }
    
        search(origObj, "origObj");
    Ответ написан
    Комментировать
  • Как получить родителя объекта (jquery/javascript)?

    Сделать это у Вас получится в функции обхода. Она знает весь путь по которому ищет "text", она имеет представление об объекте который обходит.

    смотрите что у вас на выходе на последней итерации search. Входной параметр obj и есть родитель. Но чтобы протянуть имя родителя по рекурсии Вам придется в search кроме obj передавать key ему соответствующий.

    function search(obj, name){
        for (var keys in obj){
            if(typeof obj[keys] = "object"){
                search (obj[keys], keys);
            else{
                if(obj[keys] === text)
                    console.log(text, " найден в объекте ", name);
            }
        }
    }
    Ответ написан
    Комментировать
  • Как получить родителя объекта (jquery/javascript)?

    CTAKAH4uK
    @CTAKAH4uK
    function search(obj, parent){
        for (var keys in obj){
            if(typeof obj[keys] = "object"){
                search (obj[keys],obj);
            else{
                if(obj[keys] === text)
                    console.log(text, " найден в объекте ", parent);
            }
        }
    }
    Ответ написан
    Комментировать
  • Как проверить не пустой ли объект и непустой ли массив?

    0xD34F
    @0xD34F Куратор тега JavaScript
    // можно посмотреть количество ключей
    const isEmpty = x => !Object.keys(x || {}).length;
    
    // или перебирать свойства, пока не встретится собственное
    function isEmpty(x) {
      for (const k in x) if (x.hasOwnProperty(k)) {
        return false;
      }
    
      return true;
    }

    isEmpty() // true
    isEmpty(null) // true
    isEmpty(666) // true
    isEmpty('') // true
    isEmpty([]) // true
    isEmpty({}) // true
    
    isEmpty([ 187 ]) // false
    isEmpty({ xxx: 69 }) // false
    isEmpty('hello, world!!') // false
    Ответ написан
    5 комментариев
  • Рализация плейсхолдеров внутри input'a?

    ksider
    @ksider
    Я сварщик не настоящий
    использовать input + label
    codepen.io/ksider/pen/HDvgh

    вот есть уроки
    tympanus.net/codrops/2015/01/08/inspiration-text-i...
    Ответ написан
    Комментировать
  • Mixin vs. Include в Pug?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    В миксин явно передаются параметры, и это великое счастье. Если вы попытаетесь эмулировать миксины инклюдами, то вы быстро столкнетесь с таким кодом:

    - var buttonTitle = "кнопка";
    - var buttonSmall = "small";
    - var buttonType = "danger";
    - var icon = "trash";
    include 'includes/button'


    Представьте две или три такие кнопки рядом. Вы все еще хотите делать это инклюдами? А если надо в кнопку передать кастомную верстку? С инклюдами это вообще невозможно.

    Инклюдами можно только подключать эти самые миксины, имхо.
    Ответ написан
    Комментировать
  • Когда использовать в pug mixins, когда block, когда include?

    AlexandrKazakov
    @AlexandrKazakov
    Frontend
    Здравствуйте.

    На самом деле здесь нет однозначного ответа и правил, когда что использовать. Часто например в русскоязычном сообществе можно услышать мнение , что мол mixins решают, а include стоит использовать только в редких случаях, например для подключения на страницу этих самых миксинов, однако я не разделяю в полной мере данную точку зрения.

    Сам я занимаюсь вёрсткой сайтов, пишу, что использую сейчас:

    extends core/layout.pug
    
    block vars
      - var pageTitle = 'Название'
      - var pageDescription = 'Описание'
      - var pageKeywords = 'Ключевые слова'
      - var userState= 'logout'
    
    block content


    Данный код у меня идёт в начале типовой страницы. Как видно вначале я подключаю базовый шаблон(layout) на который подключаю: миксины, bemto, HEAD с содержимым, скрипты(перед закрытием body) и тому подобное(ниже есть пример).
    Далее у меня идёт набор переменных. если взять последнюю переменную, то можно понять, как это может быть удобно(в данном случае когда имеет несколько состояний: залогинен пользователь или нет).

    Можно подобным образом вынести в шапку страницы кучу переменных и затем уже не так важно, что вы будете дальше использовать: миксины или инклюды. В зависимости от переменных можно писать условия и в инклюдах и в миксинах.

    Конечно больше я всё же использую миксины, возможно привык. Но вообще здесь куча вариантов, даже например в том, в каком виде передавать значения в миксинах. Я всем желаю не бояться Pug.js а начать писать на нём многостраничный сайт и вскоре вы сами всё поймете, что для вас удобнее.

    Как писал ранее, сам я использую библиотеку миксинов bemto, мне нравится, но использовать её не обязательно, это больше индивидуально.

    Осталось рассказать про block

    Вначале стоит начать использовать block только в шаблоне(layout) , вот например у меня(сопоставьте с примером выше):

    include ../bemto/bemto
    include   mixins
    
    doctype html
    html(lang="ru")
      block vars
      head
        meta(charset='utf-8')
        meta(http-equiv='X-UA-Compatible', content='IE=edge')
        meta(name='viewport', content='width=device-width, initial-scale=1, shrink-to-fit=no')
        meta( name="format-detection" content="telephone=no")
        link(href="https://fonts.googleapis.com/css?family=Montserrat:300,300i,400,400i,500,700,700i&amp;subset=cyrillic" rel="stylesheet")
        title #{pageTitle}
        meta(name='description', content= pageDescription)
        meta(name='keywords', content= pageKeywords)
        link(rel="stylesheet" href="css/bundle.min.css")
      body
        block content
    
    
        +b.overlay(id="overlay")
    
        include ../blocks/product-card-modal
        include ../blocks/cart-modal
        include ../blocks/login-modal
    
        block scripts 
          script(src="js/bundle.min.js")


    Это вариант моего шаблона, который я использую для типовой страницы(смотрите первый пример).

    Верстая, вскоре научитесь передавать block в миксины, это элементарно(Илья Ростопка привёл пример), жизнь заставит научиться :)
    Ответ написан
    Комментировать
  • Когда использовать в pug mixins, когда block, когда include?

    alvvi
    @alvvi
    export default apathy;
    1. Внутри миксина чтобы получить детей которых вы ему передаете
    2. Внутри темплейта который в будущем будет extend-ить другой темплейт, чтобы получить детей из темплейта, который extend-ит этот темплейт.
    3. Внутри темплейта, который extend-ит чтобы передать детей
    Примеры 2 и 3 здесь: https://pugjs.org/language/inheritance.html

    А вот пример для 1
    mixin foo()
      div.bar
        block
    
    +foo()
      div.foo Hello world

    На выходе получим
    <div class="bar">
      <div class="foo">Hello world</div>
    </div>

    ну или тоже есть в доках, но чуть сложнее: https://pugjs.org/language/mixins.html
    Ответ написан
    Комментировать
  • Вопрос новичка: Math.floor / Math.random?

    zona7o
    @zona7o
    Веб-разработчик
    Вроде поэтому:
    Math.random возвращает от 0(включительно) до 1(не включительно).
    Источник: javascript.ru/Math.random
    Ответ написан
    1 комментарий
  • В каком случаи использовать --save и --save-dev в NPM?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Компиляторы-транспиляторы-трансляторы (типа Coffee, LESS, Jade), тест-раннеры, стайл-чекеры и линтеры (mocha, chai, karma, (js|es)lint, jscs), плагины для таск-раннеров (grunt-contrib-watch, gulp-jade) — все это обычно ставится как --save-dev, потому что нужно только тем, кто контрибьютит в этот проект, работает с его кодом.

    Библиотеки и фреймворки (expressjs, jquery, backbone), на основе которых работает ваш код, без которых ваш код не запустится у его потребителя — ставятся как --save.
    Ответ написан
    3 комментария
  • Сравнение объектов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    для каждого случая свои способы:

    1) window === window (это с любыми глобальными или импортируемыми объектами)
    2) рекурсивное сравнение объектов, но надо хэндлить циклические ссылки по хорошему.
    3) JSON.stringify(a) === JSON.stringify(b) как альтернатива второму. Страдает теми же проблемами, надо циклические ссылки самому хэндлить.
    4) lodash.isEqual
    Ответ написан
    3 комментария
  • Чем отличаются JSON от JSONB?

    @curator
    JSONB — двоичная разновидность формата JSON, у которой пробелы удаляются, сортировка объектов не сохраняется, вместо этого они хранятся наиболее оптимальным образом, и сохраняется только последнее значение для ключей-дубликатов. JSONB обычно является предпочтительным форматом, поскольку требует меньше места для объектов, может быть проиндексирован и обрабатывается быстрее, так как не требует повторного синтаксического анализа.

    Источник: https://habrahabr.ru/post/282764/
    Ответ написан
    1 комментарий
  • Как использовать Яндекс Метрику в SPA?

    В яндекс метрике есть метод hit, созданный для таких же целей.
    https://yandex.ru/support/metrika/objects/hit.xml
    Ответ написан
    Комментировать
  • Посоветуй курс по vue.js?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    Вот: https://youtu.be/LGyihQvDEw4?list=PLyeqauxei6jd4mL...
    Бесплатные видео уроки, и у него же есть платные, тоже очень советую! Не пожалеете 1000%!
    Ответ написан
    Комментировать