Задать вопрос
  • Возможно ли циклом передавать параметры?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Вынести все параметры в отдельный объект:

    [
      {
        name: 'componentName1',
        props: {
          propName1: ...,
          propName2: ...,
        },
      },
      {
        name: 'componentName2',
        props: {
          propName69: ...,
          propName187: ...,
          propName666: ...,
        },
      },
      ...
    ]

    <component
      v-for="n in componentsData"
      v-bind="n.props"
      :is="n.name"
    />
    Ответ написан
    1 комментарий
  • Как правильно поставить тип параметру?

    miraage
    @miraage
    Старый прогер
    interface TodoItem {
        id: number
        subtitle: string
        important: boolean
        done: boolean
    }
    
    const generalToggle = (arr: TodoItem[], id: number, propertyName: keyof TodoItem) => {
            const idx = arr.findIndex((item) => item.id === id);
            const oldItem = arr[idx];
            const value = !oldItem[propertyName];
    
            const item = {...arr[idx], [propertyName]: value};
            return [
                ...arr.slice(0, idx),
                item,
                ...arr.slice(idx + 1)
            ];
        };


    А еще лучше, храните TODO объектом по ключам (для мутаций) и отдельно список IDs (для рендера списка), чтобы O(n) не гонять на каждое изменение.
    Ответ написан
    9 комментариев
  • Нужно ли везде использовать TypeScript? или это хайп?

    Xuxicheta
    @Xuxicheta
    инженер
    Нужно ли везде использовать TypeScript?

    ну видимо нет.

    или это хайп?

    нет

    Есть ли смысл использовать Typescript в пет проектах?

    Писать на ts тупо удобнее, отлавливает сразу простые ошибки и предоставляет автодополнение и информацию о сигнатурах.

    типа создал мини игру 15 строчках кода на TypeScript?

    как хотите, ради 15 строчек мне было бы лень настраивать конфиг, но я бы точно писал всегда на ts если бы оно поддерживалось по дефолту.

    Или он только в крупных проектах нужен? и вообще все прям без него будто не могут писать судя по отзывам или это какойто хайп или реклама Microsoft

    еще раз. ts - удобнее и надежней.
    Ответ написан
    2 комментария
  • Как типизировать такой объект данных?

    Zraza
    @Zraza
    Помог ответ? Отметь решением!
    Нет, обобщенные типы можно использовать не только в функциях
    type SomeData<Data = any> = {
        data: Data[];
    }
    const a: SomeData<number> = {data: [1,2,3]};
    Ответ написан
    Комментировать
  • Как типизировать класс javascript на typescript?

    Alexandroppolus
    @Alexandroppolus
    кодир
    сделать phrase абстрактным полем/свойством и переопределять в потомках. Потомок сам может выбрать - сделать поле или свойство.

    interface IAnimal {
        name: string;
        say: () => string;
    }
    abstract class Animal implements IAnimal {
        name: string;
    
        constructor(name: string) {
            this.name = name;
        }
    
        say() {
            return `${this.name} says ${this.phrase}`;
        }
    
        protected abstract phrase: string;
    }
    
    class Cat extends Animal {
        protected get phrase() { return 'm'; }
    }
    
    const c = new Cat('q');
    console.log(c.say());
    Ответ написан
    Комментировать
  • Безопасно ли удалить pull request?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Удалить Pull Request невозможно, разве только закрыть его, да и не нужно ничего удалять для доработки задачи! Просто вернитесь в свою тематическую ветку. Добавьте новые коммиты с исправлениями и отправьте их на гитхаб. Pull Request обновится автоматически.

    Даже если вы закрыли пиар, но продолжили работать в той же ветке, то последующий пуш просто заново откроет этот же пиар.

    Аналогично если на Code Review будут замечания, то вы их просто исправляете локально в той же тематической ветке и пушите. Доработки сразу попадут в Pull Request.
    Ответ написан
    Комментировать
  • Можно ли установить компьютер на застекленном балконе?

    saboteur_kiev
    @saboteur_kiev Куратор тега Железо
    software engineer
    Если не выключать вообше, то будет норм. Если выключать, то может случиться проблема с конденсатом.
    Ответ написан
    Комментировать
  • Можно ли установить компьютер на застекленном балконе?

    solotony
    @solotony
    покоряю пик Балмера
    температура внутри корпуса будет градусов на 10 выше

    у меня пара серверов стояла в слабо отапливаемом складе (там температура уходила в "-" стабильно") - лет 5 проработали (профилактику пылесос + замену кулеров я делал 2 раза за это время. Ни один из 10 hdd за это время не помер
    Ответ написан
    Комментировать
  • Можно ли установить компьютер на застекленном балконе?

    @kalapanga
    Не очень хорошо ему там будет.
    Как минимум у HDD рабочий диапазон температур обычно указан от 0 или от +5 градусов. Т.е. где-то на грани получается. Разьве что комп активно работает и сам себя хорошо греет.
    Лучше, наверное, не выключать его совсем. В выключенном ещё и смазка в кулерах застыть может, потом не стартуют.
    Ну и внеся потом домой перед включением не забыть дать прогреться и проветриться, чтобы конденсат ушёл.
    Ответ написан
    Комментировать
  • Почему Git изменил код?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    У WebStorm, который у вас открыт, есть прекрасный инструмент разрешения конфликтов.

    Через меню сначала сделайте Git->Commit.
    Потом в меню Git -> Fetch (вытащить все последние изменения с сервера в кэш гита).
    Затем Git -> Pull.
    Если есть конфликты, откроется инструмент разрешения конфликтов.

    Там все визуально легко понять, что и куда мержится. Слева у вас изменения с сервера, справа ваши, а посередине результат, который можно редактировать.
    Ответ написан
    2 комментария
  • В чем отличия драйверов local и public файловой системы laravel?

    delphinpro
    @delphinpro Куратор тега Laravel
    frontend developer
    Вы говорите не о драйверах, а о дисках.
    Драйвера - это другое, их 4 доступно "local", "ftp", "sftp", "s3". Это способы хранения файлов. Драйвер local - это файловая система вашего сервера.

    О дисках:

    По умолчанию диск local маппится на /storage/app, а public на /storage/app/public.
    Каталог /storage/app/public в свою очередь линкуется в /public/storage

    Отсюда вывод: диск public доступен из интернета. диск local – нет.
    Но если вы в диске local загрузите файл по пути 'piblic/image.png' то он также будет доступен по адресу site.com/storage/image.png
    Ответ написан
    2 комментария
  • Почему в AJAX ответе не работают JS скрипты?

    tmaslov22
    @tmaslov22
    Backend developer
    Сервер должен отдавать ответ в формате json и потом эти данные прокидывай в select2 через js код.
    Пример см в доке
    Ответ написан
    1 комментарий
  • Как можно сократить говно-код?

    @rPman
    Кучи if ($request->input("type") заменяй на switch case, тем более далее по тексту у тебя оно используется, пиши код хотя бы в одном стиле.

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

    Про права доступа, у тебя точно 2 состояния - public и authorized? может у тебя еще есть какой-нибудь superuser? или еще есть права на основе данных (например если статус операции 'такой то' то действие запрещено)... хотя метод по любому должен быть ->allowed() который собирает данные по текущему пользователю, состоянию, данным и т.п. хотя лучше разделять права доступа по роли и по состоянию, пусть будет пара методов.

    Вот такие строчки "required|numeric|min:1|max:10000" - bad practics, магические константы, что значит 10к, 15, 3, 24, 5000... везде разные, что почему зачем, уже через пол года ты не вспомнишь а уж другой программист и подавно не поймет. Оформляй в виде функции-генератора или даже класса, документируй все значения, даже если это значения от балды, когда ты их выдумывал какой то смысл ты в это вкладывал - опиши это в коментариях в этой функции или классе, не обязательно все выносить в конфиг файл, сам отдельно лежащий файл с таким классом уже этот конфиг. Мало того, почему сериализация массива такая странная, на рынке существует уже безоговорочный стандарт json, и machine и human readable, накладные расходы минимальны (можно заставить паковать nginx, по трафику будет не на много больше чем умно оформленный protobuf), тем более у тебя там ошибки уже в json выдаются.
    Ответ написан
    2 комментария
  • Чем плох md5(md5($pass)) для пароля?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Иногда смотришь на вопрос и не понимаешь, о чем он.
    Судя по вопросу и цифрам в нем, автор и так уже осведомлен о правильных способах хэширования и должен уже знать ответ на свой вопрос.

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

    Возможно, непонимание происходит оттого, что существует не один, а несколько векторов атаки на пароль.
    1. Поиск хэша по "радужным таблицам" (rainbow tables): огромным базам данных, где собираются заранее посчитанные хэши для любых возможных строк.
    2. Метод грубой силы (bruteforce): перебирать все комбинации символов и применять к ним хэширующую функцию до тех пор, пока она не вернёт искомый хэш.
    3. Поиск по словарю. Похож на брутфорс, но перебор не всех возможных значений, а всего нескольких тысяч самых популярных паролей, типа "123", "password" и пр.
    phpfaq.ru/tech/hashing

    И только одного элемента недостаточно, а нужны все в комплексе:
    - Хэширующая функция должна иметь большую вычислительную сложность, чтобы усложнить подбор перебором. по этой причине md5() не подходит
    - Хэш должен быть посолен уникальной солью, чтобы нельзя было, затратив 1 раз кучу вычислительных усилий, заранее построить хэши для любых комбинаций символов. По этой причине фарш без соли - деньги на ветер.
    - Пароль не должен быть слишком простым, иначе даже медленный перебор его раскроет. Этот момент тоже надо учитывать
    Ответ написан
    Комментировать
  • Недостатки видеоуроков?

    Zhbert
    @Zhbert
    Technical Writer, Linux user
    Смотря какие и о чем. В целом — пустая трата времени, прочитать документацию быстрее и полезнее, чем слушать «ээээ» и «ыыыы» на 15 минут. Плюс читать полезнее — развивает мозг, в отличие от.

    Хотя не спорю, бывают и полезные видеоуроки, но их очень сложно найти среди тонн откровенного говна.
    Ответ написан
    Комментировать
  • Что не так с конфигом FastCGI (Nginx + PHP-FPM)?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    Апач тоже работает с FPM или всё-таки с модулем? Если да - дело в настройках PHP.
    Ответ написан
    1 комментарий
  • Как в sass работать с вложенными классами классов модификаторов БЕМ?

    @nikita1711
    Допустим, есть класс
    .intro__photo-img {
          width: 40rem;
          height: auto;
    }

    Так он записывается в scss:
    .intro {
      &__photo {
        &-img {
            width: 40rem;
            height: auto;
        }
    }
    Ответ написан
    2 комментария
  • Почему не работает запрос MySQL?

    Immortal_pony
    @Immortal_pony
    Если вы используете $wpdb, то зачем mysqli_fetch_assoc-то, подсчёт результатов, цикл while и прочая ерунда?

    <?php 
    require_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
    global $wpdb;
    $results = $wpdb->get_results("SELECT * FROM stats_players ORDER BY logins LIMIT 10");
    ?>
    
    <table class="gradienttable">
        <tr>
            <th>Позиція</th>
            <th>Гравець</th>      
            <th>Входів</th>
        </tr>
        
    
        <?php foreach ($results as $i=>$row) { ?>
            <tr>
                <td><?= $i+1 ?></td>
                <td><?= $row['name'] ?></td>       
                <td><?= $row['logins'] ?></td>
            </tr>
        <?php } ?>
    </table>
    Ответ написан
    3 комментария
  • Как откатиться назад на стабильный commit и при этом сохранить полезный код, который ты сделал после допущенной ошибки?

    На практике редко ошибки правятся "выдиранием" одного коммита из истории, но такая операция вполне себе возможна.
    Вариант номер один - интерактивный ребейз, и в нем указываешь какие коммиты дропнуть. Если коммитов много, то можно задолбаться решать конфликты
    Вариант номер два - просто делаешь новый коммит с реверсом изменений из коммита, который привел к проблемам
    Вариант третий - делаешь новый бранч, откатываешся до проблемного коммита, потом из полного бранча накатываешь остальные изменения.

    Все сценарии приблизительные, потому что каждая проблема требует комплексоного подхода и знания возможностей инструмента, поэтому не поленись, а почитай вот это внимательно и полностью
    https://git-scm.com/book/en/v2
    Ответ написан
    Комментировать