• Сколько ассинхронных задач может одновременно выполняться?

    TTATPuOT
    @TTATPuOT
    https://code.patriotovsky.ru/
    То, что вы ищите называется Call Stack, Event Loop - информации в интернете очень много по этому поводу.
    Мне в своё время очень понравилось вот это видео (есть русские субтитры).

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

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Иногда вам может понадобится что-то не совсем стандартное. Например, возможность быстро вставлять элемент на k-ое место в структуре и находить, что лежит на k-ой позиции. Это делается деревом по неявному ключу, но, по моему, ни один язык не предоставляет стандартной структуры для этого.
    Ответ написан
    2 комментария
  • Правильно ли так организовывать код?

    myks92
    @myks92 Куратор тега PHP
    Нашёл решение — пометь вопрос ответом!
    1. Лучше try/catch. Если использовать так, то ваша форма ответа может быть разная в зависимости от сервиса. Сервис выбрасывает ошибку, а в контроллере или промежуточном слое она ловится и форматируется. При этом контроллеры могут быть разные и у каждого свой формат ответа: Web, API, Console
    2. Лучше передавать в сам конструктор и использовать DI.
    3. В методе просто выбрасываете исключение throw new Exeption('Ошибка!'); А в контроллере try/catch.
    4. Пока что нет. Будет только в php8. Метод get должен возвращать ошибку или данные. Метод find должен возвращать null или данные.

    Ответ написан
  • Не могу разобраться с массивом?

    @dzhebrak
    Если я правильно понял вашу задачу, то:

    var o = {'0-1-211': 1, '1-1-290': 2, '2-1-380': 3};
    
    for (var key in o) {
    	console.log(key.split('-')[2]);
    }


    Если же у вас дана строка, а не массив, то:
    var s = '{0-1-211: 1, 1-1-290: 2, 2-1-380: 3}';
    
    s.split(',').forEach(function(v, k, arr) {
    	var vv = v.split(':')[0];
    	console.log(vv.split('-')[2]);
    });
    Ответ написан
    1 комментарий
  • Что такое end-to-end тестирование?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Понятие еnd-to-end обозначает всего-навсего классификацию тестов по уровню, на котором тестируется система, и, само по себе, ничего не говорит ни о том, какие конкретно должны быть эти тесты, ни о том, какую роль они играют в общей стратегии обеспечения/проверки качества и, также, не является методикой тестирования. (Методика - это совсем другое понятие.)

    Для понимания сути этого понятия хорошо сравнить его с модульным ("нижний" уровень) и интеграционным ("средний") тестированием на каком-нибудь конкретном примере. Давайте рассмотрим некий сферический webshop в вакууме. Предположим, в нем есть 50 классов и для большинства из них написаны модульные тесты. Они проверяют исключительно функционал конкретного модуля (чаще всего, класса), т.е. тот, что зависит только от самого модуля и ни от чего чего более. Потом есть интеграционные тесты. Они проверяют корректность работы отдельных "модулей", если их собрать вместе согласно архитектурe. Например, работает ли правильно "Корзина", состоящая, в свою очередь, из 10 классов (предварительно проверенных модульными тестами), или "Корзина", подключенная к "Вебморде" и т.д. Где-то повыше в этой иерархии есть такие интеграционные тесты, которые проверяют конкретный функционал всей системы. Например, отправляется ли юзеру мейлом копия оплаченного заказа...

    И вот тут начинается самое интересное для понимания того, что такое end-to-end тестирование! Можно представить себе тест, проверяющий, что соответствующий мейл генерируется и сбрасывается SMTP серверу. Если SMTP сервер не рассматривать, как часть разрабатываемой системы, то этот тест вполне можно назвать end-to-end тестом (послали кучку HTTP запросов через "Вебморду" и проверили сброс мыла на SMTP - все зашибись!). Однако, если настройки и эксплуатация SMTP сервера - часть проекта (например, заказана разработка webshop "под ключ"), может оказаться, что это мыло будет отфильтровано каким-нибудь спам-фильтром, превысит лимит почтового ящика пользователя... короче, не дойдет до него. Тогда этот же самый тест уже нельзя считать end-to-end, а нужно бы было написать тест, проверяющий приход мыла в POP3/IMAP ящик. (Опять же, если это действительно нужно! Ибо, в зависимости от конкретных функциональных и нефункциональных требований, архитектор и QA инженер вполне могут найти возможность обеспечить адекватный контроль качества и без такого теста.)

    Таким образом, end-to-end тесты, это такие интеграционные тесты, которые воздействуют на систему через ее самые внешние интерфейсы и проверяют ожидаемую реакцию системы через эти же интерфейсы. Почему именно интеграционные? Потому, что это единственное, что можно о них сказать наверняка: они по определению не могут быть модульными тестами. А все остальное: являются ли они одновременно приемочными, нагрузочными или еще какими - зависит только от общих плана/стратегии тестирования и той роли, которые эти тесты в них играют.
    Ответ написан
    Комментировать
  • Зачем что-то передавать в теле гет запроса?

    DevMan
    @DevMan
    a почему нет?
    техническая возможность для этого есть. кто–то ее использует, кто–то – нет.

    например, в самом запросе передается версия апи, а в теле – данные.
    можно ли так делать? можно.
    нужно ли? имхо, нет.
    Ответ написан
    1 комментарий
  • Какая есть бесплатная альтернатива Adobe Photoshop для верстальщика?

    HunteR-VRX
    @HunteR-VRX
    Помешанный на развитии
    Здравствуйте.

    1. Figma
    2. Avocode

    Обе программы существуют как для стационарной установки на ОС, так и в рамках облачного использования
    Ответ написан
    2 комментария
  • Как правильно выносить данные аналитики в отдельное хранилище?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Ну, проблема в концептуальном не понимании что такое аналитика и Warehouse или Data Lake.
    Во-первых давайте определимся чем аналитика отличается от метрик, агрегатов и отчетов.
    • Аналитику делают люди, не регулярно, скорость для них не важна
    • Отчеты происходят автоматически на регулярной основе. Для них важна периодичность
    • Метрики нужны чтобы что-то измерять во временном ряду
    • Агрегаты - сбор данных из разных источников вне зависимости от остальных факторов


    Если мы все еще говорим про аналитику то она не должна обращаться к живым данным вообще. Ее складывают в отдельный Warehouse или Data Lake и анализируют по необходимости. Основными инструментами являются Power BI, Tableau или даже пресловутый Excel.

    Если мы говорим про репортинг то чтобы не нагружать живую систему к нему применяются те же правила что и для аналитики.

    Если мы говорим про метрики то для них отдельный сервис строится, из которого получают дашборды, API и все в таком духе
    Ответ написан
    Комментировать
  • Что быстрее массив или объект?

    ivinnic
    @ivinnic
    Full-Stack - подустал
    Добрый день

    Написал два скрипта с замером времени поиска.

    Search by object
    let obj = {}
    
    for(let i =0; i<1000; i++){
        obj['i'+i]=i
    }
    
    console.time('time')
    for(let i =0; i<1000; i++){
    const objResult = obj['i'+i];
    }
    console.timeEnd('time')


    time: 0.156982421875ms

    Search by array
    let obj = []
    
    for(let i =0; i<1000; i++){
        obj.push('i'+i)
    }
    
    console.time('time')
    
    for(let i =0; i<1000; i++){
        const arrResult = obj.find(el => el === 'i'+i);
    }
    console.timeEnd('time')


    time: 32.946044921875ms

    Время конечно может отличатся, но в целом видится что поиск по массиву работаем медленнее обращения по ключу, по крайне мере в промышленном масштабе.
    Ответ написан
    1 комментарий
  • Правильно ли использовать UTC везде на сервере?

    Sanes
    @Sanes
    Правильно. Часовые пояса лучше регулировать в конечном приложении.
    Я везде выставил UTC, кроме приложения. Так проще оказалось.
    Timezone при отредактированном формате в моделе Laravel?
    Ответ написан
    Комментировать
  • Кому принадлежат домены и как они делятся?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Все довольно просто.

    Есть ICANN - Internet Corporation for Assigned Names and Numbers - Корпорация по управлению доменными именами и IP-адресами. Она управляет доменной зоной "." ("точка"), то есть всем пространством имен Интернет.
    В ICANN можно купить право создания и управления TLD (Top Level Domain - домен верхнего уровня). Почему я так подчеркнул слово "купить"? Потому что полученное будет иметь все свойства товара - с ним можно делать все, что угодно, в частности устанавливать любые, какие только вздумается правила регистрации имен в данной зоне.
    Несмотря на то, что купить можно не все TLD - часть зарезервирована под географические зоны, некоторые "хорошие" геозоны все равно можно использовать - кого, например, заинтересует мнение каких-то там Кокосовых Островов (.cc) или Тувалу (.tv)?
    Владелец зоны создает контору по технической регистрации имен. Технический регистратор - один. И именно он вносит изменения в базу. Заявки от конечных клиентов он обычно не принимает, продавая право на это другим конторам, их обычно тоже называют регистраторами, что создает преизрядную путаницу. На самом деле ничего они не регистрируют, они только подают заявки настоящему регистратору.
    Конечные регистраторы продают аренду доменного имени. Это важно. Вы не ПОКУПАЕТЕ имя (то есть оно не имеет свойств товара - Вы не можете его продать, обменять, подарить), Вы его АРЕНДУЕТЕ. Именно поэтому регистратор всегда может этот договор расторгнуть, если посчитает нужным.
    А условия договора аренды - целиком и полностью определяет регистратор, он тут ничем не ограничен. Он обязан платить некую сумму "настоящему" регистратору, а все что намутил - оставляет себе. Примерно, как таксист-частник, работающий под маркой таксопарка :)
    Обычно, когда говорят про домены, подразумевают, что все помнят, что домен купить нельзя, речь идет про аренду и специально этот факт не упоминают.
    Цена регистрации, цена продления и то, почему домен gabbagabbahey.cc будет стоить существенно меньше чем sex.com - определяется исключительно коньюнктурой рынка. На самом деле и то имя и другое не стоит ничего,, и если бы вдруг все люди перестали трахаться и стали фанатами игры Descent - соотношение бы изменилось :)
    Вы и сами можете стать регистратором и гнуть какие хотите цены. Заключаете договор с "настоящим" регистратором - и вперед.
    Иногда спрашивают - как завести свою зону. Обычному человеку как правило - никак. На хабре есть статья, как Яндекс заводил TLD .yandex - это им обошлось примерно в $200000 и год переписки с ICANN.
    Ответ написан
    Комментировать
  • Как в новом PhpStorm добавить файлы в гит?

    deepblack
    @deepblack
    Я сейчас проверил у себя в PhpStorm2019.3, такого не происходит.
    Т.е. при нажатии ctrl+alt+a появляется диалог:
    5e1d2165c61e2581319374.png
    и вот тут нужно нажать cancel, тогда файлы из .gitignore не добавляются.
    Ответ написан
    Комментировать
  • Как отслеживать, что пользователь подписался на страницу в соцсети?

    deepblack
    @deepblack
    Есть метод VK API groups.getMembers С помощью него получаем массив идентификаторов пользователей, ищем там нужного пользователя (предполагается что мы знаем кто должен был подписаться), далее в зависимости от того подписан пользователь или нет выполняем определенные действия. 5e00c85f36c7c668150887.png

    Еще есть метод groups.get тут мы получаем список сообществ указанного пользователя. Думаю тут ты догадаешься сам как его использовать ) 5e00c86680f9c502676552.png

    + Есть Callback API
    Позволяет получать данные о различных событиях в группе.
    Ответ написан
    2 комментария
  • Как установить лимит на выполнение запроса в цикле PHP?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    $ctx = stream_context_create(array('http'=>
        array(
            'timeout' => 10,  // Seconds
        )
    ));
    
    echo file_get_contents('http://example.com/', false, $ctx);
    Ответ написан
    Комментировать
  • Как собрать приложение JS приложение с помощью Electron вместе с БД?

    MvcBox
    @MvcBox
    Software Developer [C/C++/JS(for Node.js)/etc]
    Код для Electron.js приложений после билда хранится в asar архиве.
    Вы не должны упаковывать свою базу в этот архив.
    Базу можно создавать, к примеру, рядом с исполняемым файлом приложения.
    Удалите db.sqlite3 из списка files, а в своем приложении укажите следующий путь к базе:
    `${process.execPath}/db.sqlite3`
    Ответ написан
    Комментировать
  • Какой язык программирования для Back-end производительнее?

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

    Ничего в мире не меняется, Моцарту тоже приходилось отвечать на подобные вопросы.
    Ответ написан
    3 комментария
  • Какой язык программирования для Back-end производительнее?

    DevMan
    @DevMan
    вы любитель сравнивать теплое с мягким?
    мне кажется, что писать что-то крупное на PHP сегодня "зашквар", и дело даже не в моде, а в производительности.
    среди интерпретируемых языков у пыха, сюрпиз-сюрпиз, скорость на высоте.
    а теперь или трусы оденьте, или крестик снимите определитесь что вам нужно: скорость выполнения или скорость разработки.
    кстати, открою вам секрет: на многих проектах используют несколько языков.
    Ответ написан
    Комментировать
  • Можно ли получить 3-НДФЛ, работая неофициально?

    megafax
    @megafax
    web-программист
    Вы можете только задекларировать доходы за 18 и 19й год, заплатить штраф (и немаленький), избежать уголовного/административного преследования и тогда честно получить нужную Вам 3-НДФЛ.
    В противном случае - уточните в нужном ведомстве, устроит ли их справка с банка о наличии именно на Вашем счете нужной суммы (обычно это подтверждение доходов), но никто Вам не запрещает получать поддержку от родственников из-за рубежа вполне легальным способом. Но никогда не рассказывайте что Вы работаете неофициально - так Вы не только себя подставляете, а еще и своего работодателя и косвенно коллег (если работодателя посадят)
    Ответ написан
    Комментировать
  • Правильно ли всегда использовать npm ci вместо npm install?

    Lynn
    @Lynn
    nginx, js, css
    На сервере однозначно правильно.
    https://docs.npmjs.com/cli/ci.html

    This command is similar to npm-install, except it’s meant to be used in automated environments such as test platforms, continuous integration, and deployment [...]


    Более того, я и в разработке использую её, кроме случаев когда надо явно что-то обновить.
    Ответ написан
    Комментировать
  • Как выбрать динамик на телефоне с помощью JavaScript?

    Чисто теоретически это возможно через enumerateDevices() и дальнейшее использование deviceId в setSinkId(), но на практике работает не везде. У меня, например, в последнем Chrome for Android только одно устройство вывода в списке. Вот статья на тему.
    Ответ написан
    Комментировать