• Возможно ли создать хорошую игру одному?

    @HellWalk
    Мне 14, и это лето я решил посветить изучению языка c++, в то время , как мои одноклассники курят, и считают это чем-то крутым.

    Молодец, далеко пойдешь.

    Я хочу создавать игры на языке c++

    Хочешь - делай, все просто. Главное начать, а там по ходу разберешься. В любом случае, сколько бы ты не писал планы и концепции на бумаге - в процессе все 10 раз поменяется.

    возможно ли, создать хороший проект одному?

    Можно.

    И вообще, какой уровень знаний нужен для этого?

    Чем сложнее игра - тем больший объем знаний нужен. Для какой-нибудь змейки нужны базовые знания C++. А для создания 3D MMORPG на своем движке понадобится огромный объем знаний.

    P.S. Главное получать от процесса удовольствие. Если будешь делать игру, а мысли только о том, что "поскорее бы релиз и заработать денег" - скорее всего ничего не добьешься.
    Ответ написан
    Комментировать
  • Возможен ли сайт отзывов без сервера на Node (только HTML+CSS+JS)?

    @abberati
    frontend-разработчик
    В современном мире это возможно. Хоть, без бэкенда обойтись не получится, но писать его самому не обязательно. Описанная задача достаточно просто решается с использованием, например, firebase от гугла (или аналогов)
    Ответ написан
    2 комментария
  • Как взламывают бд крупных компаний?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Взламывают точно так же как и мелкие.
    В статье описана обычная SQL инъекция, когда данные подставляются прямо в SQL запрос.

    Я просто сомневаюсь, что valve может нанять таких людей в backend

    Не надо сомневаться.
    Нету никаких "особенных способов взлома".
    А есть такое явление как "эффективные менеджеры". У которых размер премии зависит от того, сколько денег они сэкономили акционерам.

    Если бы там были подготовленные выражения, то и взлома бы не было.
    Но вместо подготовленных выражений в больших компаниях есть эффективные менеджеры. Которые экономят на нормальных программистах, и заказывают разработку в Индии, в штате Бангалор. Где живет какой-нибудь Хамишь Кумар, который родился в касте вычерпывателей говна из сортиров. И вот у него только один шанс не черпать говно всю жизнь - всеми правдами и неправдами научиться программировать, путь даже за еду. Сравниваем с силиконовым программером с запросами $250k в месяц. Экономия налицо!

    На всякий случай напомню, для стопроцентной защиты от инъекций необходимо всегда следовать двум простым правилам:

    1. данные подставляем в запрос только через плейсхолдеры
    2. идентификаторы и ключевые слова подставляем только из белого списка, прописанного в нашем коде.


    Ключевое слово здесь - "всегда". Как только начинаются рассуждения вида "ну эти данные и так безопасные, их защищать не надо", то в этот момент мы добавляем инъекцию к себе на сайт. Следует понимать, что защищаем мы не данные, а запрос. Данные нас вообще не интересуют - какие они, откуда пришли, являются "безопасными" или нет. Важно не то откуда они пришли, а то, куда они идут. В SQL запрос? Используем подготовленные выражения, точка.
    Ответ написан
    1 комментарий
  • Как заменить все вхождения символа на различные значения не прибегая к циклам?

    @dodo512
    $str = '1234145577';
    $mask = '+7(###)###-##-##';
    $i = 0;
    
    $result = preg_replace_callback(
        '/#/',
        function ($m) use ($str, &$i) {
            return $str[$i++] ?? $m[0];
        },
        $mask
    );
    
    echo $result;
    Ответ написан
    2 комментария
  • Занесение массива в функцию, в чем ошибка?

    BorLaze
    @BorLaze
    Java developer
    Смешались в кучу кони, люди... зачем внутри циклы, если для вычисления среднего достаточно
    <?php
    $my = function ($arr)
    {
       return array_sum($arr) / count($arr);
    };
    
    echo $my(array(1, 2, 3, 4));
    Ответ написан
    1 комментарий
  • Как вывести данные из бд, записать их в переменную и вставить в UPDATE?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Зачем делать две выборки и два SQL-запроса, если всё можно сделать одним SQL-запросом, только нужно правильно составить условие и апдейт.
    И ещё, такие операции обычно делают в рамках транзакции
    Ответ написан
    Комментировать
  • Булевы операции в php?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Читаем документацию:
    Смысл двух разных вариантов для операторов "and" и "or" в том, что они работают с различными приоритетами (смотрите таблицу Приоритет выполнения операторов).

    Открываем таблицу приоритетов, ищем нужные операторы.
    && - 15 строка, = - 19 строка, and - 23 строка.
    Переписываем команды с учётом приоритета:
    $bool = true and false; => ($bool = true) and false;
    $bool = true && false; => $bool = (true && false);
    Ответ написан
    2 комментария
  • Зачем нужны внешние ключи прописанные в структуре БД (MySQL) - они действительно там нужны?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Любая СУБД имеет достаточно мощную систему контроля целостности и непротиворечивости данных. Эта система работает, используя набор правил контроля, описанных в структуре БД, и жёстко следит за тем, чтобы ни одно из правил не было нарушено.

    Внешний ключ - это как раз такое правило. Сформулировано оно так: в данном поле таблицы не может храниться значение, которое не присутствует в той таблице, на которую ссылается внешний ключ (rонечно, в зависимости от конкретного текста ссылки внешнего ключа и самого поля тут возможны варианты - например, в этом поле может храниться не только значение, присутствующее в ссылочной таблице, но и NULL). И, имея такое правило, СУБД ни при каких условиях не позволит его нарушить. Любая попытка вставить запись со значением, которого нет в ссылочной таблице, приведёт к ошибке. Любая попытка изменить существующее значение на такое, которого "там" нет - приведёт к ошибке. То же касается и "второй" стороны, СУБД не позволит изменить значение в ссылочной таблице или удалить его (потому что записи в нашей таблице при этом "потеряют" ссылку) - такая попытка корректировки приведёт к ошибке.
    Ответ написан
    2 комментария
  • Какое регулярное выражение использовать для получения части строки?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Не надо никаких регулярных выражений:

    str.split('=').pop()
    // или
    str.slice(str.indexOf('=') + 1)

    Но, конечно, можно и регулярками:

    str.replace(/[^=]*=/, '')
    // или
    str.match(/(?<==).*/)[0]
    // или
    /[^=]*$/.exec(str).shift()

    А вообще, учитывая, чем является эта строка, и что вы хотите из неё получить:

    new URLSearchParams(str).get('sort')
    Ответ написан
    1 комментарий
  • Как сделать git clone файлов с локального компьютера на сервер?

    delphinpro
    @delphinpro
    frontend developer
    Сделать удаленный репозиторий.
    Назначить его основным (origin) у себя локально.
    Сделать push.

    Разумеется, предварительно настроить коннект к своему серверу по ssh.
    Ответ написан
    4 комментария
  • На реальных проектах часто-ли используют ORM библиотеки для баз данных или больше пишут чистые запросы руками?

    @d-sem
    Зависит от проекта.

    Если плюсы ORM перевешивают издержки в конкретном проекте, то будет использоваться ORM.
    Ответ написан
    3 комментария
  • На реальных проектах часто-ли используют ORM библиотеки для баз данных или больше пишут чистые запросы руками?

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

    no_one_safe
    @no_one_safe
    http://mysite/news/1/
    apache
    nginx
    Ответ написан
    Комментировать
  • Как заменить латинскую букву на цифру в строке?

    @dodo512
    .replace(/[A-Z]$/, m => m.charCodeAt() - 64)
    Ответ написан
    Комментировать
  • Как вывести историю действии на php странице?

    dima9595
    @dima9595
    Junior PHP
    Для начала нужно сделать таблицу, в которой будут записываться все изменения с привязкой по номеру телефону или ещё как-то так.
    После, в выдаче самого номера или как вам нужно реализовывать - выводим список изменений.
    Ответ написан
    Комментировать
  • Возможна ли проверка условия внутри ON CONFLICT DO UPDATE?

    Melkij
    @Melkij
    PostgreSQL DBA
    Описание синтаксиса весьма красноречиво намекает о реализации
    DO UPDATE SET ... WHERE condition

    melkij=> create temp table foo (item int primary key, d date, price numeric);
    CREATE TABLE
    melkij=> insert into foo values (1, '2021-07-30', 100) on conflict (item) do update set price = excluded.price, d = excluded.d where excluded.d > foo.d;
    INSERT 0 1
    melkij=> table foo;
     item |     d      | price 
    ------+------------+-------
        1 | 2021-07-30 |   100
    (1 строка)
    
    melkij=> insert into foo values (1, '2021-08-01', 110) on conflict (item) do update set price = excluded.price, d = excluded.d where excluded.d > foo.d;
    INSERT 0 1
    melkij=> table foo;
     item |     d      | price 
    ------+------------+-------
        1 | 2021-08-01 |   110
    (1 строка)
    
    melkij=> insert into foo values (1, '2021-07-20', 80) on conflict (item) do update set price = excluded.price, d = excluded.d where excluded.d > foo.d;
    INSERT 0 0
    melkij=> table foo;
     item |     d      | price 
    ------+------------+-------
        1 | 2021-08-01 |   110
    (1 строка)
    Ответ написан
    Комментировать
  • Проблема с regexp на mysql 8.0.26?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Согласно MySQL 5.7 Reference Manual / ... / Regular Exp...

    [[:<:]], [[:>:]]

    These markers stand for word boundaries.


    Согласно MySQL 8.0 Reference Manual / ... / Regular Exp...

    The Spencer library supports word-beginning and word-end boundary markers ([[:<:]] and [[:>:]] notation). ICU does not. For ICU, you can use \b to match word boundaries; double the backslash because MySQL interprets it as the escape character within strings.


    Так что подход правильный.

    Но Вы не учитываете, что слэш надо квотить как для PHP, так и для MySQL. Т.е. их должно быть не два, а четыре.
    Ответ написан
    Комментировать
  • Как читать документацию по node.js?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    на официальномй сайте, проматываю чуть ниже и вижу

    fs.writeFile(file, data[, options], callback)#
    History:
    • file <string> | <Buffer> | <URL> | <integer> filename or file descriptor
    • data
      <string> | <Buffer> | <TypedArray> | <DataView> | <Object>

    • options <Object> | <string>
      • encoding <string> | <null> Default: 'utf8'
      • mode <integer> Default: 0o666
      • flag <string> See support of file system flags. Default: 'w'.
      • signal <AbortSignal> allows aborting an in-progress writeFile

    • callback <Function>
      • err <Error> | <AggregateError>



    When file is a filename, asynchronously writes data to the file, replacing the file if it already exists. data can be a string or a buffer.

    When file is a file descriptor, the behavior is similar to calling fs.write() directly (which is recommended). See the notes below on using a file descriptor.

    The encoding option is ignored if data is a buffer.

    If data is a plain object, it must have an own (not inherited) toString function property.
    ...


    откуда следует что:
    первый параметр - это имя файла который нужно создать,
    второй параметр - это данные которые нужно записать,
    третий (необязательный) - это объект с опциями
    а четвертый (или третий если предыдущий параметр не был указан) - это коллбэк

    ЗЫ: уважаемый ТС, я понимаю что вопрос скорее всего был задан из-за вашей невнимательности, но тем не менее ответ вы получили, отметьте его решением)))

    Вот вам способ быстро найти информацию на странице:
    - открыв нужную страницу с большим объемом текста, перемотайте страницу в начала (до оглавления) и затем нажмите комбинацию кнопок CTRL+F (поиск по тексту страницы) и в появившемся окошке вбивайте искомый текст (в данном случае fs.write). После этого нужные пункты оглавления подсветятся желтым и вы легко найдете нужный.
    Ответ написан
    12 комментариев
  • Как написать рекурсивный запрос?

    @galaxy
    Ну что-то типа такого (выводит для каждой строки с parent_id = null):
    with recursive cat as (
      select id, id top from landcategory where parent_id is null
      union
      select lc.id, top from landcategory lc join cat on (cat.id = lc.parent_id)
    )
    select lc.*, childs from landcategory lc join (
      select top, array_agg(id) childs from cat
       group by 1
    ) t on (t.top = lc.id)

    https://www.db-fiddle.com/f/9gQNjVwLn3W11pnCcr8NEs/0
    Ответ написан
    Комментировать