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

    glaphire
    @glaphire
    PHP developer
    Базовая таблица "документ" + таблица "свойства документов". Валидация свойств на уровне класса модели. Работа с конкретными документами - через model scope.
    Ответ написан
    7 комментариев
  • Я решил собрать свой первый игровой ПК на замену старого. Правильный ли микс комплектующих?

    Если вы собирайте игровой ПК, то лучше всего для начала посмотреть требования к железу игр ,в которые вы собираетесь играть. Также, как сказал d-sem , вам стоит указать конкретную модель видеокарты, а не только ее gpu, плюс, стоит учитывать разрешение ,в котором вы планируете играть и под это разрешение подбирать видеокарту.
    Ответ написан
    Комментировать
  • Как эффективно и правильно изучать frontend?

    Pavel-Vinogradov
    @Pavel-Vinogradov
    Front-end developed
    Теория без практики - мертва, практика без теории - слепа

    Постарайся найти хороший курс где сразу будет идти шаг за шагом практика и теория
    Для HTML , CSS рекомендую читать htmacademy
    Для изучения JS рекомендую https://learn.javascript.ru/
    Где после прочтения главы идет практика , сделай упор на основные (базовые) понятия ,
    Ответ написан
    Комментировать
  • Как корректно потянуть время до принятия оффера?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    Расставить приоритеты. Именно в данный момент(ковид, сокращения, индексация зп), я бы на вашем месте поторопился, иначе как написал Рональд Макдональд есть шанс не присесть на длинный и большой оффер, и остаться на "улице". К тому же вы ничего не теряете, если у вас оффер уже в компанию с именем и бэкграундом - это не плохо.

    Если вы скажете компании прямо - у меня есть желание пойти в другую компанию, а вы у меня про запас - скорее всего рекрутер покивает в знак уважения к вам, но сразу же начнет собеседовать вашего конкурента, и есть шанс оказаться в ситуации описанной выше.
    Ответ написан
    Комментировать
  • Где ошибка в коде при записи в переменную?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ошибка, как обычно, в ДНК. Шутка.

    Запомни на всю жизнь:
    JSON НИКОГДА, ни под каким видом не пишется руками
    Напечатай это большими буквами и повесь себе на монитор.

    Чтобы получить JSON, в РНР делаешь массив, который потом выводишь с помощью json_encode
    Ответ написан
    4 комментария
  • Что взять для программирования?

    YeahGarage
    @YeahGarage
    Developer
    Лучше Pro. И то бери модель где уже будет решена проблема облезщих экранов. Посмотри с какой серии / месяца 15 или 16 года решили эту проблему
    И оперативка минимум 8 гб и ssd 256
    Аэру будет тяжело, защет менее плохого охлаждения, особенно это будет ощутимо летом
    Ответ написан
    1 комментарий
  • Как программировать бизнес процессы?

    @dzhebrak
    Указанную задачу можно достаточно удобно реализовать с помощью компонента Symfony Workflow https://symfony.com/doc/current/workflow.html
    Ответ написан
    2 комментария
  • Как заставить бота реагировать на своё сообщение?

    Alexandre888
    @Alexandre888 Куратор тега Боты
    Javascript-разработчик
    message.channel.send("сообщение").then(message => message.react("реакция"))
    Ответ написан
    2 комментария
  • Как связывать контейнеры между собой?

    @q2digger
    никого не трогаю, починяю примус
    помещаете их в одну сеть, и они будут друг друга видеть. осваивайте docker-compose , оно само все это делает.
    Ответ написан
    Комментировать
  • Почему clearTimeout не работает?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Ээээ, интересно, вы сами найдёте отсутствующую букву в строке javascipt:stop(), которая используется в ссылке отключения таймера?
    Ответ написан
    1 комментарий
  • Для Автокад лучше Ryzen или Intel?

    Zoominger
    @Zoominger Куратор тега Компьютеры
    System Integrator
    Без разницы.
    Ответ написан
    Комментировать
  • С чего начать джуну в бэкэнде?

    glaphire
    @glaphire Куратор тега PHP
    PHP developer
    Тренироваться лучше на тестовых с фреймворками, база подходов у них одинаковая, начав понимать архитектуру фреймворков намного легче идти дальше или писать на цмс нормальный код (цмс сами по себе не плохие, просто никто не ставит себе цель писать на них долгоживущие и поддерживаемые проекты). Параллельно нужно подтягивать знания грамотного ООП
    Ответ написан
    1 комментарий
  • В сфере IT для новичков нет перспектив?

    @nApoBo3
    Это сложный вопрос. На первый взгляд на низовых позициях в ИТ дикая конкуренция. С другой стороны, она дикая но совершенно беззубая, поскольку уровень кандидатов соответствует дворнику.
    Месяц назад искал себе помощника помощника, кандидатов море, уровень ниже плинтуса, не знают ничего совсем, две кнопки выучили и вот уже ИТ специалист.
    Работа, это все таки не школа и не институт, тут вы в замен тоже что-то должны дать, т.е. должны делать какую-то работу полностью самостоятельно и с должным качеством. Если вы что-то умеете делать самостоятельно и полностью понимаете процесс, то вот такую работу и ищите. То что кто-то может next, next, finish, поставить windows ИТ специалистом данного человека не делает.

    Вот и получается, конкуренция дикая, но среди перспективных ее практически нет.
    А перспективные это те, кто понимают, чтобы получить нужно сначала вложить, и много, и регулярно вкладывают в себя.
    Ответ написан
    3 комментария
  • Безопасно ли делать запрос к БД через ajax?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Через ajax невозможно сделать запрос к БД. Поэтому вполне безопасно.

    А что касается запросов к БД из РНР файла,
    как избежать этого?

    не писать в своем php скрипте код, который будет возвращать пароль при запросе емейла.
    плюс погуглить три слова php sql injection
    Ответ написан
    9 комментариев
  • Попинайте. Работодатель сказал, что у меня код PHP устаревший. В чем именно проблемы?

    Stalker_RED
    @Stalker_RED
    @mysql_query() уже одного этого кусочка хватает для того, чтобы сильно усомниться в скиллах.

    Функция mysql_query устарела более семи лет назад, и в современных версиях языка ее вообще нет.
    Подавление ошибок через @ - вообще шедевр. У вас, значит, запрос с ошибкой, или база упала - но ваш код это просто игнорирует и делает вид, что так и надо. Зашибись :)

    Читайте https://phptherightway.com/
    Ответ написан
    Комментировать
  • Почему в Word документ при печати меняется?

    @alexalexes
    Причин может быть куча:
    - область печати на бумаге, размер бумаги, не того размера, что в электронном документе;
    - драйвер принтера конвертирует векторные составляющие документа в низкое разрешение dpi, появляются искажения.
    - неверно конвертируются непечатающиеся символы шрифта.
    В любом случае, проверяйте в окне предпросмотра при печати, как будет выглядеть документ на выходе. Поправляйте режим печати или изменяйте свойства шрифта на проблемных строках.
    Ответ написан
    1 комментарий
  • Почему при выполнении скрипта node.js увеличивается занятая RAM?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    Давайте посмотрим, что Вы тут накодили... Я уберу Ваши комментарии из кода и добавлю свои:
    const setup = {port:8000}
    const express = require ('express');
    const puppeteer = require('puppeteer');
    
    const app = express ();
    
    app.get('/', (req, res) => {
        const url = req.query.url;
    
        // вот тут Вы на каждый запрос создаете весьма тяжелую функцию
        // в ней 203 AST ноды
        // и она жрет в среднем 220КБ оперативы
        // (node: 14.4.0; v8: 8.1.307.31-node.33, мерил через process.memoryUsage().heapUsed)
        let scrape = async () => {
    
            // а еще на каждый запрос запускам новый браузер
            // у ноды это особо памяти не отнимет, а вот у системы - прилично
            const browser = await puppeteer.launch({args: ['--no-sandbox']});
            const page = await browser.newPage();
    
            // еще и разрешаем запросу из браузера жить вечно
            // если конечно сервак не оборвет коннект
            await page.setDefaultNavigationTimeout(0);
    
            await page.setUserAgent('Mozilla/5.0 (Linux; Android 7.0; NEM-L51) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.81 Mobile Safari/537.36');
            await page.setViewport({width: 375, height: 812});
    
            // куда мы отправляем браузер?
            // переменная url у нас из req.query.url - а следовательно начинается с /
            // то есть без хоста и протокола...
            await page.goto(url);
    
            // что-то мне подсказывает, что это работает не совсем так
            // как Вы ожидаете
            // https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pageevaluatepagefunction-args
            // читаем: If the function passed to the page.evaluate returns a non-Serializable value, then page.evaluate resolves to undefined
            const bottomSheet = await page.evaluate(() => {
                return document.querySelector('div[data-marker="bottom-sheet"]');
            });
    
            // так как undefined !== null данное условие всегда истинно
            if (bottomSheet !== null) {
                // здесь по идее придет Promise.reject который мы не ловим (об этом ниже)
                await page.click('div[data-marker="bottom-sheet"] button');
            }
    
            // и еще раз... ловите доку на нужный метод:
            // https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pageselector
            const phoneButton = await page.evaluate(() => {
                return document.querySelector('a[data-marker="item-contact-bar/call"]');
            });
    
            // всегда ложное условие...
            if (phoneButton === null) {
                await browser.close();
                return false; // ...с return внутри...
            }
    
            // еще 1 способ зависнуть (дефолтный таймаут 30 сек)
            await page.waitForSelector('a[data-marker="item-contact-bar/call"]');
    
            await page.click('a[data-marker="item-contact-bar/call"]');
    
            try {
                await page.waitForSelector('span[data-marker="phone-popup/phone-number"]');
            } catch (e) {
                await browser.close();
                return false;
            }
    
    
            const result = await page.evaluate(() => {
                console.log('phone', document.querySelector('span[data-marker="phone-popup/phone-number"]'));
                return document.querySelector('span[data-marker="phone-popup/phone-number"]').innerHTML;
    
            });
    
            await browser.close();
            return result;
    
        };
    
        // не ловим reject промиса
        // и в случае reject не завершаем запрос
        // и он тоже висит в памяти
        scrape().then((value) => {
            console.log(value);
            if (value === false)
                res.send(500);
            // при value === false будет запись в закрытый поток... (или у express есть защита от дурака?)
            res.send(value);
            // абсолютно бесполезное действие...
            scrape = null;
        });
    });
    
    
    app.get('/test', (req, res) => {
        res.send('Тест');
    });
    
    app.listen(setup.port, () => {
        console.log('Сервер: порт %s - старт!', setup.port);
    });
    Ответ написан
    1 комментарий
  • Можно ли в If вести две или более условии, если да то как?

    olkhovichs
    @olkhovichs
    if(«условие» && «условие») {
    ...
    }
    Ответ написан
    Комментировать
  • Подобрал железо для ПК за 40 000. Оцените?

    twix007
    @twix007
    А не пойти ли тебе на другой форум? Надоели сборщики уже - не работает, тогда пиши сюда.
    Ответ написан
    Комментировать