Задать вопрос
  • Выбор монитора для программиста, как правильно?

    neatsoft
    @neatsoft
    Life is too short for bad software
    Народ, вы чего, блин? 1920 x 1080 для программиста в 2017 году? Уже давно доступны 4K (3840 x 2160) мониторы по вполне разумным ценам. Это совершенно другой уровень комфорта и продуктивности - можно одновременно четыре FullHD окна разместить, можно 1920x2160 (для кода) и два 1920x1080 (для браузера и консоли). Картинка гораздо более детализированная и чёткая. Обычные мониторы после UHD выглядят путешествием в прошлое.

    Использую три штуки LG 27UD88 (с общим разрешением 11520 x 2160), вполне доволен. Разумная диагональ, мерцание отсутствует при всех уровнях яркости, поддерживает DDC/CI (позволяет менять настройки на всех трёх мониторах с компьютера одновременно).
    Минусы: моргает светодиод в спящем режиме, появляются текстовые надписи в процессе загрузки (при переключении режимов).

    В качестве альтернативы рассматривал DELL P2715Q, но у него HDMI 1.4 (только 30 Гц в полном разрешении), нет USB Type-C (с поддержкой DisplayPort Alternate Mode), нарекания на дешевые материалы корпуса, и жалобы на зависания при выходе из спящего режима.

    LG 27UD58 и LG 27UD69P - бюджетные аналоги 27UD88 с урезанным набором портов. В 27UD58 нерегулируемая по высоте подставка.
    Ответ написан
    7 комментариев
  • Почему сокет клиент зависает при разрыве соединения?

    @Vitsliputsli
    Как отлавливать разрывы сети на стороне клиента в PHP и просто пропускать выполнения функции socket_read?

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

    AleksandrB
    @AleksandrB
    Совсем недавно вывел "Hello world"
    Делать такие вещи нужно не через окно браузера, а через очереди. У браузера есть максимальное ожидаемое время ответа после чего соединение прервется. Да и заставлять ждать клиента пока ваш сервер загрузит глупо.
    Делается это так:
    Браузер отправляет запрос "Скачай файл по этой ссылке"
    Скрипт кладет эту задачу в очередь и отвечает браузеру "ок"
    Другой скрипт получает эту задачу и начинает скачивание, удаляет задание из очереди и пишет куда-то (в бд, например), что все ок, скачано
    Браузер (можно после обновления страницы) отображает "Файл скачан"
    Ответ написан
    6 комментариев
  • Как в php немедленно выводить данные?

    @Vitsliputsli
    То что вы хотите не нужно делать через http, либо используйте web-socket, либо полностью перетащите этот функционал на фронт. Http предназначен для получения данных, а не отправки команд-сигналов с сервера. Манипуляции с ajax или переполнением буфера - также будут извращением.
    Ответ написан
    1 комментарий
  • Как быстро сортировать в большой таблице по часто изменяемому полю?

    sarapinit
    @sarapinit
    Точу водой камень
    Вспомогательная таблица с полями "баланс", "user_id". Уникальный индекс по user_id, кластерный индекс(это важно!) по полю "баланс"
    Триггер на изменение баланса в основной таблице исправляет значение во вспомогательной.

    In cases where you are accessing single rows randomly within a table, the actual order of the data in the table is unimportant. However, if you tend to access some data more than others, and there is an index that groups them together, you will benefit from using CLUSTER. If you are requesting a range of indexed values from a table, or a single indexed value that has multiple rows that match, CLUSTER will help because once the index identifies the table page for the first row that matches, all other rows that match are probably already on the same table page, and so you save disk accesses and speed up the query.


    https://www.postgresql.org/docs/9.1/sql-cluster.html

    UPD

    Я придумал другое решение.
    1) разберитесь с размером основной таблицы, скорее всего её раздуло
    https://www.youtube.com/watch?v=-GNHIHEHDmQ
    2) сделайте индекс по полю Balance с опцией Include Columns и добавьте в него user_id. Тогда при запросе

    select balance, user_id from your_table_name order by balance

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

    Melkij
    @Melkij
    PostgreSQL DBA
    explain (analyze,buffers) с включенным track_io_timing покажите.

    Варианты:
    - вы проводите весь час времени не на сортировке, а где-то ещё о чём решили не писать. Соответственно вопрос неактуален и искать надо там где обронили, а не где светло.
    - у вас несоответствующие настройки автовакуума (читай дефолтные)
    - время занимает filesort, а от ssd у вас по ошибке стоят read-optimised.
    Ответ написан
    7 комментариев
  • Как быстро сортировать в большой таблице по часто изменяемому полю?

    @dimuska139
    Backend developer
    А есть вариант хранить в redis значения ID пользователей и их баланса? Например, используя Sorted sets. При каждом изменении баланса каждого пользователя обновлять значения. То есть вытащить топ из редиса, по идее, проблемы не составит. И дёргать можно сколь угодно часто, а данные всегда актуальны.
    Ответ написан
    5 комментариев
  • Как реализовать счетчик "сейчас этот товар просматривают еще N человек"?

    sarapinit
    @sarapinit
    Точу водой камень
    На странице делать периодическую отправку состояния "объект просматривают". Складываете состояние в Redis HashSet со структурой:
    название хэша = id объекта
    ключ = id пользователя
    значение = timestamp
    Выбираете таймаут, например 5 секунд и считаете все записи старше 5 секунд невалидными.
    Для построения счетчика берете количество валидных элементов в хэше для конкретного объекта.
    Чтобы хэш не разрастался нужно удалять простроченные элементы т.к. Redis не умеет инвалидировать элементы хэшсета. Это можно делать периодически либо написать скрипт на lua который будет делать вставку нового элемента и одновременно удалять просроченные.
    Ответ написан
    Комментировать
  • Как реализовать счетчик "сейчас этот товар просматривают еще N человек"?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Это маркетинговая уловка. Можешь делать рандомный счетчик. Лишь бы пользователь понял, что у него есть конкуренты и быстрее купил нужный товар.
    Ответ написан
    7 комментариев
  • PHP проблема при заливке файлов размеров более 2GB?

    @rPman
    2гб - выглядит так будто попали в лимит 32-битной адресации (т.е. размер файла в signed int), в php целые числа при превышении 2^31 преобразуются в double, со всеми вытекающими от сюда глюками.

    попробуйте 64-битную реализацию на тестовом железе, если я прав.
    Ответ написан
    2 комментария
  • Как выполнить SQL запрос страницы если было смещение?

    Melkij
    @Melkij
    PostgreSQL DBA
    И это как раз вторая причина почему для пагинации не надо использовать offset. (первая причина - производительность offset)
    Передавайте значения сортировки последнего видимого элемента списка и запрашивайте продолжен списка, а не offset.
    https://use-the-index-luke.com/sql/partial-results...
    Ответ написан
    Комментировать
  • Как обратиться к функции через $this в цикле?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Чтобы это работало надо при вытаскивании из базы как-нибудь превратить массив данных в объект Product.
    И собирать массив объектов.

    А у вас пока какая-то каша малаша получается.

    Вот это бессмысленно и беспощадно
    $all_products = SELECT * FROM ...
    
        foreach($all_products as $products) {
            $this->comission = 5;
            $this->base_price = 500;
        }
    
        return $this;
    Ответ написан
    4 комментария
  • В чем основные отличия mySQL от Postgre?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Алгоритмом работы (lock-based/ versioning), транзакциями, хранимыми процедурами, возможностями sql. Это по крупному, в мелочах - еще больше. Собственно, эти базы данных настолько разные, что сравнивать их напрямую нельзя. Каждая хороша для своего класса задач, хотя для магазина/cms обе будут примерно одинаковы.
    Ответ написан
    21 комментарий
  • Как ускорить сервер на базе NGINX - Php-Fpm?

    @BorisKorobkov Куратор тега PHP
    Web developer
    Выкинуть PHP, аудио-файл отдавать средствами Nginx.
    Ответ написан
    3 комментария
  • Как сделать такой скрипт?

    saintbyte
    @saintbyte
    Django developer
    А просто на выводе на сайте нельзя показывать статьи у которых время размещение меньше настоящего времени?
    Ответ написан
    Комментировать
  • Какие выгоды в использовании сайтов и других веб-инструментов для бизнеса вы знаете?

    @FridayEvening
    По нынешним временам если у бизнеса нет сайта, то это просто вызывает подозрения :o)
    Ответ написан
    Комментировать
  • Оплата через банковские карты разным организациям — с какими API работать?

    arassahatsky
    @arassahatsky
    CEO, Founder милкмедиа.рф, qurier.ru
    Помню думали над такой же идеей))) -
    Во первых деятельность попадает под лицензию (Федеральный закон от 27.06.2011 N 161-ФЗ "О национальной платежной системе") в любом случае
    Во вторых, насколько помню, придется подключать каждый банк по отдельности - у каждого свой API должен быть.

    И еще: Лицензия на эквайринг выдается крупными платежными системами, такими как Visa, Mastercard и American Express, и дает банку право осуществлять обработку и клиринг транзакций. Для приобретения лицензии на эквайринг Вам сначала понадобится пройти процедуру получения банковской лицензии, а по ее завершению приобрести программное обеспечение для Вашего платежного шлюза. Следующий шаг включает поиск дипломированной организации, которая бы могла оценить Ваше программное обеспечение и сертифицировать Вас согласно Стандартам защиты информации в сфере платежных карт (PCI DSS).
    Как только Вы получите банковскую лицензию и сертифицированный платежный шлюз, Вы сможете, наконец, обратиться к крупным эмитентам кредитных карт за получением эквайринговой лицензии. В случае приобретения лицензии на эквайринг следует обращаться к двум крупнейшим платежным системам Visa International и MasterCard International, в отличии от лицензии на выпуск карт, предполагающей взаимодействие с любым эмитентом, способным удовлетворить потребности Ваших клиентов. Инициировав процесс подачи заявления на получение эквайринговой лицензии от Visa и MasterCard, Вам будет необходимо принять решение относительно того, желаете ли Вы осуществлять процессинг карт прочих эмитентов, таких как American Express, JCB и Diners Сlub (через Visa).
    Ответ написан
    4 комментария
  • Дальнейшее развитие для новичка при отсутствии вакансий в городе?

    Shull
    @Shull
    хочу быть хорошим IT-шником
    Я понимаю, что я зажратый маськвич, но...
    Переезд создаст вам КУЧУ различных проблем, даже если вы ВООБЩЕ не работаете.
    Мне уже 33 года, после травмы позвоночника я решил идти во фриланс. Но у меня есть своя комната и мама наливает мне тарелку супа, за что ей огромное спасибо. Понимаете? Эта тарелка супа решает всё! Я встаю в 5-6 утра и у меня есть еда в холодильнике! При переезде такого не будет. Не надо сжигать за собой мосты.

    Итак, мой совет. Идёте к маме и просите тарелку супа. Каждый день встаёте в 5-6 утра и учитесь. Много учитесь. Очень много учитесь.
    Ответ написан
    Комментировать
  • Как сэкономить ресурсы оперативной памяти при кодинге в Ubuntu?

    @polifill
    На работе?
    Это проблема руководства предприятия. Ставь их перед фактом, чтобы модернизировали компьютер.

    Ибо это нужно для работы.
    Ответ написан
    4 комментария
  • Безопасно ли хранить данные аутентификации в открытом виде, для БД MySQL?

    CityCat4
    @CityCat4 Куратор тега Информационная безопасность
    //COPY01 EXEC PGM=IEBGENER
    Это стандартная практика. Но нужно иметь в виду три момента:
    - файл с паролем должен быть вне веб-сервера
    - в файле должен указываться пользователь имеющий права только на БД сайта и только минимально необходимые права
    - MySQL должно принимать соединения только с 127.0.0.1
    Ответ написан
    Комментировать