Задать вопрос
Ответы пользователя по тегу JavaScript
  • Как наиболее продуктивно сжимать картинки с помощью Gulp?

    mahnunchik
    @mahnunchik
    https://about.me/vlasenko
    Рекомендую присмотреться к этому плагину https://www.npmjs.com/package/gulp-responsive
    Построен на основе https://github.com/lovell/sharp поэтому стоит потюнить настройки по его документации sharp.dimens.io/en/stable
    Ответ написан
    Комментировать
  • Как работать с картинками на gulp.js?

    mahnunchik
    @mahnunchik
    https://about.me/vlasenko
    Для работы с растром, например с фотками https://www.npmjs.com/package/gulp-responsive

    var gulp = require('gulp');
    var responsive = require('gulp-responsive');
    
    gulp.task('default', function() {
      return gulp.src('src/*.jpg')
        .pipe(responsive({
          'photo-*.jpg': [{
            width: 400
          },{
            width: 800,
            rename: {suffix: '@2x'}
          }],
          'background-*': [{
            height: 600
          },{
            // iPhone 4s, 5, 5s
            height: 600 * 2,
            rename: {suffix: '@2x'}
          },{
            // iPhone 6, 6+
            height: 600 * 3,
            rename: {suffix: '@3x'}
          }]
        }))
        .pipe(gulp.dest('dist'));
    });


    Использование в HTML
    <img src="photo-cats.jpg" 
      srcset="photo-cats.jpg 1x, photo-cats@2x.jpg 2x"
      alt="My cats">


    Использование в CSS
    .banner {
      background-repeat: no-repeat;
      background-size: contain;
      //fallback
      background-image: url("background-dogs.jpg");
      background-image: image-set(
        "background-dogs.jpg" 1x,
        "background-dogs@2x.jpg" 2x,
        "background-dogs@3x.jpg" 3x);
    }
    Ответ написан
    Комментировать
  • Логгер для NodeJS?

    mahnunchik
    @mahnunchik Автор вопроса
    https://about.me/vlasenko
    Прошёл год, написан и используется свой логгер. Ниже хочу описать причины и что получилось.

    Требования поменялись и в настоящее время они отлично ложатся на идеологию 12 factor app 12factor.net/logs

    А именно: логгер и само приложение не занимаются записью лога ни в файл ни в базу. Никаких транспортов. Лог пишется только в stdout.

    Мотивация:
    1) Мы получаем отличный лог в консоле во время разработки просто запустив приложение. Без всяких "девелоперских" режимов транспортов.
    2) В продакшене сбором и транспортом лога занимается то, что запускает наше приложение (forever, upstart, supervisor). Процесс транспортировки лога лежит не на самом приложении - это развязывает руки в использовании как своих сервисов агрегации логов (logstash), так и сторонних (loggly).
    2) Как логгер, так и само приложение избавлены от багов "толстого" логгера и транспортов.

    Требования к реализации:
    1) Быстрый старт - возможность начать использовать логгер без первоначальной конфигурации
    2) Пространства имен
    3) Гибкость в настройке формата сообщений (которые мы пишем в stdout)

    Вот так получился mag логгер

    Быстрый старт
    var logger = require('mag')();
    logger.info('my great application is running!');


    Пространства имен
    var mag = require('mag');
    var logger = mag('my-app');
    logger.info('my great application is running');


    Настройка формата сообщений.
    Мы можем подключать mag сколько угодно раз, даже в подмодулях. Подключив один раз модуль mag-hub - все сообщения пойдут через него. mag-hub - это стрим в режими объектов. Мы можем читать из него и делать с объектами логов всё что угодно, записав потом в stdout конечно.

    При написании подмодуля приложения о логировании заботиться также не нужно: https://github.com/mahnunchik/mag#for-module-developers

    Ссылки:
    1) mag logger
    2) API логгера
    3) Модуль агрегации логов в одном стриме mag-hub
    Ответ написан
    2 комментария