• Какой есть хороший редактор html+css+js?

    @MitoZ
    front-end developer
    лично я юзаю websotrm, не встречал другого, более удобного редактора для js, тут и дебагер, и тесты, и сборщики, и работы с Nodejs и интеграция популярных фреймворков, шаблонизаторов и тд. и тп., в общем именно под js разработку, имхо, он удобнее всех
    отдельно для html+css удобны brackets и sublime text (2,3)
    но по итогу юзаю webstorm, ибо все в одном (js+html+css) и очень много полезных и настраиваемых фич прямо из коробки
    сам пробовал и работал в notepad++, sublime (2,3), brackets, vs + web essential, все были настроены, с плагинами и тп.
    Ответ написан
    Комментировать
  • Захват видео с камеры браузером и отправка его на сервер по rtmp протоколу?

    @MitoZ Автор вопроса
    front-end developer
    путем пары дней поисков найдены следующие 2 варианта:
    1) webcam-streaming - бесплатен, но последний апдейт аж 4-х летней давности, но все же рабочий
    2) uppod camera plugin - платный плагин на плейер uppod
    Ответ написан
    Комментировать
  • Grunt (Less+Autoprefixer+Watch), как настроить, чтобы watch обрабатывал не всю папку, а только измененный файл в ней?

    @MitoZ Автор вопроса
    front-end developer
    Спасибо за ссылочку на пример использования ивента, собственно поковырялсо и сделал пока так, немного топорно - но рабочий вариант:
    module.exports = function(grunt) {
    
        var lessFolderPath = 'Less';
    
        grunt.initConfig({
            pkg: grunt.file.readJSON('package.json'),
    
            less: {
                options: {
                    paths: ['Less/']
                },
                files: {
                    expand: true,
                    cwd:    lessFolderPath + '/',
                    dest:   "Modules/",
                    src:    "*.less",
                    ext:    ".css"
                }
            },
    
            autoprefixer:{
                options: {
                    browsers: ['> 1%', 'last 2 versions', 'Firefox ESR', 'Opera 12.1'],
                    cascade: false
                },
                multiple_files: {
                    expand: true,
                    flatten: true,
                    cwd: 'Modules/',
                    src: '*.css',
                    dest: 'Modules/'
                }
            },
    
            watch: {
                less: {
                    files: ['Less/*.less'],
                    tasks: ['less', 'apr'],
                    options: {
                        spawn: false
                    }
                }
            }
    
        });
    
        grunt.loadNpmTasks('grunt-autoprefixer');
        grunt.loadNpmTasks('grunt-contrib-less');
        grunt.loadNpmTasks('grunt-contrib-watch');
    
        grunt.registerTask('default', ['watch:less', 'watch:css']);
        grunt.registerTask('apr', ['autoprefixer']);
    
        grunt.event.on('watch', function(action, filepath, target) {
            var filePathName = filepath.replace(lessFolderPath + '\\','');
            var fileName = filePathName.replace('.less','');
    
            grunt.log.writeln(target + ': ' + filePathName + ' has ' + action);
    
            grunt.config('autoprefixer.multiple_files.src', [fileName + '.css']);
            grunt.config('less.files.src', [filePathName]);
        });
    };
    Ответ написан
    Комментировать