• Как оптимально сделать таблицу умножения?

    @alexalexes
    Вот решение на Oracle.
    Достоинства:
    1. Подобрано максимально короткое описание вспомогательной выборки factor от 1 до 10 без перечисления ее элементов или обращения к другим таблицам.
    2. Поскольку нужно получить декартово произведение вспомогательной выборки, и не хочется повторять ее описание, то используем with.
    3. Не нравится писать слово join? У декартового пересечения нет условий, значит с соединением таблиц справится обычная запятая.
    Недостатки:
    1. СУБД должна мочь в рекурсивные запросы ( ... connect by ... ).
    2. СУБД должна мочь в выносимые запросы (with ...).
    3. Скорость рекурсии несколько ниже чем просто перебор описания 10 строк.

    with factor as (select level as lvl from dual connect by level < 10)
    
    select to_char(f1.lvl) || 'x' || to_char(f2.lvl) || '=' || to_char(f1.lvl * f2.lvl) as multi
    from factor f1,
        factor f2
    Ответ написан
    Комментировать
  • Можно ли работать двумя программами с одной базой данных?

    @alexalexes

    Обе программы получают из базы данные и работают с ними. Так вот я хочу исключить вероятность получения одних и тех же данных обеими програмамми. Сейчас у меня в коде используется using и в нем идет открытие соединения. Далее, получаем данные, в определенном столбце таблицы я помечаю, что данные взяты, что свидетельствует второй программе о том, чтобы она эти данные уже не брала.

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

    @alexalexes
    Первым действием перетранслируйте этот массив во вспомогательную структуру:
    {
        100: // groupId
        {
           1:  [1, 3], // source: [id, id, .....]
           2: [2]
        },
       ......
    }

    Тогда вам будет проще снимать метрики для сортировки: считать какие source есть у группы (сколько, каких нет), и какие id входят в source.
    Ответ написан
  • Как поставить перенос строки в функции mail?

    @alexalexes
    https://www.php.net/manual/ru/function.mail.php
    Читайте документацию:
    Каждая строка должна быть отделена символом CRLF (\r\n). Строки не должны быть длиннее 70 символов.
    Ответ написан
    Комментировать
  • Как в Oracle или Teradata разбить все строки таблицы на N равновеликие СЛУЧАЙНЫЕ выборки?

    @alexalexes
    Практически методом Монте-Карло помечаем числами из случайного интервала записи таблицы и берем интересуемую порцию по этой случайной метрике. Поскольку, рандом у нас по равномерному закону распределения работает, то и порцию данных вы получите примерно ожидаемой длины.
    select *
    from (
    select t.*, dbms_random.value(0, 100) rnd
      from table t
    ) A
    where A.rnd <= 30 -- выбираем примерно 30% случайных записей от ген. выборки
    Ответ написан
  • Как получить доступ к атрибуту элемента для условного задания класса?

    @alexalexes
    Если у вас этот список строится через v-for, то ничего не стоит на нужном элементе подсунуть нужный класс.
    Ответ написан
  • Как найти обьект без ключа JSON decode PHP?

    @alexalexes
    Пересоберите массив пользователей:
    $out_users = [];
    foreach($array_decode['response'] as $user)
      $out_users[$user['id']]['user'] = $user['user'];

    Тогда сможете обращаться как хотели:
    $out_users[идентф_ключа]['user'];
    PS: Вариант пересборки, если вас куча пользователей и вы ограничены по оперативной памяти скрипта:
    $out_users = [];
    foreach($array_decode['response'] as &$user) // обратите внимание на доступ по ссылке & к элементу массива
    {
      $out_users[$user['id']]['user'] = $user['user'];
      unset($user); //удаляем элемент из массива $array_decode['response'], чтобы не росло использование памяти.
    }
    Ответ написан
    1 комментарий
  • Ошибка Uncaught TypeError: Cannot read property '2' of null?

    @alexalexes
    У вас несоответствие бизнес-логики формирования цены товара на стороне сервера (то что получаете в response.prices), и как вы ее пытаетесь обработать функцией getSapogCost() на стороне клиента. Либо у вас не обрабатываются какие-то исключительные случаи, например, когда товар отсутствует в продаже, а сервер в качестве response.prices не возвращает тот объект, который может обработать данная функция.
    Ответ написан
    Комментировать
  • Как научиться выделять смысл?

    @alexalexes
    Попробуйте в двух словах сказать (лучше оперировать голосом, а не мыслю), что говорится в первой абзаце текста, и отдельно - во втором.
    Потом, чем они отличаются по содержанию. Сравнивайте 2 и 3 абзац. В таком духе двигайтесь дальше по тексту.
    По окончании текста подведите итог, о чем он и как развивалась мысль от начала и до конца.
    Так вы научитесь сжимать текст и выделять смысл, и никакие карточки вам не понадобятся.
    Ответ написан
    Комментировать
  • Как LEFT JOIN-ом присобачить только одну сроку, причем не любую, а наибольшую по данному полю?

    @alexalexes
    Если вам нужен исключительно номер телефона из присоединяемой таблицы и ничего больше, то подойдет подзапрос как свойство с использованием max.
    select C.Name,
    (select max(T.Phone) from Telephone T where T.Name = C.Name) Max_Phone
    from Clients C

    PS: Если это практическая задача, а не теоретическая-разминочная, то должно смутить использование имени клиента как первичного ключа в таблице клиентов и как внешнего ключа в таблице телефонов. На практике, обычно, для связки таблиц используются идентификаторы.
    Ответ написан
    2 комментария
  • Чем перевести txt файлы?

    @alexalexes
    Ищите подходящее API у сервисов перевода, за подходящие условия использования (платные, условно бесплатные).
    Составляете запросы по каждому файлу и скармливаете в API сервиса.
    Если платить не охота, то в среде разработки, которую вы знаете, подымаете браузер Chromium и кукловодите открытым веб интерфейсом переводчика, скармливая небольшие фрагменты текста, по 5-10 тыс. знаков.
    Ответ написан
    Комментировать
  • Как увеличить обьем одного ЖЕСТКОГО ДИСКА за счет другого?

    @alexalexes
    Не сразу понял сколько у вас физических устройств.
    Вам нужен режим работы 2 дисков в RAID0.
    Но его поднять физически, просто подкинув второй хард не прокатит, так как при создании RAID0 предыдущее состояние данных на дисках будет форматировано под этот режим, и вам нужен будет еще один накопитель, чтобы временно переселить важные данные, чтобы они не попали под форматирование.
    Если собирать не профессиональный массив, то этот режим должна поддерживать материнская плата. Такая плата в БИОСе имеет настройки Sata по мимо IDE/AHCI еще режимы RAID0 или 1. Вот один из них вам и нужен.
    RAID0 будет более производителен, но в то же время чувствителен к сбоям питания и выходу из строя одного из дисков. Если такое случится, то есть больше шансов потерять весь массив, чем если бы он был одним диском.
    Ответ написан
    Комментировать
  • Как трансформировать таблицу в PostgreSQL?

    @alexalexes
    Это не трансформация, а подготовка подходящей выборки.
    Структуру таблицы вы же не меняете, только форму получения данных?
    select t1.week_no,
    (select max(t2.ratio) from table t2 where t2.week_no = t1.week_no and t2.ticker = t1.ticker and t1.ticker = 'ADM') adm,
    (select max(t2.ratio) from table t2 where t2.week_no = t1.week_no and t2.ticker = t1.ticker and t1.ticker = 'PBRT') pbrt,
    (select max(t2.ratio) from table t2 where t2.week_no = t1.week_no and t2.ticker = t1.ticker and t1.ticker = 'ALL') aal,
    (select max(t2.ratio) from table t2 where t2.week_no = t1.week_no and t2.ticker = t1.ticker and t1.ticker = 'TSCO') tsco
    from table t1

    PS: max взят, чтобы выводить единственное значение свойства и не возникала ошибка, если будут дубликаты записей по одной неделе, можно использовать Limit в подзапросах или другой критерий, например, row_number.
    PPS: Можно сделать представление (view) на основе этой выборки, если нужно использовать результат как таблицу.
    Ответ написан
  • Как узнать какой именно SSD подойдет к ноутбуку ACER ASPIRE E5 575G 35M?

    @alexalexes
    Можно открыть люк HDD/RAM и лично посмотреть, что туда можно воткнуть в вашей модификации ноута.
    А дальше выбор чисто за вами - M2 или SATA диск.
    Ответ написан
    5 комментариев
  • Как правильно сделать группировку sql?

    @alexalexes
    Пронумеруйте Rank-ом или dense_rank c таким же partition с сортировкой rownum и отрежьте лишнее оберткой:
    select * from (...) where rnk = 1
    PS: Лучше обходиться без оконных функций, если есть решение более классическое. Окошки заставляют обходить выборку заново и ухудшают план выполнения запроса.
    Ответ написан
    1 комментарий
  • Нельзя преобразовать тип array 1.10 of integer к array of integer?

    @alexalexes
    search_last_index(const massive:array of integer):integer;

    array of integer не тоже самое, что array[1..const_mas] of integer.
    В аргументах функций вы тоже должны указать размерность.
    Ответ написан
  • Стоит ли сегодня новичку изучать C/C++?

    @alexalexes
    Все новички спрашивают постоянно, а не выучить мне язык прог. X или Y.
    Это неправильный подход, потому что он сродни с подходом "выпил лекарство и мне полегчает".
    Чтобы стать специалистом, нету такого, что выучу нечто одно и я матерый волк в этом деле.
    Вы должны присматриваться к областям разработки, которые вам интересны, смотреть, какие в них проблемы и задачи всплывают.
    После этого вы обращаете внимание на инструменты, которыми решаются эти задачи.
    Вот в них вы уже замечаете, что есть не один язык разработки X, но и Y, и даже Z.
    Более того, обнаруживается, что требуется некоторые творческие навыки, например, проведение исследования функционала существующих ПО, выявления требований к своему программному продукту, составлению технического задания, чтения и проверка соответствия техническому заданию, методик тестирования. И кодинг может стоять на 5 и 10 месте.
    Чтобы научиться базовым навыкам программирования подойдет любой язык прогр. из академической среды Pascal или C++, более продвинутые сразу изучают C#, Java, Python.
    Дальше вы обязаны выбирать уже не язык, а свою проблемную область, где собираетесь стать матерым волком, и изучаете ее инструментарий, а в первую очередь процесс разработки (кодинг НЕ хватаем в первую очередь).
    Ответ написан
    1 комментарий
  • Можно ли сделать программу похожую на zoom?

    @alexalexes
    Интересно знать, это вообще актуально?

    1. Вам нужен отдельный специалист по исследованию рынка, чтобы не задавать этот вопрос.
    сколько приблизительно встанет мне это?

    2. Вам нужен специалист по финансовой оценки программного продукта в реализованном состоянии или в виде технического задания.
    какие сроки?

    3. Вам нужен специалист по формированию технического задания.
    где найти хороших программистов

    На биржах, рекрутинг и т.д... Не только прогеры вам нужны, но такие люди, как юристы, аналитики и т.д.
    Ответ написан
    2 комментария
  • Почему не запускается ноутбук с HDD на месте оптического привода?

    @alexalexes
    Если дело в токах потребления HDD и DVD-ROM, то поменяйте SSD и HDD местами. У SSD по питанию нет прожорливости при старте.
    Ответ написан
    Комментировать
  • Как вычислить глубину кодирования звука?

    @alexalexes
    1. Объем файла переводите в байты.
    V1 = F * 1024
    2. Делите на время звучания.
    V2 = V1 / t
    3. Делите на число каналов k.
    V3 = V2 / k
    4. Делите на частоту w.
    V4 = V3 / w
    5. Делите на 1000, так как частота в килогерцах.
    V5 = V4 / 1000.
    6. Берете целую часть.
    V6 = целое(V5)
    Ответ написан
    Комментировать