Задать вопрос
  • Как создать массив со случайными числами без повторений?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    while(true){
    	if (arr.length == 5) break;

    Засунь условие из if в while. Естественно, с модификацией
    Ответ написан
    3 комментария
  • Как создать массив со случайными числами без повторений?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    создать массив допустимых значений и «вынимать» из него случайные.

    const values = [...Array(10)].map((_, i) => i);
    const result = [...Array(5)].map(() => values.splice(Math.floor(Math.random() * values.length), 1)[0]);
    result // [ 2, 5, 3, 4, 1 ]
    Ответ написан
    2 комментария
  • На чем писать скетч для nodemcu v3?

    BRAGA96
    @BRAGA96
    Из вариантов C/C++, Lua, MicroPhyton. Пишите в чем знаете. Рекомендую попробовать PlatformIo вместо arduino ide
    Ответ написан
    Комментировать
  • Где взялся box в js?

    Ni55aN
    @Ni55aN
    Историческая #%@ня, называемая спецификацией https://html.spec.whatwg.org/multipage/window-obje...
    Ответ написан
    1 комментарий
  • Как скачать миллион картинок?

    MvcBox
    @MvcBox
    Software Engineer [C/C++/JS(for Node.js)/etc]
    urls - массив ссылок на картинки.
    concurrency - во сколько потоков скачивать изображения. Можете поставить свое значение.
    Важно!!! Ни в коем слуае не используйе Sync функции при скачивании и сохранении картинок.

    'use strict';
    
    const Promise = require('bluebird');
    
    Promise.map(urls, async function (url, index) {
        try {
            // Здесь ваш код, который берет url и сохраняет изображение
            // Об async/await можно почитаь здесь - https://learn.javascript.ru/async-await 
        } catch (e) {
            console.error(e);
        }
    }, { concurrency: 10 }).catch(console.error);
    Ответ написан
    Комментировать
  • Как скачать миллион картинок?

    deepblack
    @deepblack
    download_images_from_csv.sh (допилите под себя если нужно)
    spoiler
    #!/bin/bash
    COLUMN=1 # csv column to extract
    RENAME=false # if we should rename the file, note that is was really specific for my problem.
    THREADS=16 # threads to use by parallel
    
    #Set Script Name variable
    SCRIPT=`basename ${BASH_SOURCE[0]}`
    
    #Set fonts for Help.
    NORM=`tput sgr0`
    BOLD=`tput bold`
    REV=`tput smso`
    
    # Help function
    function HELP {
      echo -e \\n"Help documentation for ${SCRIPT}."\\n
      echo -e "Basic usage: ./$SCRIPT"\\n
      echo "Command line switches are optional. The following switches are recognized."
      echo "-f csv file = required should be last argument"
      echo "-c column, default $COLUMN"
      echo "-t threads, default $THREADS"
      echo "-r renamd, should be renamed - work in progress here because this is really specific renaming"
      echo -e "-h --Displays this help message. No further functions are performed."\\n
      echo -e "Example: ./${BOLD}$SCRIPT -rc 2 -f file.csv"\\n
      exit 1
    }
    
    
    #Check the number of arguments. If none are passed, print help and exit.
    NUMARGS=$#
    if [ $NUMARGS -eq 0 ]; then
      HELP
      exit 1
    fi
    
    while getopts ::c::r:h:f FLAG; do
      case $FLAG in
        t)
            THREADS=$OPTARG
          ;;
        c)
            COLUMN=$OPTARG
          ;;
        r)
            RENAME=true
          ;;
        h)  #show help
          HELP
          ;;
        \?)
          echo -e \\n"Option -${BOLD}$OPTARG${NORM} not allowed."
          HELP
          ;;
      esac
    done
    
    shift $((OPTIND-1))
    
    FILE=$1
    # shift ops, all optional args are now removed $1 will have to be the filename
    
    if [ "$RENAME" = true ]; then
        mkdir -p images && cat $FILE | tail -n +2 | cut -d ',' -f$COLUMN | grep http | sed -e 's/^[ \t\r]*//' | \
            (cd images; parallel -j$THREADS -d'\r\n' --gnu 'wget {}; mv {/} `echo "{/}" | tr "." "_" | cut -d "_" -f1,3 | tr "_" "."`')
    else
        mkdir -p images && cat $FILE | tail -n +2 | cut -d ',' -f$COLUMN | grep http | sed -e 's/^[ \t\r]*//' | \
            (cd images; parallel -j$THREADS -d'\r\n' --gnu 'wget {};')
    fi
    Ответ написан
    Комментировать
  • Как импортировать vue компонент со своими параметрами?

    delphinpro
    @delphinpro
    frontend developer
    props: ['color'], !!!

    <Card :color="color"/>
    <Card color="#f00"/>
    Ответ написан
    Комментировать
  • Как убрать linux, установленный второй системой?

    @tiroman
    Как восстановить основную загрузочную запись (MBR)

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

    С помощью клавиши F12 на экране загрузки Dell войдите в меню, которое позволяет выполнить загрузку с установочного носителя Windows, загрузочного диска или флэш-накопителя.

    Нажмите ссылку Восстановление компьютера в нижней части экрана Установить сейчас.

    Нажмите Диагностика.

    Выберите Командная строка.

    Введите следующие три команды по очереди, нажимая клавишу Enter:

    bootrec /fixmbr
    bootrec /fixboot
    bootrec /rebuildbcd
    Извлеките установочный носитель и перезагрузите компьютер, чтобы убедиться, что восстановление выполнено.

    после этого можно удалить разделы с линуксом
    Ответ написан
    1 комментарий
  • Боюсь идти на работу. Было ли на вышей практике что брали джуна, а он не справлялся? сразу увольняют?

    @dimoff66
    Кратко о себе: Я есть
    Идите на зарплату поменьше, там меньше требований и меньше напряжения, а как освоитесь и увидите, что тупите не только вы но и 70% коллектива от миддла до сеньора, попросите прибавки.
    Ответ написан
    1 комментарий
  • Как организовать vue router в приложении с модальными окнами?

    Fragster
    @Fragster
    помогло? отметь решением!
    Поскольку при переходе по ссылке что-то еще должно быть под модальным окном, то тут, скорее всего подойдут вложенные маршруты. Ну или в query "родительского маршрута" передавать признак открытия диалога и пробрасывать его в props или повесить watch на '$route.query.Признак'.
    Ответ написан
    3 комментария
  • Какой самый быстрый алгоритм поиска максимального значения в большом файле?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Просмотрев все значения. Ваш К.О.
    Ответ написан
  • Почему директива не работает?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Сначала определяете директиву, потом создаёте экземпляр Vue. Не наоборот.

    UPD. Первая буква в имени директивы - русская:

    Vue.directive('сarusel', {
    Ответ написан
    2 комментария
  • Как правильно сделать обновляемый компонент vue связанный с vue-router с параметрами url?

    Fragster
    @Fragster
    помогло? отметь решением!
    В :to у router-link и в push можно передавать объект вида {name: 'имя маршрута', params: {ключ1: значение1, ключ2: значение2...}} что сильно облегчит задачу 1. При этом если указать в свойствах маршрута props: true, то все параметры маршрута будут переданы в props компонента, что решит задачу 2 и избавит от 3. Вместо изменения props делать $router.push, да. Ну, или .replace, если нужно.
    Ответ написан
    7 комментариев
  • Что использовать в Frontend для одно страничного приложения?

    @grinat
    Люто рекомендую:
    const render = (foo) => `
      <div>${foo.title}</div>
      <div>${foo.bar ? 'bar' : 'baz'}</div>
      <time>${new Date(foo.dt).toLocaleString()}</time>
    `

    Мне для 95% наколенных проектов хватает.
    Ответ написан
    Комментировать
  • Docker-compose auto installation project?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Лучше если это будут делать скрипты внутри контейнеров.
    К примеру как стартует простой скрипт на Python
    #!/bin/bash
    
    VENV=./rvenv
    # если нет виртуального окружения - создаем его
    if [ ! -d $VENV ]; then
        virtualenv -p `which python3` $VENV
        $VENV/bin/pip install -U pip
    fi
    
    # устанавливаем/доустанавливаем нужные пакеты
    $VENV/bin/pip install -r requirements.txt
    
    # делаем миграции
    $VENV/bin/python src/manage.py migrate
    
    # ждем пока контейнер с фронтом соберет библиотеки с помощью webpack
    sleep 5
    
    while [ -f ./build_stat.flag ];
    do
        sleep 1;
        echo "Wait for webpack"
    done;
    
    # собираем статику
    $VENV/bin/python src/manage.py collectstatic --no-input
    
    
    $VENV/bin/uwsgi --yaml ./src/uwsgi.yml
    Ответ написан
  • Попросили проверить код, на что смотреть нужно?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смотря зачем)). Я когда делаю Code Review критерии следующие:

    * Безопасность:
    - Каждый аргумент метода простого типа должен проверяться на тип в случае его проксирования и на граничные значения в случае обработки. Чуть что не так - бросается исключение. Если метод с кучкой аргументов на 80% состоит из поверки из аргументов - это вполне норм))
    - Никаких trigger_error, только исключения.
    - Исключения ДОЛЖНЫ быть человеко-понятны, всякие "Something went wrong" можно отдавать пользователю, но в лог должно попасть исключение со стектрейсом и человеко-понятным описанием, что же там пошло не так.
    - Каждый аргумент (объект) метода должен быть с тайпхинтингом на этот его класс, или интерфейс.
    - За eval как правило шлю на **й.
    - @ допускается только в безвыходных ситуациях, например проверка json_last_error.
    - Перед работой с БД - обязательная проверка данных.
    - Никаких == и !=. Со swtich - единственное исключение, по ситуации.
    - Если метод возвращает не только bool, а еще что-то - жесткая проверка с ===, или !== обязательна.
    - Никаких условий с присваиваниями внутри. while($row = ...) - тоже идет лесом.
    - Магические геттеры/сеттеры разрешаются только в безвыходных ситуациях, в остальном - запрещены.
    - Конкатенации в sql - только в безвыходных ситуациях.
    - Параметры в sql - ТОЛЬКО через плейсхолдеры.
    - Никаких глобальных переменных.
    - Даты в виде строки разрешаются только в шаблонах и в БД, в пхп коде сразу преобразуется в \DateTimeImmutable (в безвыходных ситуациях разрешено \DateTime)
    - Конечно зависит от проекта, но как приавло должно быть всего две точки входа: index.php для web и console(или как-то по другому назваться) - для консоли.

    * Кодстайл PSR-2 + PSR-5 как минимум, + еще куча более жестких требований (для начала все то что в PSR помечено как SHOULD - становится MUST)
    - В PhpStorm ни одна строчка не должна подсвечиваться (исключением является typo ошибки, например словарик не знает какой-то из аббревиатур, принятых в вашем проекте). При этом разрешается использовать /** @noinspection *** */ для безвыходных ситуаций.
    - Если кто-то говорит, что пишет в другом редакторе и у него не подсвечивается, на эти отговорки кладется ВОТ ТАКЕЕЕНЫЙ мужской половой **й и отправляется на доработку)).

    * Организация кода:
    - Никаких глобальных функций.
    - Классы без неймспейса разрешаются только в исключительно безвыходных ситуациях.

    * Тестируемость (в смысле простота тестирования) кода должна быть высокая.
    - Покрытие кода обязательно для всех возможных кейсов использования каждого публичного метода с моками зависимостей.

    * Принципы MVC:
    - Никаких обработок пользовательского ввода в моделях, от слова совсем.
    - Никаких ***ть запросов в БД из шаблонов.
    - Никаких верстки/js/css/sql-ин в контроллерах.
    - В моделях НИКАКОЙ МАГИИ, только приватные свойства + геттеры с сеттерами.
    - В моделях разрешено использовать метод save(при наличии такого разумеется) только в исключительных ситуациях. Во всех остальных - либо insert, либо update.

    * Принципы SOLD:
    - Никаких божественных объектов умеющих во все.
    - Если метод для внутреннего пользования - private, никаких public.
    - Статические методы разрешаются только в случае безвыходности.

    * Принцип DRY разрешено нарушать в случаях:
    - Явного разделения обязанностей
    - В тестах (каждый тест должен быть независимым, на сколько это возможно)

    * Работа с БД:
    - Запрос в цикле должен быть РЕАЛЬНО обоснован.
    - За ORDER BY RAND() - шлю на***й.
    - Поиск не по ключам (конечно если таблица НЕ на 5 строк) запрещен.
    - Поиск без LIMIT (опять же если таблица НЕ на 5 строк) запрещен.
    - SELECT * - запрещен.
    - Денормализация БД должна быть обоснована.
    - MyISAM не используется (так уж)) )
    - Множественные операции обязательно в транзакции, с откатом если чо пошло не так.
    - БД не должна содержать бизнес логики, только данные в целостном виде.
    - Не должно быть нецелесообразного дерганья БД там, где без этого можно обойтись.

    * Кэш должен очищаться по двум условиям (не по одному из, а именно по двум):
    - Время.
    - Протухание по бизнес логике.
    Разрешается по только времени в безвыходных ситуациях, но тогда время - короткий период.
    - При расчете ключей кэша должна использоваться переменная из конфигурации приложения (на случай обновлений кэш сбрасывается кодом, а не флашем кэш-сервера). В случае использования множества серверов - это очень удобный и гибкий инструмент при диплое.

    * О людях:
    - "Я привык писать так и буду дальше" - не вопрос, ревью пройдешь только когда поменяешь свое мнение.
    - "Я пишу в vim-е и мне так удобно" - здорово, код консолью я тоже в нем пишу)) но есть требования к коду, если в них не сможешь - не пройдешь ревью.
    - "Я скопировал этот страшный метод и поменял 2 строчки" - это конечно замечательно, но по блейму автор всего этого метода ты, так что давай без говняшек, хорошо?
    - "Оно же работает!" - вот эта фраза переводится примерно так: "да, я понимаю, что пишу полную хрень, но не могу писать нормально потому, что руки из жо", я правильно тебя понял?))
    - "У меня все работает!" - рад за тебя, а как на счет продакшна?
    - "Там все просто" - не используй слово "просто", от слова "совсем". Вот тебе кусок кода (первого попавшегося с сложной бизнес логикой), где там ошибка (не важно есть она, или нет)? Ты смотришь его уже 2 минуты, в чем проблема, там же все "просто"))

    * Всякое:
    ActiveRecord (это я вам как в прошлом фанат Yii говорю) - полное говно, примите за исходную. По факту у вас бесконтрольно по проекту гуляют модельки с подключением к БД. Не раз натыкался на то, что в тех же шаблонах вызывают save, или update (за такое надо сжигать).
    То, что используется Laravel - это печально((. Что бы выполнить требования приведенные выше, приходится "воевать" с фреймворком.

    Это далеко не полный список требований, очень много зависит от проекта в целом и от принципов, заложенных в нем. Для больших мредж реквестов 200 комментариев к коду - это ок. Дерзайте.

    UPD

    Формализировал данные критерии по ссылочке: https://github.com/index0h/php-conventions
    Ответ написан
    55 комментариев
  • Проблема с обратной связью, как исправить?

    @gh0sty
    Веб-разработчик. Пишу под Python Django.
    Я в Пыхе не шарю, но, мне кажется, проблема из-за экранирования пробела или регистра в post запросе.
    Попробуй
    <textarea rows="5" name="mess" placeholder="Сообщение"></textarea>

    и
    $message = $_POST['mess'];
    Ответ написан
    1 комментарий
  • Как перенести незакоммиченные изменения в другую ветку?

    @IgorNoskov
    Не делая коммит переходите в нужную ветку, изменения никуда не денутся, закоммитите их в нужной ветке.

    Update
    Это касается случая, когда две ветки находятся на одном коммите. Если они ушли друг от друга, то можно сделать стеш изменений, перейти на нужную ветку и применить стэш, а затем сделать коммит.

    Update2
    Посмотрите видео https://learn.javascript.ru/screencast/git#branche... там всё подробно рассказано о данной ситуации. Советую посмотреть все видео из данного скринкаста.
    Ответ написан
    1 комментарий
  • Случайно раз оставил при 100% батареи на зарядке на всю ночь ipad mini, могло от одного раза что-нибудь случиться?

    C телефоном всё будет в порядке, а с Вами наверное нет. Паранойя - весь прогрессивная...
    Ответ написан
    2 комментария
  • Не получается ввести пароль в терминале?

    REKTOR_RG
    @REKTOR_RG
    Если просто не отображается вводимый текст, то так и надо. Вводимый пароль не виден. Просто введите пароль вслепую и нажмите Enter
    Ответ написан
    Комментировать