Задать вопрос
  • Всем привет. Я зарегистрировала свое приложение на hh.api, получила client id и client secret. Не разобралась, что делать дальше?

    @rPman
    а дальше идешь на сайт с документацией
    https://github.com/hhru/api
    там будет все красиво описано со ссылками на другую документацию, с примерами, по русски (так не привычно), оформлено очень качественно
    https://api.hh.ru/openapi/redoc
    Ответ написан
    6 комментариев
  • Может ли хозяин Wi-Fi точки видеть приложения, которые я использую?

    @rPman
    Роутер полностью отслеживает ip адреса машин, исходные и целевые порты, по которым зачастую можно понять, что за приложение подключилось, т.е. почти все сетевые приложения будут обнаружены роутером.

    wifi роутер это машина, подключенная в локальную сеть пользователя. Типовые фаерволы на машинах пользователей, защищающие от входящих подключений, обычно менее строго настраиваются для соединений в локальной сети, а пользователи надеются на защиту роутера и ослабляют защиту, например выключают пароль локальной сети smb.

    Бывает что разработчики зачем то оставляют открытым входящие порты у различных служб, не обязательно http протокол, бывает используются named pipes/unix socket (изначально работающие только в локальной сети а значит разработчики слабо задумываются о защите), в этом случае злонамеренный владелец роутера может навредить через них.

    p.s. лучший способ защититься - поставить между чужим роутером и своей локальной сетью - свой роутер/фаервол
    Ответ написан
    2 комментария
  • Доступ на сайт по доменному имени, а не ip в локальной сети?

    @rPman
    Если я верно понял ситуацию - локальная сеть с локальными ip адресами (сервер и клиенты) в интернет выходят через NAT, а внешние пользователи добираются до сервера через перенаправления портов (настройки на роутере).

    Чтобы изнутри локальной сети можно было получить доступ по внешнему ip адресу, нужна опция на роутере. Называется она NAT loopback (на дешевых роутерах может быть не доступна в интерфейсе)

    Так же тут уже сказали, альтернатива, настроить DNS сервер в локальной сети (прописав его на все машины, это обычно автоматически делают настройки на роутере/dhcp сервере) и совсем крайний случай - отредактировать /etc/hosts (любая ОС)
    Ответ написан
    Комментировать
  • Почему сайт на wordpress сломался после редактирования файла functions.php?

    @rPman
    ну как можно гадать то, посмотри логи веб сервера, php туда сыплет все ошибки с подробностями
    Ответ написан
  • Почему при чтении из потока read блокируется, даже если данные есть?

    @rPman
    Тебе нужно асинхронное чтение потоков процесса, это можно сделать, добавив на колбек свой метод process.OutputDataReceived и ErrorDataReceived соответственно, а после process.Start() сразу запускаешь чтение потоков process.BeginOutputReadLine и BeginErrorReadLine

    Вот дока с примером
    --------------upd---------------

    Для чтения не по строкам, пользуйся асинхронным методом у StreamReader - ReadBlockAsync

    Чтобы можно было брать потоки process.StandardOutput и process.StandardError, у process.SystemInfo нужно установить RedirectStandardOutput = true и RedirectStandardError = true соответственно.

    Осторожно, ReadBlockAsync может вернуть блок меньшего размера

    Пример кода
    using System;
    using System.Threading.Tasks;
    using System.IO;
    using System.Diagnostics;
    
    namespace ProcessStdoutTaskTest
    {
        class MainClass
        {
            static char[] bufOut = new char[5];
            static char[] bufErr = new char[5];
            async static void ReadAsyncStream(StreamReader sr, char[] buf)
            {
                int size;
                while ((size = await sr.ReadBlockAsync(buf, 0, buf.Length)) != 0)
                {
                    Console.WriteLine((buf==bufOut?"out":"err")+" '" + new string(buf, 0, size) + "'") ;
                }
            }
            public static void Main(string[] args)
            {
                using (Process process = new Process())
                {
                    process.StartInfo.FileName = "/bin/bash";
                    process.StartInfo.Arguments = "-c \"printf 'abc';printf 'def' 1>&2;printf 'ghi';printf 'j' 1>&2;\"";
                    process.StartInfo.UseShellExecute = false;
                    process.StartInfo.RedirectStandardOutput = true;
                    process.StartInfo.RedirectStandardError = true;
                    process.Start();
    
                    ReadAsyncStream(process.StandardOutput, bufOut);
                    ReadAsyncStream(process.StandardError, bufErr);
    
                    Console.Write("Wait to process exit ");
                    process.WaitForExit();
                    Console.WriteLine("ok");
                }
    
                Console.WriteLine("Press enter to exit.");
                Console.ReadLine();
            }
        }
    }

    Будет вывод:
    Wait to process exit ok
    Press enter to exit.
    out 'abcgh'
    out 'i'
    err 'defj'

    Кстати поведение объединения отдельных строк в потоках из разных кусочков не гарантируется, как я понимаю это зависит от того как использует flush на stdout запускаемый процесс, в моем примере это bash и он явно буферизирует вывод
    Ответ написан
  • Как связать dll вместе с exe файлом?

    @rPman
    В зависимости от IDE, на сколько я помню, microsoft visual studio позволяла просто добавить dll как файл к проекту и ее инструменты деплоя начинали учитывать этот файл при сборке установщика. Но никто не мешает тебе собирать файлы в пакет вручную/другими инструментами, вне IDE.

    Интегрировать dll буквально внутрь exe файла не получится, за исключением банальной упаковки файла в самораспаковывающийся архив, но в момент инжекта ddl должна лежать уже отдельно.
    Ответ написан
    3 комментария
  • Какая видеокарта потянет два монитора с разрешение 4к+?

    @rPman
    Кажется любая nvidia/amd 5-8-летней давности, мало того материнские платы с двумя видеовыходами обычно тоже это могут, так как встроенные в процессор видеоускорители на это рассчитываются (правда задачи вывод изображения и декодирование видео максимум)

    Поэтому выбирай любую видеокарту (по порту подключения, скорее всего pcie) с наличием нужных тебе выходов (dp/hdmi/dvi при этом div->hdmi идут пассивные переходники, даже в комплекте), а там если производитель заявляет поддержку 4k/8k то это на все его выходы (с hdmi одно время было требование двух кабелей на один монитор)
    Ответ написан
    Комментировать
  • Возможно ли поднять свой сервер Git?

    @rPman
    в догонку к ответу Valentin Barbolin посмотри www.gitblit.com - redmine и ldap заявлены, он еще и опенсорс. сам не ковырял но когда то рассматривал варианты
    Ответ написан
    Комментировать
  • Как спарсить цены предметов с такими кнопками?

    @rPman
    Тут никаких скриптов на странице, генерирующих контент нет, как минимум под эту задачу
    Щелкаешь на нужную иконку правую кнопку в браузере, выбираешь Инспектировать/Inspect, в открыввшемся окне инспектора смотришь на div выше уровнем (там кстомный атрибут data-original-title содержит текст который выводится сайтом как подсказка, по нему определяешь, твой это знак или нет)

    если щелкнуть на этот div в инспекторе правой кнопкой, в меню выбрать Копировать - css-selector
    получишь почти готовую строчку для получения запроса поиска этого div (предварительно найди ul.media-list и перебирай все его li)
    Ответ написан
    Комментировать
  • Как подобрать драйвер для RAID Controller для старого сервера с новой ОС?

    @rPman
    Настоятельно рекомендую виртуализацию, любую на выбор, хоть монстроуозный xen, хоть уже указанный proxmox, или просто устанавливай linux в которой средствами libvirt (есть gui) поднимай виртуалку kvm (можно и без libvirt, просто так удобнее), или даже virtualbox

    Настоятельно рекомендую не заморачиваться с raid контроллером, никакого заметного профита от него не получишь, а вот геморой от вендорлока - да. Софтварный рейд контроллер покроет все твои нужды.

    p.s. машина очень старая, железо древнее (ddr2! max 16Gb). Да, туда можно водрузить интересные процессоры (если найдешь) к сожалению медленная память все достоинство уничтожит.

    из-за этог с некоторыми шансами может не повезти и современные linux дистрибутивы могут на нем не завестись
    Ответ написан
    1 комментарий
  • Как оптимизировать работу PHP интеграции?

    @rPman
    Со своим сервисом - сделать batch запросы, позволяющие одним запросом выполнять несколько операций, например запрашивать/модифицировать информацию сразу по нескольким объектам. Но еще лучше, реализовать требуемую логику изменения объектов прямо на сервере, грубый пример - нужно сдвинуть координаты объектов на величину [dx,dy,dz], вместо того чтобы все с сервиса выгружать, менять координаты и загружать обратно, нужно сделать команду, которая на вход получит этот вектор и все сделает на сервере (это самый быстрый вариант)

    С чужими сервисами, либо искать api для batch операций, либо переделать код на параллельные запросы, надеясь что этот сервис оптимизирован на такую работу (не факт, и даже если есть, количество параллельных запросов могут быть ограничены). Если ни то ни другое не доступно, размести свой сервис территориально максимально близко к чужому сервису (так как очень часто задержки сетевых запросов вносят очень большую задержку), само собой сначала удостовериться что причина именно в этом а не тормозах сервиса
    Ответ написан
    3 комментария
  • На картинках много маленького текста, как сделать чтобы он хорошо читался на телефонах?

    @rPman
    Потрясающий вопрос (очень мало информации), дам капитанский ответ - сделать текста поменьше а шрифт побольше?

    С чужими картинками сложнее, до невозможности, иначе бы не существовало проблемы чтения pdf с маленького экрана.
    В частных случаях можно буквально распознать текст, подобрать текстуры (даже нейронки для этого есть, начиная с фотошопа и кончая stable diffusion inpaint) и переформатировать с новыми размерами и шрифтами.

    Еще можно поиграть с подменой цветовой гаммы и контрастностью, прогнать части или все изображения фильтрами sharpen и т.п. в общем творческий процесс.
    Ответ написан
    Комментировать
  • Совместим ли Huawei MateBook D 16 RLEF-X с linux?

    @rPman
    выделяешь заголовок своего вопроса мышкой, нажимаешь правую кнопку, выбираешь пункт Найти/search google, и смотришь первые результаты типа такого
    Ответ написан
  • Что сделать, если к моему ноутубу подключаются мошенники?

    @rPman
    Скачать загрузочный диск с антивирусом, такой продукт бесплатный для частников есть у всех адекватных антивирусных компаний.

    Из российских продуктов, можно попробовать drweb или kaspersky
    Ответ написан
    Комментировать
  • Как лучше хранить много свойств в бд?

    @rPman
    Обычные css стили, которых насчитывается уже сейчас более 150
    что то тут не так, в нормальной ситуации это слишком много.

    Поддаются ли эти атрибуты группировке (т.е. клиент запрашивает эти атрибуты сразу пачкой)? существует ли необходимость одновременного редактирования атрибутов из одной группы нескольким пользователям, есть ли вообще многопользовательское редактирование?

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

    @rPman
    Выдели нужные ячейки, скопируй и вставь в новую созданную.
    Макросы, если есть, так же вручную переноси.
    Ответ написан
  • Где найти просмотрщик фото без рамок и меню?

    @rPman
    Смотри irfan viewer, лучший просмотрщик файлов для windows и не только
    Совсем без всего - feh, правда он под linux но есть windows версии, смотрит все, самый быстрый (быстрее iview), функционала минимум
    Ответ написан
    4 комментария
  • Линк на апи валидации паспортных данных?

    @rPman
    какой закон это требует?
    p.s. https://kontur.ru/market/spravka/25171-xochu_proda...
    Ответ написан
    Комментировать
  • Как спарить данные с динамического сайта?

    @rPman
    Что не получается то?
    у тебя 2 пути, реверсить логику сайта либо работать с итоговым результатом прямо в браузере, симулируя клики и движения мыши.

    Второй способ проще но кушает ресурсы (для параллельных запросов несколько браузеров запускать), инструментов тьма, от штатного браузера и его отладочной консоли (тупо туда код пишешь) до готовых проектов по управлению браузера типа selenium
    Ответ написан
    Комментировать
  • Как понять что HDD присмерти?

    @rPman
    Единственный параметр smart у тебя, на который я бы рекомендовал поглядывать в динамике - это g-sense error rate, он у тебя достаточно большой (диск мобильный - либо в ноутбуке либо в кейсе?) и может быть еще температура непонятное значение (либо косяк призводителя либо у тебя диск замерзал, по крайней мере у меня после -10 в процессе работы и запуска один диск стал лажу показывать). По остальным параметрам у тебя все ок.

    С точки зрения производителя, с диском у тебя и так все ок.

    Более глубокое понимание будет только если разобраться в документации от производителя по диску, как именно интерпретировать raw значения, но не думаю что особо много полезного поймешь

    p.s. Скорее всего в raw про g-sense записаны факты отказов из-за динамических воздействий на диск, т.е. задетектировав тряску, диск паркует головку на всякий случай вместо того чтобы двигать ее к блинам. Это штатное действие для мобильных устройств, но было бы не плохо просто понаблюдать за значением в динамике, к примеру ты точно знаешь что никакой тряски не было и ноутбук стоял на столе а значение растет - значит проблема в датчике, тогда время выхода из строя можно будет расчитать по скорости падения curent/worst (они считаются производителем по своим алгоритмам в % здоровья диска, 100% - здоров)
    Ответ написан
    Комментировать