Задать вопрос
  • Как правильно хранить секунды в базе даных?

    @alexalexes
    1. Храните в БД целочисленно;
    2. Передавайте на фронт целочисленно;
    3. На фронте преобразуйте целочисленную длительность в нужный формат любым доступным способом.
    Ответ написан
    Комментировать
  • Почему зависает при postgresql запросе?

    @alexalexes
    1. Выборка не ограничена лимитом строк - ни в самом запросе, ни, скорее всего, в том средстве, в котором делаете запрос.
    2. Когда пишете список таблиц во from вы никак не сопоставляете их ключи (в where
    или в join в лексеме on будет что-то типа tickets.id = seats.ticket_id ).
    Каждая новая таблица умножает итоговую выборку на количество строк этой таблицы (полное декартово произведение получается).
    Если tickects у вас было 100 записей, а seats 1000 записей, то просто перечисляя таблицы без условий соединения, вы получите 100 тыс. записей в итоговой выборке.
    Ответ написан
    3 комментария
  • Как выбрать все последние запись где recipient = 1?

    @alexalexes
    Чтобы выдернуть по одному сообщению от каждого пользователя, нужно проранжировать сообщения особым счетчиком с подзапросом, имитирующим оконную функцию row_number.
    select a.*
      from (select m.*, u.*, count(select *
                                                  from messages as m2
                                                    join users as u2 on u2.id = m2.author
                                                where m2.recipient = 1
                                                    and u2.id = u.id -- имитация клаузы partition by
                                                    and m2.id > m.id -- имитация клаузы order by  ... desc
                                   ) as row_num, -- аналог row_number через оконную функцию:
                                 -- row_number() over(partition by u.id order by m.id desc) as row_num 
      from messages as m
       join users as u on u.id = m.author
    where m.recipient = 1
    ) as a
    where a.row_num = 1 -- берем 1 строку по ранжированному счетчику в пределах каждого id пользователя
    Ответ написан
    Комментировать
  • Ошибка запуска ТХТ, что может быть?

    @alexalexes
    Не названная программа пытается получить доступ к файлу из каталога C:\Users\vanek\OneDrive, предназначенного для монтирования к облаку.
    Вероятно, нужно проверить, что приложение OneDrive запущено и вы в нем авторизованы.
    Ответ написан
    Комментировать
  • В .NET 7 не запускается https. Что нужно сделать?

    @alexalexes
    Либо ставите самоподписанный сертификат к себе на операционную систему для домена localhost, либо отключаете проверку SSL сертификата в соединениях внутри проекта для тестовых сборок (если заранее не следовали второму варианту и не вынесли в конфиг софта это как отдельный параметр, то реализовать с нуля будет накладно).
    Ответ написан
  • Как сделать поиск в ячейке по знаку " с помощью VBA?

    @alexalexes
    Обработайте строку регулярным выражением методами RegExp в VBA:
    \w+\s"(?<=").*(?=")"
    https://regex101.com/r/14oM7H/1

    PS: Насчет работы регулярок в VBA - не имею представления, гуглите самостоятельно.
    Ответ написан
  • Как при запросе к ссылке на FOREIGN KEY получить имя пользователя а не id?

    @alexalexes
    https://www.w3schools.com/sql/sql_join.asp
    В вашем случае Orders это artist,
    Customers это track,
    Customers.CustomerName - это ваш искомый artistname.
    В джоине участвуют атрибуты:
    ON Orders.CustomerID=Customers.CustomerID
    а у вас будут:
    ON artist.artistid=track.trackartist
    Ответ написан
    Комментировать
  • Лучше использовать целое число или строку для индикатора состояния данных?

    @alexalexes
    Если не хотите фильдеперсовый enum, то делайте как должно быть по классике построения реляционных баз данных.
    Делаете таблицу справочник TransactionStatus, перечисляете там все состояния, с использованием id состояния. И этим id ссылаетесь на этот справочник в таблицах, где используется состояние, как внешний ключ.
    Ответ написан
  • Есть ли способ улучшить соединение ADSL?

    @alexalexes
    На ADSL не так много вариантов что можно сделать самому с оборудованием, чтобы понять, где проблема:
    1. Заменить роутер на другой. Чтобы не сильно тратиться, можно взять в компьютерном комиссионном магазине, либо на avito. Благо ADSL роутеры сейчас могут отдать почти даром: 200...1000 руб. Если роутер был у человека, который перешел с ADSL на оптику, то вероятно, что роутер жив чем мертв.
    На роутере могут со временем приходить в негодность входной трансформатор для гальванической развязки, что может понижать параметр сигнал/шум. Если заменить роутер, то может попасться более исправный экземпляр.
    2. Заменить сплиттер - коробочка-разветвитель телефон-роутер. Либо избавиться от нее, если телефона нет на линии.
    3. Заменить телефонный кабель от жилья, до места, где подключается к щитку провайдера, избавиться от скруток (в городских условиях это будет щиток в подъезде или на чердаке, в сельских - коробочка на телефонном столбе).
    По идее, это должен делать работник от провайдера. Но если у вас сложно проложен кабель в доме и на прилегающей территории, то часть работ придется делать своими силами.
    Ответ написан
    Комментировать
  • На чем дешево и долго хранить десятки Тб информации сейчас?

    @alexalexes
    Я думаю, 10 дисков с технологией записи CMR и без гелиевого наполнения по 8 Тбайт, запертые в сейфе в негорючем помещении с постоянным микроклиматом, будут куда дешевле и проще в эксплуатации, и пролежат 15 лет. Чем возиться с ленточным накопителем и лентами.
    Ответ написан
    Комментировать
  • Почему при использовании substr в php, если в тексте есть символ точки, то он считает не корректно?

    @alexalexes
    "ДокРу00001.Р1"

    Вероятно, у вас эта строка не в однобайтовой кодировке (скорее всего в utf8 работаете).
    Для таких строк нужно использовать набор функций для строк в многобайтовых кодировках, в данном случае вам нужна функция mb_substr вместо substr, иначе результат работы функций для однобайтовых кодировок в строках с многобайтовыми - не предсказуем.

    PS: не забудьте включить расширение mb_string в конфиге php сервера.
    Ответ написан
  • Очень-очень много фотографий в одной папке - это вредно для диска?

    @alexalexes
    1. Я бы такой каталог убрал из личного каталога пользователя системы, так как многие элементы интерфейса системы любят интерактивно проецировать состояние таких каталогов в корне проводника, Меню пуск и Рабочего стола (это каталоги Музыка, Загрузки, Изображения и т.д.). Это проецирование может быть ресурсоемким.
    2. Настроить просмотр файлов проводника Windows для этого каталога только в виде списка, без отображения миниатюр. Поэкспериментировать с настройкой кеширования миниатюр изображения. Это поможет снизить нагрузку при навигации.
    3. Использовать для навигации не проводник Windows, а программу-галерею. Например, ACDSee, XnView.
    4. Для копирования и переноса файлов - файловые менеджеры, которые не лезут в содержимое файла без необходимости (если не установлены плагины) - Total Commander, Far Manager.
    Ответ написан
    Комментировать
  • Как сделать реализацию чата как в мессенджерах?

    @alexalexes
    что должно происходить при отправке первого сообщения пользователем А пользователю B?

    До отправки сообщения на клиенте держится в памяти заготовка комнаты.
    После отправки сообщения сервер оповещает все экземпляры клиента пользователей A и B, что создал комнату между A и В (A и B могут открыть несколько экземпляров программ под своими логинами).
    Если экземпляры клиентов открывали заготовку комнаты у себя, которая по врЕменным параметрам участников соответствует реальной комнате A и В, то эти экземпляры клиентов синхронизируют свое состояние с тем, что прислал сервер, то есть делают отображение комнат реальным.
    Ответ написан
    Комментировать
  • Как узнать процент похожести текста?

    @alexalexes
    Самое простое - натравить поисковик на собственный ресурс запросом:
    "site:yousite.ru фрагмент фразы".

    PS: Сайт на момент запроса должен быть проиндексирован поисковиком.
    Ответ написан
    Комментировать
  • Можно ли написать SQL запрос с выражением в WHERE и в SELECT, но без повторения этого выражения и без вложенного SELECT?

    @alexalexes
    Но будет 2 вычисления MD5

    Выражения в select вычисляются после того, как отобраны строки по условиям в where.
    Если выходная выборка совсем небольшая, то оптимизировать работу функции в колонках не нужно - это экономия на спичках.
    Другое дело, если вы используете вычисляемую функцию в where. Чтобы она быстро работала есть 3 пути:
    1. Если функция вычисляется из данных, которые не зависят от контекста запроса, то нужно отказаться от этой функции, которая вычисляется при каждом запросе. Нужно хранить ее результат в отдельном атрибуте.
    2. Сделать индекс с использованием этой функции на атрибуте, тогда при использовании этой же функции в where сработает индекс.
    3. Если есть возможность, то нужно так преобразовать выражение where, чтобы все аргументы вычисляемой функции или выражения (складываем, вычитаем, умножаем делим, case-им) оказались входными параметрами или константами. Чтобы такое произошло, нужна обратная функция для md5 - reverse_md5. Но такой функции по математическим соображениям не существует.
    Иначе выражение бы выглядело так:
    where value = reverse_md5(:hache)
    Ответ написан
    1 комментарий
  • Как получить имя файла из zip архива, который содержит кириллицу?

    @alexalexes Автор вопроса
    Имя файла, получаемое при работе с модулем ZipArchive, из-за бага в этом модуле требует некоторого преобразования через промежуточные однобайтовые кодировки.
    Нужно провести такую цепочку преобразований:
    UTF-8 -> encode1 -> encode2 (encode3) -> UTF-8
    В php это будет так:
    $out_str = iconv('UTF-8', $encode1.'//IGNORE', $in_str);
    $out_str = iconv($encode1, $encode2.'//IGNORE', $out_str);
    $out_str = iconv($encode3, 'UTF-8//IGNORE', $out_str);

    Но проблема в том, что для каждой конфигурации сервера эти кодировки могут отличаться.
    Чтобы их найти нужно воспользоваться методом перебора.
    Для начала найдем все кодировки, которые поддерживает функция iconv.
    Для этого в консоли сервера вызовем:
    $ iconv -l
    Из набора кодировок нужно взять только те, которые содержат наименование "CPxxx", где xxx - число.
    С помощью скрипта провести полный перебор:
    $all_encoding = []; // сюда вставляем список всех кодировок iconv
    $out_encoding = array_filter($all_encodings, function($item){return strpos(strtolower($item), 'cp') !== false;});
      foreach($out_encoding as $encode1)
      {
        foreach($out_encoding as $encode2)
        {
          foreach($out_encoding as $encode3)
          {
              $str = iconv('UTF-8', $encode1.'//IGNORE', $out);
              $str = iconv($encode1, $encode2.'//IGNORE', $str);
              $str = iconv($encode3, 'UTF-8//IGNORE', $str);
              if($str !== false && $str !== '')
                echo $encode1.'::'.$encode2.'::'.$encode3.'::'.$str.'<br>';
          }
        }
      }

    Визуально ищем тот вариант, где имя файла восстановилось.
    В моем случае это:
    UTF-8 -> cp437 -> cp437 (cp866) -> UTF-8
    В коде это выглядит так:
    $out_str = iconv('UTF8', 'CP437//IGNORE', $in_str);
    $out_str = iconv('CP437', 'CP437//IGNORE', $out_str);
    $out_str = iconv('CP866', 'UTF8//IGNORE', $out_str);
    Ответ написан
    Комментировать
  • Какой отрезок содержит в себе больше целочисленных значений?

    @alexalexes
    Будьте внимательны, почему вы левую часть считаете в меньшую сторону, если там интервальная скобка ( ?
    (11;20] - с 12 по 20 - итого 9.
    (21;31) - с 22 по 30 - итого 9.
    И в итоге вариант [32;41] - он больше всех.
    Ответ написан
    6 комментариев
  • Браузер блокирует скачиваение с сайта нескольких файлов подряд. Как предупредить пользователей?

    @alexalexes
    Если следовать логике загрузки файлов из github (получить весь репозиторий) или любого файлового облака (получить весь каталог с файлами), то когда речь заходит о скачивании набора файлов, то этот набор лучше упаковать в архив и отдать клиенту отдельным файлом. Тогда вы не столкнетесь с ограничениями браузера.
    Ответ написан
    2 комментария
  • Могут ли USB хабы убить компьютер?

    @alexalexes
    USB хаб - самый неустойчивый узел.
    Как по производительности - он будет бутылочным горлышком, если к нему подключать высокоскоростные устройства. Так может подвести по питанию. Даже если по характеристикам потребляемого тока подключенных устройств хаб укладывается в лимиты, может оказаться сюрпризом то, что не хватает сечения жил основного провода для поддержания нужного уровня тока, либо идут большие потери на нагрев внутренней схемы хаба, или банально плохой контакт в соединении. Для стабилизации работы хаба в некоторых случаях требуется отдельное внешнее питание.
    Опасности нет, просто если хаб не вывозит, он просто будет работать нестабильно, а подключенные устройства будут либо на дежурном режиме работать, либо пытаться в бесконечном цикле запрашивать разрешение кушать тока по больше, но не получать его.
    Ответ написан
    Комментировать
  • Менял для программы значение кнопки "." на кнопку "Num 2" тк у меня нету нампада на клаве. Как вернуть значение клавиши?

    @alexalexes
    Вероятно, у вас ноутбук с компактной клавиатурой.
    Некоторые производители ноутбуков на таких клавах закладывают функционал numpad на клавишах правой части клавиатуры с их активацией через кнопку Fn. Такие клавиши имеют дополнительное цветовое обозначение, тем же цветом, что и функциональные клавиши.
    Проблема возникает, что Fn режим может быть включен по умолчанию, и тогда правая часть клавиатуры работает как numpad.
    Ответ написан
    Комментировать