• Как из класса в 1 строку вызвать 2 функции?

    PavelK
    @PavelK
    Называется "method сhaining".
    Суть - из функции класса возвращается объект текущего класса (или любого другого):
    public function A()
    {
       ...
       return $this;
    }
    Ответ написан
    2 комментария
  • Можно ли группе www-data давать права на запись в директорию сайта?

    PavelK
    @PavelK
    Обычно, от имени www-data работает сам сервер, точнее интерпретатор php (php-fpm, если Nginx) и давать этой группе и пользователю права на запись во все директории очень опрометчиво.

    Я обычно владельцем файлов делаю конкретного пользователя, который может управлять всеми файлами, а группу оставляю www-data и устанавливаю ей права на запись только у тех папок, в которых действительно может происходить загрузка файлов и изменение файлов скриптами и в этих папках обязательно отключаю запуск скриптов (настройками Nginx). Только ещё umask 027 нужно сделать. Если несколько сайтов, то в случае nginx лучше будет для каждого сайта использовать отдельный пул php-fpm с отдельной группой пользователей только для этого сайта.

    Но это только если нет возможности использовать ACL. Если есть - создаю отдельную группу для "разработчиков".
    Ответ написан
    Комментировать
  • Есть ли алгоритм кодирования, который не допускает подряд 3-6 одинаковых значений?

    PavelK
    @PavelK
    Доброго дня.
    Если я правильно понял, то, алгоритма то не требуется (можно применить сжатие LZW, но, боюсь, Ардуинка половину времени будет вычислять его, что явно не устроит).

    По-моему, проще будет пробежаться по байтам и вместо 0 0 0 0 0 вставлять 0 N, где N - их количество (если не хотите возиться со сдвигом массива, то вместо остальных ставьте любое значение, потом только при парсинге поставите обратно).
    Но вот если 0 действительно один, то всё равно придётся вставлять дополнительно 0 1, иначе будет не отличить где один, а где несколько.

    И вообще "0" - хреновый разделитель, т.к., по-моему, самое часто встречающееся значение в потоке обмена. Лучше уж 42.
    Ответ написан
    1 комментарий
  • Как правильно установить значение переменной типа с фиксированным количеством разрядов?

    PavelK
    @PavelK Автор вопроса
    Так, отладчиком прошёлся по кишкам Qt - это, по всей видимости, "Баг", а не "Фича".
    Ответ написан
    Комментировать
  • Формирование зарплаты у веб разработчиков?

    PavelK
    @PavelK
    Доброго.
    1. Заказы за 5-6 т.р. вполне возможно, что и делаются пару дней на коленке на "отвали".
    2. Вы не учитываете опыт и время. Возможно, что за 80 т.р. вполне себе мидл будет, для которого фриланс заказы за 5-6 т.р. делать пару дней.
    3. Стоимость заказа можно вполне увеличить (иногда на порядок - как договоритесь).
    4. Как уже выше сказали - возможно, берутся ради подработки, либо индусы за бесценок.
    5. Если считаете, что для Вас 5-6 т.р. унизительно и предлагают какую-то фигню, то тут как раз преимущество фриланса - Вы можете и не откликаться на этот заказ, а искать что-нибудь по душе.
    Ответ написан
    22 комментария
  • Как правильно "разрезать" h264 фал?

    PavelK
    @PavelK
    Простой вариант: из основного файла в каждый "разрезаемый" копировать первые 100-200 байт в начало.
    VLC, впринципе, съест. Работать будет не со всем оборудованием, но большинство китайцев не парятся с соблюдением всего стандарта RTSP потока RTP и h.264.

    Более правильный и рабочий вариант:
    1. В любом месте файл разрезать нельзя.
    В файле "фреймы" (так называемые NAL unit), разделённые 4 байтами: "00 00 00 01" - находите ближайшие от места "разреки".
    2. Для воспроизведения h.264 нужно передать настройки декодирования. Скорее всего они в самом начале файла будут. Выглядеть должно примерно так:
    00000001
    SPS (Sequence parameter set)
    00000001
    PPS (Picture parameter set)
    00000001

    и тогда всё будет нормально воспроизводиться.
    Но Вам придётся хорошенько проштудировать спецификацию h.264 (в особенности про NAL), т.к., возможно, VLC так же первым делом может требовать I-frame (ключевой, без ссылок на предыдущие кадры).
    Вкратце, вот: https://yumichan.net/video-processing/video-compre...
    Ответ написан
    2 комментария
  • Как учились в вузе,стоит ли учиться в вузе?

    PavelK
    @PavelK
    Вопросы регулярно возникают такие...
    Лично я в вузе отучился пол первого курса, дальше послушал, что нам будут рассказывать на 5ом и пошел в армию косить от института (всё равно если не до, так после, ибо денег не было на магистратуру).
    Но тут по-моему зависит от самого вуза, наличия денежных знаков и вообще Ваших целей.
    Одно дело глубинка, другое что-то типо МФТИ и т.д.

    Если Вам в Веб - то ничему Вас там такому не научат, чему бы Вы не могли самостоятельно и в более сжатые сроки. Если прикладное, или где нужна математика/физика/ и т.д., то лучше сходить.

    Сейчас, пришлось поступить на заочно и то только лишь по причине острого желания уехать за бугор (с дипломом как студент проще).

    Но Вы готовы маме/папе объяснять, почему Вы не учитесь? У меня таких проблем не было, так что в этом плане проще. Может быть стоит заочно хотя бы? Сможете основную часть времени уделять самостоятельному обучению, и корочу пофакту получить - ходят легенды, что с ней проще (или забить сразу, если удастся устроиться).
    Ответ написан
    Комментировать
  • Как справиться с ассертом в Qt OpenGL?

    PavelK
    @PavelK
    Дурацкий вопрос, но Ваша видеокарточка вообще OpenGL 2 поддерживает?
    В Линуксе узнать можно вбив в консольку:
    glxinfo | grep "OpenGL version"
    Так же должны быть установлены заголовочные файлы для OpenGL.
    Ответ написан
  • Как в QML вывести svg с возможностью взаимодействия и стилизации?

    PavelK
    @PavelK
    Тынц: https://doc.qt.io/qt-5/qml-qtquick-shapes-shape.html (Через PathSvg можете вывести непосредственно сам путь из svg "" .
    Анимировать/изменять/взаимодействовать можно относительно легко.

    Но тут, как обычно, есть много НО:
    1. Вам придётся все стили: обводку, заливку, градиенты прописывать вручную у Shape (как в примере по ссылке)
    2. Взаимодействие - на Shape целиком. Нужно на отдельный путь - извольте его в отдельный Shape засунуть
    3. ТОРРРМОЗЗЗа, т.к. для ровности и плавности нужно выставлять layer.samples: 16 (минимум). Особенно заметно, если планируете под мобилки. Как статичный интерфейс ещё потянет, если Вы вдруг собрались его делать.
    4. Пляски с маштабированием и размерами (У Shape scale появился только с 5.12 вроде)
    5. Если у путей стоит какой transform (Иллюстратор его любит выставлять где не приколочено), то либо его то же прописываете (и увеличиваете тормоза), либо сразу применяете к path.d, но для этого придётся писать свой парсер (т.к. трансформации могут быть и на группе то же и на svg целиком), причём достаточно нефиговый - по себе знаю :D
    6. Далеко не все возможности SVG реализованы в явном виде. Некоторые поддаются "костылянию" (через ShaderEffects, либо через написание собственных фрагментных шейдеров в крайнем случае. Например - clipPath придётся делать через OpacityMask либо бить дизайнера, что бы обрезал сразу), что опять же увеличивает тормоза.

    Опишите для чего именно Вам нужно, подскажу конкретнее куда копать. Может проще вообще в сторону наследования от QQuciPaintedItem и всю работу доверить QSvgRenderer.
    Ответ написан
  • Как определить что время истекло?

    PavelK
    @PavelK
    Доброго дня.
    Как раз через Крон самый вариант.

    Вам не обязательно делать "кучу" запросов - SQL язык достаточно мощный и можете за один раз выбрать всю интересующую информацию.

    Раз в секунду вовсе не обязательно. Если "3 дня на проверку", то достаточно проверять раз в час, или раз в сутки вообще (смотря с какой точностью Вам надо).

    Сомневаюсь, что у Вас будет столь "высоконагруженный" сервис, что бы обработка хотя бы 1000 позиций заняло сколь нибудь существенное время.
    Если всё таки по каким-то причинам не хватает 30 секунд на выполнение скрипта и реально "существенная" нагрузка - обрабатывайте порциями (одним запросом выгружаете всё, что нужно обработать, ставите флаг, что не запускать до конца обработки, а потом уже обрабатываете 100 штук за раз, а после снимаете флаг), либо переписываете код по-нормальному и оптимизируете, либо создаёте кластер серверов и распределяете задания, но это совсем другая история. Думаю, принцип понятен.
    Ответ написан
    6 комментариев
  • Можно ли реализовывать админ панель для cms с помощью iframe?

    PavelK
    @PavelK
    Через IFrame делать слегонца устарело (лет так на 15).
    Выводите всё сразу в страницу.
    Если что-то не работает ищите причину. Как минимум для более подробного ответа, нужно знать, где Вы выводите php и что внутри самого settings/index.php
    Ответ написан
    1 комментарий
  • Как создать тип "ДанныеФормыДерево" на сервере?

    PavelK
    @PavelK Автор вопроса
    В общем, сделал через пакеты XDTO, сначала ДанныеФормыДерево загнал в XML файл, сохранил,
    часа три кастрировал xml до пары строк (т.к. в разных версия почему-то по-разному не нравилось), потом
    идиотизРЯК = Новый ЧтениеXML;
    идиотизРЯК.УстановитьСтроку("1Ссникам страдать!");
    деревоЗначенийКлиент = СериализаторXDTO.ПрочитатьXML(идиотизРЯК);

    В общем, после общения с 1С как обычно горящая попа, аргументирую:
    зря потраченные 3000рэ (за консультации "высококвалифицированных сертифицированных специалистов"), ответ которых "нельзя" и мол "криворукие кто писал", да вот только на упрёк, что конфигурацию пишет их же фирма (весьма не маленькая и конфигурация используется много где)!
    "а, ну на то были причины".
    Спасибо, что хоть здесь ответили бесплатно!
    Ну её 1С нафиг, для себя решил, что подожду лет 10, пока перестанут эмулировать c++ и перейдут на чистый, а то сплошные извращения кругом (и это был лишь один из примеров).
    Ответ написан
    Комментировать
  • Можно ли как-нибудь закруглить в SVG у rect только один угол?

    PavelK
    @PavelK
    Вы можете rect из path сделать со всеми нужными скруглениями.
    Ответ написан
    Комментировать
  • Какой веб-сервер для С++/С?

    PavelK
    @PavelK
    Эм... Вы можете на C++ написать свой веб-сервер... А Nginx использовать как прокси-сервер и для раздачи картинок и прочей "статики".
    Ответ написан
    Комментировать
  • Вопрос по электрике?

    PavelK
    @PavelK
    Можно. Только вопрос конкретезируйте, что с чем Вы собрались объединять? От одного блока питания запитать пару материнок? Можно. Объединить 3 фазы со счётчика в одну - напрямую нельзя.
    Ответ написан
  • Возможна ли смена языка программирования без потери должности?

    PavelK
    @PavelK
    Когда переходил с Дэлфи на C++ то же уверенно себя чувствовал на уровне гораздо выше среднего... Ох, как я заблуждался... Несомненно, переход дался в разы легче и быстрее, но вот тонкости дались только с опытом.
    Если бы я сунулся сразу на подобную должность, то работодатель выкинул бы тут же из-за несоответствия заявленного уровня и реального. Впринципе, оно и правильно - получается я за его же счёт ещё и учится буду, пока проект постоит. ИМХО стоит сначала пофрилансить, не уходя с основной работы, потом, набравшись опыта, уже идти устраиваться.
    Ответ написан
    Комментировать
  • Как придумывать названия для Linux утилит?

    PavelK
    @PavelK
    Ответьте себе на вопрос, что делает ваша программа. То, слово, с которого начали отвечать и считаете за название. Я ещё добавляю "ус" на конце (и делал это ещё до лебедева, блин).
    Ответ написан
  • Как распарсить Xml данные принятые через serial в QT?

    PavelK
    @PavelK
    Данные через QSerialPort приходят кусками, а не все за раз, так что Вам необходимо сначала все их собрать, а лишь потом парсить.
    Ответ написан
    Комментировать