All streams
Search
Write a publication
Pull to refresh
0
0
standy @standy

User

Send message

Формулировка задачи немного размыта, но судя по вот этим строчкам в решении это и требовалось


if (arr[i].length !== arr[i+1].length) {
        return false; 

Есть несколько неверных ответов, к примеру
12 Колбек функции sort должен возвращать число, а не булево значение, это важно. Контр-пример:


[8,4,9,7,6,5,4,3,2,1,0].sort((a,b) => a > b); // [5,0,1,2,3,4,4,6,7,8,9] (в хроме)

13 Сумма кодов символов не сработает, пример


sameWords(['lnt', 'tok', 'okt']) // true

примитивное решение с сортировкой
function sameWords(arr) {
    var firstSorted = arr[0].split('').sort().join('');

    for (var i = 1; i < arr.length; i++) {
        var sorted = arr[i].split('').sort().join('');
        if (firstSorted !== sorted) return false;
    }

    return true;
}

38 Вариант с eval не сработает вот тут: {{}}

Это сработало бы если бы числа 1..n нельзя было бы делить

А почему он не может быть произведением 4х простых чисел > n ?

Пункты 1 и 2 друг другу противоречат, судя по всему компания уделяет большое внимание соблюдению сроков и бюджетов проектов, а не мотивации

У вас async/await код больно страшный. К примеру, в функции checkItems последние catch и then на одном уровне, хотя первое относится к fs.stat, а второе к Promise.all. Плюс использовать исключения для управления потоком не очень хорошо


К тому же код в примерах не эквивалентный, в promise-версии файлы фильтруются и читаются сразу, а в async-версии сначала получается список файлов, потом читается по списку — отсюда два использования Promise.all


У меня с async получилось так:


async function readFile(file) {
    const stat = await promisify(fs.stat, [path.join(__dirname, file)]);
    if (!stat.isFile()) {
        console.error("Not a file!");
        return null;
    }
    return await promisify(fs.readFile, [file]);
}

async function main() {
    const items = await promisify(fs.readdir, [__dirname]);
    const buffersOrNull = await Promise.all(items.map(readFile));
    return buffersOrNull.filter(buffer => buffer !== null);
}
В консоли можно включить вычисления с произвольной точностью
math.config({
  number: 'bignumber',
  precision: 64
});

правда пропадает фича с единицами измерения
В абсолютных величинах это ничего бы не изменило, т.к. первый заключенный имел бы шансы 31.18% и никак больше.

У первого заключённого должно быть больше шансов, поскольку второе утверждение более слабое
1. нет ни одной последовательности, длиной больше 50
2. длина первой последовательности больше 50
Видимо, это мне :) спасибо, посмотрю!
Рецепт, как скрыть скроллбар:
1. посчитать ширину скроллбара (это div.offsetWidth - div.clientWidth)
2. обернуть контейнер, дать обёртке свойство overflow: hidden
3. сделать контейнеру отрицательный отступ вправо, на ширину скроллбара

Не так уж и сложно. Я так сто раз делал!
Даже писал свой плагин для кастомизации скроллбара standy.github.io/custom-scroll

Более того, для большинства браузеров это можно сделать обычным css (кроме ФФ и некоторых версий ИЕ)
blogs.msdn.com/b/kurlak/archive/2013/11/03/hiding-vertical-scrollbars-with-pure-css-in-chrome-ie-6-firefox-opera-and-safari.aspx
Заглянул в код и ужаснулся, три тысячи строк для такого простого индикатора это перебор. Вы написали свой скроллменеджер.

Всё ведь можно сделать гораздо проще:
1. скрыть нативный скролл
2. при изменении позиции скролла, перерисовать индикатор

Набросал пример в 30 строк кода: jsfiddle.net/wzttveva/3

К плюсам такого решения могу добавить:
  • можно выделить текст
  • работает скролл по средней кнопке мыши, как и любой другой нативный способ скролла

gulp-copy не нужен, потому что gulp умеет выполнять задачи без трансформации, как
gulp.src('./source/js/**/*.*', {base: './source'})
  .pipe(gulp.dest('./dist')) //скопирует папку js из source в dist
  .pipe(gulp.dest('./deploy')); //можно использовать несколько раз


По поводу requirejs и browserify, вот что говорится в руководстве для написания плагинов
Your plugin should not do something that can be done easily with an existing node module
Wrapping every possible thing just for the sake of wrapping it will pollute the ecosystem with low quality plugins that don't make sense within the gulp paradigm.

Плагин не должен делать то, что легко делается существующим node модулем
Оборачивание всего подряд ради обертки загрязняет екосистему плагинами низкого качества, что противоречит парадигме gulp

Так что да, не нужны
gulp-requirejs — простая обертка
gulp-browserify — не поддерживается, вместо этого сам дает ссылку на рецепты, где способ запуска browserify для gulp
Некоторые плагины из подборки в статусе deprecated: gulp-clean, gulp-plato, gulp-bower-files

gulp-uncss — у вас ссылка не на тот плагин, на gulp-uncss-task, который тоже deprecated

gulp-copy — плагин сомнительной полезности, копировать файлы гулп умеет из коробки.

gulp-express — запускает не только Express.js сервер, а вообще любой
Пользователь его без специального плагина и не получит (вы же его не подключаете как скрипт, я надеюсь).

По мне, так для продакшена надо делать отдельную сборку, с минификацией и без сорсмап.
Почему все ссылки на гитхаб, а не на npmjs? У последнего видны количество закачек, зависимости и есть ссылка на репозиторий.
Подборка ведь для людей, которые будут использовать, а не допиливать ;)
Вам менять никто ничего не предлагает, тем более если уже настроено и работает. Используйте, если удобно.
Говорю же, каждому своё.
Система сборки это не преимущество спрайтов, для base64 все так же настраивается.

Что есть такого у спрайтов, чтобы их до сих пор использовать?

PS: забыл упомянуть — встраивать через data:url можно и jpeg и анимированный gif.
В плане удобства — каждому свое.

Мне, например, нравится base64, тем что:
* его можно использовать в виде повторяющегося фона
* не нужен отдельный элемент для иконки <i class="icon"></i>
* base64 делается нажатием одной кнопки и без настроек — можно обойтись без сборки вообще, используя онлайн-декодер
* удаление иконки происходит так же просто как удаление класса из css
* добавление одной иконки никак не повлияет на другие. Со спрайтом вполне может произойти так, что неопытный специалист добавит что-то свое, пережмет из png-24 в png-8, и не заметит что стало хуже.

В общем, по мне baseurl проще. А значит, при прочих равных — лучше.
Провел эксперимент, с картинкой png (этой: xkcd.com/1445/)
Размер: 11 597 байт,
В архиве: 11 613 байт

В виде строки base64
Размер: 15 464 байт
В архиве: 11 694 байт

Разница после gzip менее процента.
Попробовал поменять архиватор, тенденция сохранилась.

PS: на всякий случай прогнал картинку через punypng: No savings
1
23 ...

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity