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

    DevMan
    @DevMan
    а зачем? что изменится от знания того, что это стартап или бюрократия?
    в компании любого типа может быть радость и веселье, а может быть бюрократия и уныние.
    в крупных компаниях от бюрократии не избавится, всё зависит лишь от её размера и гибкости/пробиваемости.

    у меня алгоритм простой: если офер интересен, я устраиваюсь и беру месяц для ознакомления (хотя достаточно и пары недель), если что-то пошло не так через месяц прощаюсь.
    Ответ написан
    Комментировать
  • Как присвоить объект по значению, а не по ссылке?

    It depends
    Если все свойства твоего объекта - простые, то const newObj = { ...sourceObj };
    Если свойства объекта могут быть объектами и тебе нужно их тоже скопировать, то нужно копировать рекурсивно
    можешь подсмотреть тут
    https://github.com/mateusmaso/underscore.deepclone...
    Ответ написан
    Комментировать
  • Что приходит в браузер?

    deepblack
    @deepblack
    Вот пример того, что возвращает веб сервер:
    HTTP/1.1 200 OK
    Date: Sun, 18 Oct 2009 08:56:53 GMT
    Server: Apache/2.2.14 (Win32)
    Last-Modified: Sat, 20 Nov 2004 07:16:26 GMT
    ETag: "10000000565a5-2c-3e94b66c2e680"
    Accept-Ranges: bytes
    Content-Length: 44
    Connection: close
    Content-Type: text/html
    X-Pad: avoid browser bug
      
    <html><body><h1>It works!</h1></body></html>


    Прямо так, в текстовом виде.
    Можете проверить воспользовавшись telnet (только без использования https), в зависимости от сервера будут отличаться заголовки.

    Вот тут немного подробнее.

    + ознакомьтесь с RFC 2616
    и в догонку Resources and specifications
    Ответ написан
    3 комментария
  • Почему в конструкторе не могу написать так?

    e-vyushin
    @e-vyushin
    Frontend engineer
    Думаю основная причина почему кажется что это должно работать — это непонимание разницы между функцией в JS и методом объекта. Это не одно и то же, несмотря на то что оба варианта можно вызвать подписав скобочки () в конце :) Да, вызывать можно и функцию и метод объекта, а вот создавать экземпляры методов нельзя.

    В указанном Вами примере внутри функции Man вызывается new this.Man. Это означает, что создаётся экземпляр Man, а значит сам Man должен иметь конструктор (грубо говоря быть классом).

    Функции в JS имеют конструктор, а методы объектов не имеют. Функции и методы объектов это не одно и то же. Рассмотрим такой пример:

    const obj = {
       Man() {}
    }

    в данном случае Man() это просто метод объекта. У него нет своего конструктора. Т. е. нельзя создать его экземпляры через new. Но можно его вызвать:

    const obj = {
       Man() {}
    }
    obj.Man();

    это корректный вариант.

    Но создавать экземпляры нельзя. Например:

    const obj = {
       Man() {}
    }
    new obj.Man(); // Будет ошибка. TypeError: obj.Man is not a constructor

    А вот экземпляры функции можно создавать. Например:

    const obj = {
       Man: function() {}
    }
    new obj.Man(); // Всё ок

    для того чтобы создать экземпляр функции не обязательно конечно чтобы она была внутри объекта. Можно и так:

    const Man = function() {}
    new Man(); // Всё ок

    При желании можно поискать инфу на тему почему можно создавать экземпляры функции. Говоря вкратце, раньше в JS не было классов, по-этому наследование было реализовано через прототип функции. Это немного нелепо конечно, но в JS можно создавать экземпляры функции как если бы функция была классом. Сегодня в JS уже есть классы, так что лучше использовать их.

    Вывод: методы объекта и функции это не одно и то же.
    Ответ написан
    1 комментарий
  • Зачем придумали аргументы функций?

    anton_reut
    @anton_reut
    Начинающий веб-разработчик
    А зачем в калькуляторе клавиатура? Давайте сделаем миллиард копий калькуляторов где каждый будет делать операции только с жестко заданными цифрами зашитыми в память. Зачем вообще юзеру давать возможность вводить свои цифры.
    Ответ написан
    Комментировать
  • Кто тупит: Premiere или я?

    nidalee
    @nidalee
    Так и должно быть, потому что у вас кодек inter-frame (один кадр ключевой, N после него - производные), а значит ПК постоянно производит расчеты, чтобы видео воспроизвести. Плюс когда перематываете - ПК сначала ищет I-фрейм, а потом рассчитывает тот, на который вы подмотались.
    Для монтажа придумали монтажные кодеки, у которых каждый кадр - отдельный, intra-frame. Например DNxHR\DNxHD, ProRes и прочие - конвертируйте видео в них, а потом работайте с конвертированным видео. Места занимают много, зато прекрасно перематываются.

    Можете почитать тоже самое, например, здесь: https://postproduction.emerson.edu/hc/en-us/articl...
    Ответ написан
    1 комментарий
  • Должны ли логи оставаться чистыми?

    glaphire
    @glaphire
    PHP developer
    Лучше переписать код так, чтобы "ненастоящие" ошибки не возникали, штатные ситуации хендлить, нештатные ловить в логах. Лишние логи это нездоровая ситуация для долгоиграющего проекта.
    Ответ написан
  • На каких языках можно задавать вопросы и писать ответы?

    Zoominger
    @Zoominger
    System Integrator
    Желательно на русском.
    Лишь бы не на смеси английского с рязанским, которым вы тут блещете.
    Ответ написан
    3 комментария
  • Почему кто-то может отметить ответ решением?

    Moskus
    @Moskus
    В вопросе содержатся ошибки.
    Во-первых, нет никаких "лучших ответов". Есть просто "решения". (Ну ещё голосование "нравится".)
    Во-вторых, отметка решением не делается "от имени автора". Признание ответа решением независимо от автора. Признать решением может автор, куратор тега или другие пользователи, если достаточное их число проголосуют за этот ответ.

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

    И нет, это никакое не "нарушение прав автора" (вы эти права сами только что придумали?), как вы пишете в комментариях. Каких прав? Права не отмечать ответ решением? Его никто не нарушает - автора никто не заставляет отмечать, отмечают другие. Или права запретить другим отмечать ответ решением? Ну так это вообще абсурд. То, что автор не может воспользоваться решением или что он недоформулировал вопрос так, что его реальная проблема не соответствует проблеме в вопросе, не делает решение неправильным.
    Ответ написан
    9 комментариев
  • Почему PHPunit не видит тесты?

    @Kirill-Gorelov
    С ума с IT
    Меня смущает вот это
    phpunit.xnl.dist и phpunit.xml.dist

    Два разных названия
    Ответ написан
    1 комментарий
  • Почему компонент unknown?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Суть проблемы в том, что у анонимной функции пустое свойство name.
    React использует либо заданное свойство displayName, либо собственное свойство функции name. Ни одно из свойств не найдено и вы видите Unknown
    connect в свою очередь, если при создании обертки не находит одно из этих свойств использует слово Component, которое вы и видите в скобках.

    По-хорошему, компоненты описывают так:
    const MovieList: React.FC<MovieListPropsType> = ({ ... }) => { ... };
    
    const mapStateToProps = createStructuredSelector({ ... });
    
    const mapDispatchToProps = { ... };
    
    export default connect(mapStateToProps, mapDispatchToProps)(MovieList);


    P.S. у вас ошибка в слове Desktop.
    Ответ написан
    4 комментария
  • Зачем в современном php фреймворки?

    borisdenis
    @borisdenis
    Ленив и вреден...
    Ну вот вы сами себе противоречите
    плохо не использовать фреймворки в современном php?

    наш микро фреймворк документирован

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

    Ну а на Ваш вопрос - Зачем в современном php фреймворки можно ответить очень просто - А зачем Вы в процессе разработки создали свой микрофреймворк?
    Ответ написан
    Комментировать
  • Как внутри программы определить куда вывод идет в терминал или в файл?

    @lil_Toady
    Автор заметил что вывод разный, то что он сам направил вывод в файл он в курсе :)

    Узнать пишем ли мы в терминал можно так:
    isatty(fileno(stdout));

    istty находится в io.h, а fileno в stdio.h

    И ls, действительно смотрит если вывод в терминал - то в одну строку, иначе - в несколько:
    https://github.com/coreutils/coreutils/blob/master...
    Ответ написан
    Комментировать
  • Может ли тег быть частью вопроса?

    Moskus
    @Moskus
    Какой-то свирепый поток сознания.
    Теги на Тостере используются для выборки, поиска, подписок. Иногда они уточняют контекст. Например, если кто-то спрашивает про регулярное выражение, а теги прописал "RegEx", "PHP" - тогда сразу понятно, о каком синтаксисе речь.
    Однако, если вопрос про селектор CSS, из текста вопроса не следует никакой контекст, а в тегах, внезапно, "Блокировка рекламы", сходу догадаться о том, что речь о CSS-подобном синтаксисе uBlock - весьма сложно. Потому этот тег выглядит ошибочным, лишним.
    Дублировать теги в тексте вопроса - не нужно. А вот формулировать вопрос так, чтобы было понятно, о какой конкретно задаче идёт речь - обязательно. Из хорошей формулировки и смысл тегов будет лучше ясен, так что их никто не удалит.
    А иммунитет от редактирования - это зло. В 95% случаев авторы не хотят принимать правки, это делают модераторы. Кто-то считает правки оскорбительными, кто-то считает, что лучше знает, как по-русски писать, и так далее. Один малолетний идиот мне в комментариях даже череп раскроить за правку его "шедевра" грозился. Я очень долго смеялся, но это меня дополнительно убедило, что функционал редактирования, контролируемый модераторами и кураторами, а не авторами - это очень правильно.
    Ответ написан
    4 комментария
  • Как убрать эти огромные пробелы в строке в microsoft word?

    Kalombyr
    @Kalombyr
    Вы ведь по "ширине" растягиваете, по-моему, такие пробелы и есть принцип его работы...
    Какое поведение вы ожидаете тогда?
    Ответ написан
    Комментировать
  • Чем отличается вторая форма нормализации от третьей?

    Третья нормальная форма не допускает наличия транзитивных зависимостей.

    Допустим, у нас есть БД автосалона. Имеется отношение Автомобиль(СерийныйНомер, Модель, Цена). Имеется зависимость СерийныйНомер -> Модель (т.е. для каждого авто мы всегда точно знаем модель этого авто). Также, так как у нас фирменный автосалон, а не продажа подержаных авто, цена автомобиля зависит только от его модели (т.е. все новые авто одной и той же модели будут стоить одинаково, всякие комплектации в расчёт не берем). Т.е. имеется зависимость Модель -> Цена.

    Т.к. по серийному номеру мы можем определить модель, а по модели - цену, то цена также зависит от серийного номера: СерийныйНомер -> Цена. Однако эта зависимость транзитивная: цена зависит не непосредственно (!) от СерийногоНомера, а от Модели. Следовательно, это отношение не находится в третьей нормальной форме (хотя находится во второй). Для приведения отношения в 3НФ его нужно разбить на два - МодельАвтомобиля(СерийныйНомер, Модель) и ЦенаМодели(Модель, Цена).

    Следует заметить, что если бы предметная область определяла бы иные зависимости, то и рассмотренное отношение могло быть в другой НФ. Например, если бы у нас все-таки продавались подержаные автомобили, и цену на каждый из них мы бы устанавливали отдельно, то зависимости Модель -> Цена уже б не было, а была бы прямая (нетранзитивная зависимость) СерийныйНомер -> Цена, и отношение подходило под критерии третьей нормальной формы.
    Ответ написан
    Комментировать
  • Что конкретно делает эта функция mysqli_real_escape_string()?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Это хороший вопрос, в первую очередь потому что найти человека, который знает правильный ответ, практически нереально. Опроси 10 похапешников, 10 из них тебе наплетут ереси, которая не имеет с реальностью ничего общего. Любой, кто заикнется про SQL инъекции, уже облажался.

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

    Как ты, наверное, уже знаешь, строки в SQL берутся в кавычки:
    SELECT * FROM table WHERE name='vasya'
    Вот чтобы vasya не приняли за имя таблицы или ключевое слово, его берут в кавычки. Очень просто. Но иногда у человека имя не просто вася. Что будет вот с таким запросом?
    SELECT * FROM table WHERE name='Я Д'Артаньян, а все вокруг ...'

    Мясорубка будет. БД решит, что имя - это 'Я Д', а дальше какая-то фигня, которую она не понимает. И выдаст ошибку.
    Поэтому кавычки надо экранировать.
    SELECT * FROM table WHERE name='Я Д\'Артаньян, а все ...'

    никаких ошибок не выдаст.
    Вот mysqli_real_escape_string() как раз этим и занимается - экранирует кавычку слешем, а заодно и сам слеш, потому что если слеш окажется в конце строки,
    SELECT * FROM table WHERE text='Мну сегодня в любви вкладкой ошиблись :\'

    то БД решит, что последняя кавычка экранирована, и строка не заканчивается. Снова мясорубка.
    Также mysqli_real_escape_string() экранирует еще несколько символов, но уже из чисто эстетических соображений.

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

    Но читатель уж сучит ножками в нетерпении - а что же SQL инъекции, о которых так долго говорили большевики? Не может же быть, чтобы они были совсем не при чем. Окей, в качестве побочного эффекта, строка, в которой экранированы спецсимволы (слеш и кавычка), не пропустит инъекцию. Но здесь следует понимать две вещи:

    1. Строки надо форматировать в любом случае, независимо от того, ждем мы инъекцию, или нет. Мясорубка нам точно так же не нужна.
    2. Строками синтаксис SQL запросов не исчерпывается. Есть числовые литералы, есть имена полей. Для всех них mysqli_real_escape_string() бесполезна чуть более чем полностью.

    То есть, отсюда можно сделать вывод, что нельзя использовать mysqli_real_escape_string() для защиты от инъекций. Она предназначена для другого. Вот для этого другого, для форматирования строк, ее использовать можно. Но не нужно.

    Нашлись умные люди, которые придумали, что колупаться вручную с форматированием переменных для SQL запроса - это долго, неудобно, и можно что-то забыть или перепутать. И пусть лучше БД сама этим занимается. И придумали вместо переменных подставлять в запрос специальные маркеры, а сами переменные передавать отдельно. А БД уже потом сама разберется, что и как форматировать.

    В принципе, mysqli умеет так делать, но не так удобно как PDO. Поэтому при возможности вместо нее лучше использовать PDO:
    $stmt = $pdo->prepare("SELECT * FROM table WHERE name=? or name=?")
    $stmt->execute(["Vasya", "Д'Артаньян"]);
    $rows = $stmt->fetchAll();
    - и получить, в итоге, готовый массив с данными, которые вернула БД.
    Если же возможности нет, то кода придется написать чуть побольше
    $stmt = $mysqli->prepare("SELECT * FROM table WHERE name=? or name=?")
    $stmt->bind_param("ss", ...["Vasya", "Д'Артаньян"]);
    $stmt->execute();
    $rows = $stmt->fetch_all(MYSQLI_ASSOC);


    Но при этом всё равно никакой тебе возни с кавычками, слешами, real, escape, и прочей ерундой. Просто, быстро, лаконично и безопасно.
    Ответ написан
    4 комментария
  • Как добыть информацию этого тега?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Кому-то двойной цикл не помогает, а кому-то и одной строки может хватить:
    print(soup.find('span', {'class': 'searchBar__mediaTabTextValue searchBar__mediaTabTotal'}).get_text())

    >>> 75

    А вообще, с таким вот:
    Нужно рабочее решение !!!!

    На соседний ресурс иди.

    А с такими вот предъявами:
    не принимаю и даю жалобу.

    Иди к маме, а не сюда. Тут ты в первую очередь просишь.
    Ответ написан
    Комментировать
  • Как правильно ставить модули через npm install в laravel?

    @dk-web
    я в свое время с jquery ui промаялся.
    в app.js
    require('../../node_modules/jqueryui/jquery-ui.min.js');
    в bootstrap.js
    window.$ = window.jQuery = require('jquery');
    window.$ = $.extend(require('jquery-ui'));

    попробуйте с вашим плагином
    Ответ написан
    Комментировать