• Как добавить файл в проект при компиляции, чтобы потом дропнуть его на ПК?

    @rPman
    Правильный способ - создать свой инсталятор, который в свою очередь все развернет, скопирует и спросит пользователя куда, nsis тебе уже посоветовали. Есть по проще - самораспаковывающиеся архивы, sfx модули есть по до все от winrar до zip

    Есть не самый тривиальный способ хранения файлов прямо в exe-шнике как часть данных в секции .data, для c/c++ это создание объектного .obj файла с последующей его линковкой, при запуске такие данные доступны нативно без предварительной загрузки (формально операционная система мапит exe-шник в память и загружает данные по мере необходимости максимально эффективно).

    Сделать это можно с помощью xxd (генерирует cpp вида data = {0x11,0x22,...) явно не самый эффективный способ но зато самый универсальный, либо с помощью objcopy
    https://habr.com/ru/post/545946/
    https://stackoverflow.com/questions/47414607/how-t...
    https://medium.com/@irony.superman/convert-binary-...
    Ответ написан
    Комментировать
  • Подсчёт запусков программы или как посчитать, учитывая GROUP BY?

    rozhnev
    @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    общее количество запусков за сегодня:
    SELECT count(*) from `runs` where `date` >= unix_timestamp(curdate());


    подсчёт уникальных запусков:
    SELECT count(distinct client) from `runs` where `date` >= unix_timestamp(curdate());


    подсчёт новых пользователей:
    SELECT COUNT(*) FROM (
        SELECT 
            `client`, MIN(`date`) `first_run`
        FROM `runs` 
        GROUP BY `client` 
        HAVING `first_run` >= unix_timestamp(curdate())
    ) `todays_first_runs`;


    https://sqlize.online/sql/mysql80/5f26564f43abe78c...
    Ответ написан
    Комментировать
  • Как осуществить выборку по данным из другой таблицы?

    rozhnev
    @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    Можно импользовать следующий подход:
    Снфчала выберем производителей бракоделов:
    select distinct manufacturer
        from spent s
        join products p on p.id = s.product_id;


    Потом присоединим таблиуц бракоделов к таблице продуктов используя LEFT JOIN:
    select 
        products.*, 
        case when bad_manufacturers.manufacturer is null then 'Хороший производитель' else 'Бракодел' end manufacturer_rate
    from products
    left join (
        select distinct manufacturer
        from spent s
        join products p on p.id = s.product_id
    ) bad_manufacturers using (manufacturer)


    https://sqlize.online/sql/mysql80/f55574001241f544...
    Ответ написан
    Комментировать
  • Как осуществить выборку по данным из другой таблицы?

    @alexalexes
    Если хоть один из продуктов производителя будет занесен в некачественные, то этот запрос для любого продукта этого производителя будет выводить spent = 1.
    SELECT distinct p1.`id`,
     p1.`name`, 
     p1.`serial`, 
     case
      when (select count(*)
      from `products` as p2
       join `spent`  as s2 on p2.`id` = s2.`product`
                                         and s2.`issued` = 1 -- какое значение в качестве некачественного продукта ?
     where p2.`serial` = p1.`serial`) > 0
      then 1
      else 0
       end as `spent` 
    from `products` as p1
    Ответ написан
    4 комментария
  • Как сравнить unsigned long long и char* в C++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Потому что вы передаете во второй to_string первый символ (его код). Если вы передадите в качестве числа 61, а в качестве строки "A..." то будет true.

    Если вам надо сравнить число и строку, как набор цифр, то вы или только число переводите в to_string или только строку переводите в to_number.
    Ответ написан
    Комментировать
  • Как определить пифагорову тройку с помощью JavaScript?

    Alexandroppolus
    @Alexandroppolus
    кодир
    делать цикл по j от 1 до n, и внутри него по k от 1 до j - 1. Если j и k взаимно простые, то вычислять i^2 = j^2 - k^2 и проверять, что это квадрат целого.
    Ответ написан
    Комментировать
  • Как использовать v-for и v-slot одновременно?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    <template v-for="(value, key, index) in copied" #[`item.${key}`]="{item, index}">
        <span @click="copied[key] = index; setTimeout(() => copied[key] = null, 2000); copy(item[key]);">
        ....
    </template>
    Ответ написан
    Комментировать
  • Как оптимизировать запрос один ко многим в MySQL?

    Revencu
    @Revencu
    SELECT a.*, c.*
    FROM `products` as a
    LEFT JOIN (SELECT MAX(id) as id, product from `prices` GROUP BY product) as b on b.product=a.id
    LEFT JOIN `prices` as c on c.id=b.id
    LIMIT 10
    Ответ написан
    Комментировать
  • Как оптимизировать запрос один ко многим в MySQL?

    @alexalexes
    В вашем случае для подзапроса цен нужно использовать оконную функцию ранжирования списка, чтобы получить последнюю актуальную цену:
    SELECT * FROM `products`
    LEFT JOIN (SELECT `product`, `price`,
                      row_number() over (partition by `product` order by `id` desc) as price_rank
                          from `prices`) as prc on `products`.`id` = prc.`product`
                                                  and prc.price_rank = 1
     limit 10

    Но у вас, наверняка, версия mySQL не 8.x, а 5.x. В ней есть пользовательские переменные, которые позволяют создать патерн запроса, эмулирующий оконные функции.
    SELECT * FROM `products`
    LEFT JOIN (SELECT `product`, `price`,
                      IF(@prev_id <> `product`, @p_rank := 0, @p_rank),
                      @prev_id := `product`,
                      @p_rank := @p_rank + 1 as price_rank -- определяем partition
                from `prices`,
                      (SELECT @p_rank := 0) p_rank, -- начальное значение ранга
                      (SELECT @prev_id := -1) prev_id -- начальное значение товара (не должен быть в диапазоне сущ. id)
                    order by `product` asc,
                             `id` desc -- устанавливаем сортировку partition
                           ) as prc on `products`.`id` = prc.`product`
                                                  and prc.price_rank = 1
     limit 10

    PS: За точность воспроизведения аналога не ручаюсь, возможно, придется шаманить с order by в подзапросе.
    Ответ написан
    Комментировать
  • Почему v-for возвщает underfined?

    AlbertName
    @AlbertName
    Senior Javascript Developer
    А для какой цели on нужен? Разве в инструкции по v-for из метода данные тягают )
    v-for принимает: Array | Object | number | string | Iterable (с версии 2.6)

    Как минимум нужно перенести в data, цикле убрать скобки, не забыть про key. И вообще нужна ли реактивность в данном случае.

    data () {
        return {
          on: {password: '123', date: 123456},
        }
    },
    Ответ написан
    Комментировать
  • Как вернуть массив объектов из функции?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    исправить int* go на Group* go
    Ответ написан
    1 комментарий
  • Как проверить, есть ли массиве m единиц в ряд по вертикали, горизонтали или диагонали?

    WblCHA
    @WblCHA
    Несмотря на то, что этот код больно читать, я вижу как минимум 2 критические ошибки:
    1. Ты не обнуляешь счётчики при переходе на следующую строку/колонку/диагональ.
    2. Ты проверяешь значения счётчиков только после прохода по всем строкам/колонкам/диагоналям.
    n = 2
    [0,1,1] => true
    [1,1,0] => false

    Я тут ради интереса накидал быстренько своё решение, для примера сойдёт:
    spoiler
    const arr = [
        [0,0,0,0],
        [1,0,0,0],
        [0,1,0,0],
        [0,0,0,0],
      ];
      const n = 2;
      
      const inRow = (arr, oneMax) => {
        const { length } = arr;
        
        if(oneMax > length) {
          return false;
        }
        
        const oneCounter = {
          '--': 0,
          '||': 0,
          '\\': {
            top: 0,
            bot: 0,
          },
          '//': {
            top: 0,
            bot: 0,
          },
        };
        
        const check = (value, counter, key) => {
          if(value === 1) {
            counter[key]++;
            if(counter[key] === oneMax) {
              return true;
            }
          } else {
            counter[key] = 0;
          }
          return false;
        }
        
        for(let i = 0; i < length; i++) {
          for(let j = 0; j < length; j++) {
            if(
            	check(arr[i][j], oneCounter, '--') ||
            	check(arr[j][i], oneCounter, '||')
            ) {
              return true;
            }
          }
          oneCounter['--'] = 0;
          oneCounter['||'] = 0;
        }
        
        const maxDiags = length - n + 1;
        const last = length - 1;
        for(let i = 0, maxJ = length; i < maxDiags; i++, maxJ--) {
          for(let j = 0; j < maxJ; j++) {
            if(
            	check(arr[j][i + j], oneCounter['\\'], 'top') ||
            	check(arr[i + j][j], oneCounter['\\'], 'bot') ||
            	check(arr[j][last - (i + j)], oneCounter['//'], 'top') ||
            	check(arr[i + j][last - j], oneCounter['//'], 'bot')
            ) {
              return true;
            }
          }
          oneCounter['\\'].top = 0;
          oneCounter['\\'].bot = 0;
          oneCounter['//'].top = 0;
          oneCounter['//'].bot = 0;
        }
        
        return false;
      }
      
      inRow(arr, n)
    Ответ написан
    1 комментарий
  • Метатаблицы и метод __newindex - как объеденить двумерные массивы?

    Nightmare1
    @Nightmare1
    Программист
    В чём смысл кода ? Есть возможность конкретнее описать что требуется сделать ? Что значит объединение двух одномерных массивов ? При __newindex ... у тебя считается кол-во новых полей при создании в таблицах 'control' и 'data' .

    local clients = {
      ['count'] = {0, 0},
      ['control'] = {},
      ['data'] = {},
    }
    
    local function set_counter_for_new_indexes_to(t, id)
    	setmetatable(t, {
    		__newindex = function(self, key, value)
    			clients['count'][id] = clients['count'][id] + clients['count'][id]
    			rawset(t, key, value)
    		end
    	})
    end
    set_counter_for_new_indexes_to(clients['control'], 2)
    set_counter_for_new_indexes_to(clients['count'], 1)
    
    --[[
    	variant #2
    ]]
    
    local clients =
    {
      	['control'] = {},
      	['data'] = {},
    }
    
    --
    -- автоматически добавляет параметр .count к таблице в которой создается новой поле
    --
    local function set_counter_for_new_indexes_to(t)
    	setmetatable(t, {
    		__newindex = function(self, key, value)
    			if not rawget(self, 'count') then rawset(self, 'count', 1)
    			else
    				rawset(self, 'count', rawget(self, 'count'))
    			end
    			rawset(t, key, value)
    		end
    	})
    end
    
    -- применяет счётчик полей к кождой подтаблице в таблице clients
    for k, v in pairs(clients) do
    	if type(v) == "table" then continue end
    	set_counter_for_new_indexes_to(v)
    end
    
    
    --[[ VARIANT_#3 ]] local clients =
    {
      	['control'] = {},
      	['data'] = {},
    }
    
    
    local function initialize_fields_counter(t)
    	if not t.table_fields_counters then
    	t.table_fields_counters = {} end
    	local ni_method = {__newindex = function(self, key, value)
    		local kname = t.table_fields_counters[self]
    		t.table_fields_counters[kname] = 
    			(t.table_fields_counters[kname] or 0) + 1
    
    		rawset(t, key, value)
    	end}
    
    	for k, v in pairs (t) do
    		if type(v) == "table" then continue end
    		t.table_fields_counters[v] = k
    		setmetatable( v, ni_method )
    	end
    end initialize_fields_counter(clients )
    
    -- получить счётчик элементов .
    
    clients.t.table_fields_counters[<название-ключа-таблицы>]


    Не тестировал.
    Ответ написан
    Комментировать
  • Наследование классов в PHP - не выводится переменная?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    При создании экземпляра DatBase у вас не вызывается родительский конструктор и, соответственно, свойство chat_id остаётся неинициализированным.
    Ответ написан
    Комментировать
  • Как установить nil переменной в тернарном выражении Lua?

    dollar
    @dollar Куратор тега Lua
    Делай добро и бросай его в воду.
    Это не совсем тернарный оператор, а именно комбинация and и or.
    Выражение:
    A and B or C
    аналогично тернарному оператору (которого в Lua нет), только если B истинно.
    (доказательство)

    Для начала вспомним некоторые правила синтаксиса Lua:
    • and возвращает первый операнд, если он ложный, иначе второй.
    • or возвращает первый операнд, если он истинный, иначе второй.
    • and имеет выше приоритет (т.е. выполняется первым).
    • Ложными в Lua являются только false и nil

    Теперь построим таблицу истинности результатов:
    616d9c7ad77a1439930797.png

    Поэтому решение такое:
    local res = ((i ~= k) and 2 or nil)
    Ответ написан
    Комментировать
  • Как снять ограничения в последней версии nginx?

    sanya_misharin
    @sanya_misharin
    Попробуйте посмотреть сколько у вас стоит в конфигурации число процессов php-fpm, стандартно их 5
    pm.max_children = 5

    С этим параметром нужно менять так же ряд других, подробнее можно почитать тут или тут
    Ответ написан
    Комментировать
  • Как снять ограничения в последней версии nginx?

    karabanov
    @karabanov Куратор тега Ubuntu
    Системный администратор
    В последней версии Nginx, как и во всех предыдущих версиях, никаких подобных ограничений нет.
    Если приложение работает не так, как ожидается оно неверно сконфигурировано, но не видя конфига и не зная какая цель преследуется сказать что-то конкретное невозможно.
    Ответ написан
    Комментировать
  • Как правильно составить запрос mySQL с выборкой данных из другой таблицы?

    @Miron11
    Пишу sql 20 лет. Срок :)
    select logs.id
    , logs.serial
    , logs.action
    , logs.ip
    , logs.date
    from owners owners
    inner join clients clients on clients.token = owners.token
    inner join logs logs on logs.serial = clients.serial
    where owners.token = 'abcd...'
    Ответ написан
    4 комментария