Задать вопрос
  • Почему код возвращает лишнее?

    @rPman
    Хотя бы для отладки вывел что возвращает тебе ftp_mlsd, 100% все проблемы бы решились сразу.

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

    @rPman
    Если пользоваться гуглом, то посади за распознавание любую железку с запущенным google chrome, в котром у тебя будет крутиться демон, использующий speach api для распознования и синтеза речи.

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

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


    На android есть 100% голосовые движки, работающие оффлайн, т.е. к примеру google translate работает и распознает отлично и очень быстро, но вот получить api именно к гугловскому движку .... точно помню несколько лет назад народ как то ковырялись в их библиотеках, потом это прикрыли.
    Ответ написан
  • Wine распространяемые пакеты?

    @rPman
    Точно помню, что при создании ярлыка на рабочем столе wine, этот ярлык появляется в linux, как минимум в стартовом меню, т.е. создавайте windows установщик каким-нибудь inno setup/nsis/wix tools
    Ответ написан
    Комментировать
  • Нужно ли обрабатывать фатальные ошибки в PHP?

    @rPman
    Если я верно понял вопрос, речь идёт об организации контроля над фатальными ошибками и следующие действия.

    Фатальные ошибки возникают, когда допущена ошибка в коде, например синтаксическая, или необработанные исключения, или неожиданная комбинация данных... в общем произошло то, чего не ждёшь.

    Первое, что приходит на ум, попытаться повторить попытку и отложить сообщение в лог. Но делать это безопасно можно только если в системе реализована атомарность операций, т.е. вы уверены что прекрасную операцию безопасно повторить. Пример опасных мест - вы отсылает SMS но при попытке сохранить об этом информацию, получаете ошибку, если вы повторите попытку, смс ещё раз будет отослана, в бесконечном цикле это обнулит ваши бюджеты.

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

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

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

    Очень сложный вопрос м в конце концов упирается в объем ресурсов, которые вы готовы в это вложить.
    Ответ написан
  • Какой лучше RAID сделать на 4 дисковом NAS для дома?

    @rPman
    raid5 - это возможность без опаски потерять один диск
    raid6 - возможность потерять два диска

    Пример, почему имело бы смысл использовать 6 рейд - когда умирает один диск, вы покупаете ему замену и весь рейд начинает операцию rebuild, это очень длительная операция, она работает в idle, т.е. не должна заметно замедлить работу всего массива, но может длиться сутками. К сожалению из-за повышенной нагрузки на диски, все те косяки, которые привели тот умерший диск к смерти, могут возникнуть и на оставшихся дисках (особенно это актуально для дисков одного производителя и одной партии), т.е. шансы помереть дискам в момент ребилда массива - выше, и вот за надежность данных в этот период и будет следить raid6.

    p.s. брать одинаковые диски рекомендуют чтобы тайминги были у них одинаковые, особенно это актуально для аппаратных рейдов, буквально цитата, можно получить разрушенный рейд на пустом месте из-за этого.

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

    @rPman
    machine learning
    чтобы обучаться, логично особых мощностей не требуется но есть нюанс.

    90% работы - это работа с данными, оставшиеся - выбор тулчейна и настройка окружения... Когда занимаешься решением реальных проблем, то собственно создание ИИ это вопрос исследования и борьба с жабой (та что деньги не дает тратить зря), так как реальные задачи почему то не хотят решаться с использованием 'однослойного перцептрона из 10 нейронов', почему то хотят многомегабайтовые сети и гигабайты обучающих данных.

    И вот тут всплывает наверх то что на процессоре искать ответ сложно (читай невозможно), а у работы с видеокартами куча ньюансов и ограниченный выбор фреймворков (например железо от nvidia чаще поддерживают).

    Если с небольшим объемом данных можно обойтись любым инструментом, каким бы он неэффективным не был, пусть даже в экселе что то ковыряешь, то с большими данными приходится ломать голову и искать способы оптимизации хранения и обработки данных.

    Т.е. знания в machine learning это вот эта борьба, а не умение использовать фреймворк и загружать туда картинки.

    p.s. выбирайте ноутбук не по его производительности, а по удобству использования. К примеру если нужно его часто таскать с собой в рюкзаке - берите максимально легкий, даже если это будет планшетник переросток (была у меня модель digma cite e200 с 4гб ram, жутко удобная вещь, хоть и слабая, покупалась за 14т.р. жаль сейчс такие не делают), тяжелые же задачи запускайте на сервере, по сети, арендованном или стоящем у вас дома.

    Если вам ноутбук нужен чтобы стоял на столе и не двигался - то не покупайте его, лучше возьмите стационарник
    Ответ написан
    Комментировать
  • Низкоуровневое форматирование диска в Linux?

    @rPman
    Низкоуровневое форматирование - это нужны утилиты от производителя, у каждого свои.
    ssd диск можно 'отформатировать' запустив команду trim на весь диск (утилита blkdiscard)

    Вторая команда неправильная, /dev/zero возвращает бесконечные нули, а /dev/null нельзя читать, только бесконечно что угодно в него записывать

    Чтобы подготовить диск к продаже, dd if=/dev/zero of=/dev/sdX. более чем достаточно.
    С бэдами ничего не сделаешь, они будут видны в отчетах смарт (причем еще до их появления), такой диск только на свалку/запчасти ремонтникам (продавайте на авито, могут купить как донор, приложив скрин SMART).
    Ответ написан
    3 комментария
  • Как можно сделать откат и повтор OOP?

    @rPman
    2 основных подхода к реализации отката:
    1. вместо вычислений, на каждом шаге просто добавляете или удаляете описание операций (иногда подойдут обычные замыкания) в специальный массив, реальные вычисления проводите в момент когда запрашивается результат
    2. каждый шаг вычислений сохраняет предыдущее значение в специальном массиве, соответственно откат - это получение этого значения и удаление последнего элемента в масссиве (если не нужен redo)

    Оба подхода имеют свои плюсы и минусы, для простого калькулятора удобнее второй подход, а вот редактора сложного документа - первый.

    Так же возможно сочетание обоих подходов, для оптимизации ресурсов.
    Ответ написан
    Комментировать
  • Почему чтение базы данных SQLite, параллельно записи в нее, медленное?

    @rPman
    Партицируйте данные и структуры, может выглядит сначала странно, но это может помочь. Т.е. вместо создания одного файла sqlite делайте их несколько, продумав как именно делить данные чтобы запись и чтение по реже пересекалось.

    Иногда сложно отказаться от удобства простоты и отсутствия необходимости в демоне

    Да да, не обязательно пользоваться attach database, и да за локами и уже не атомарными транзакциями придется самому следить и прочее... просто нужно понимать где можно этим пренебречь а где остановиться и все же выбрать готовый мощный инструмент вида mysql/postgres/oracle...
    Ответ написан
    Комментировать
  • Как правильно отправлять header, get и post запросы при парсинге, чтобы не банили?

    @rPman
    В общем случае нужно повторять те же запросы и ту же их последовательность, в идеале с правильными таймингами, что делает браузер. Если хотите знать что да как, открываете в браузере хром или фаерфокс нужную страницу, жмете f12, закладка network, выбираете по очереди каждый запрос, правая кнопка, копировать, curl с заголовками и изучаете.

    Понятно что конкретный сервис может не заморачиваться с таким скрупулезным анализом, но что именно будет делать - вопрос исследования.

    Поэтому правильный способ, не пытаться объять необъятное и пользоваться готовым браузером, управляя им со стороны или плагином/инжектом управляющего скрипта прямо на страницу.
    Ответ написан
  • Как создать скрытую ОС с доступом по ключевому файлу расположенного в сети?

    @rPman
    Раздача парольных вещей по сети - ненадежна, ведь обнаружить подобное будет можно с любой машины в этой же сети.

    А так. Организуешь машину (например виртуалка на смартфоне), раздающую dhcp и tftpd для pxe network boot, собственно по сети только загрузочный диск (боюсь для windows придется попотеть но в теории это возможно).

    Для linux подобная схема позволяет вводить парольную фаразу удаленно, подключившись по ssh к мини серверу в момент загрузки, например с того же смартфона. Т.е. вся возня в настройке подобной схемы - инструменты, которые позволяли бы проконтролировать со смартфона что именно к нужному железу произошло подключение и нет прослойки злоумышленника/подмены этого железа.
    Ответ написан
    Комментировать
  • Windows 10 для vps?

    @rPman
    Разве вы имеете право переустанавливать windows у провайдера? Я молчу про легальность этого процесса, не много лицензий позволяют запускать windows как гость в виртуалке.

    Выбор ОС нужно делать исключительно на основе требований приложений, которые там буду запускаться. С высокой вероятностью вам нужны десктопные, значит и ОС берите дектопную.

    p.s. будет медленно (vps это не bare-metall и будете делить его с другими), не будет поддержки 2D-3D ускорения (достаточно поработать с приложениями, рисующими графику, да тот же дубльгис запустите) и будет лагать (из-за задержки сети), ни о каком комфорте тут речи не идет.

    p.p.s. Если использовать операционную систему от провайдера, если у провайдера есть поддержка 3d ускорителя (они обычно дороже раз в 10 сравнимых по мощности с игровыми), то у вас есть шанс получить поддержку графики в приложениях (обычно это cad) и даже играх, но сетевые лаги все равно сожрут все впечатление, а цены таких решений добьют окончательно.
    Ответ написан
  • Как поженить php8 и apache24?

    @rPman
    Сообщение об ошибке 'не найден указанный модуль'

    Настраивать вручную apache и php под windows это какая то форма мазохизма да?
    Выбирайте на выбор:

    * cygwin <-- рекомендуется, очень качественно поддерживают весь стек утилит linux, удобный gui
    * msys
    * wsl <-- это вообще linux позволяет запустить почти полноценный да еще и без виртуализации (как wine в linux для windows)
    * поставьте же наконец себе linux в виртуалке, это пара минут шевеления мышкой без каких либо знаний

    А еще можно не ставить apache, особенно если вы туда не лезете и вам нужно просто отлаживать свои скрипты локально, запускайте встроенный в php веб сервер:
    php -S 0.0.0.0:8080
    Ответ написан
    4 комментария
  • Как в классе использовать global?

    @rPman
    global может использоваться только внутри методов или функций, т.е.
    $a = 'test';
    
    class Cls {
    
      public function __construct($a) {
        global $a;
        $this->a = $a;
      }
      public function printer(){
        global $a;
        echo $this->a;
      }
    }
    
    $get = new Cls($a);
    $get->printer();


    Использование global - очень неверная стратегия, и ее нужно избегать всеми силами....

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

    Если прямо надо сильно глобальную переменную и лень писать global в каждом методе, пользуйся функциями, определенных глобально, их будет видно везде. Пример реализации сиквенса:
    function next_seq() {
      static id=0;
      return id++;
    }

    или даже возвращающего целые объекты или массивы
    function yoyo() {
      static $o=false;
      if($o===false) $o=new MyCoolObject();
      return $o;
    }
    использовать:
    yoyo()->myCoolMethod();


    Еще раз глобальная область видимости - бад практикс, везде старайтесь заворачивать весь функционал вокруг класса или хотя бы неймспейса. Это просто как ходить опрятно и не пованивать.
    Ответ написан
    Комментировать
  • Firefox как отключить сборщик мусора?

    @rPman
    Отключи все расширения и посиди без них, т.е. добейся того же поведения.
    Если не получится - включай по одному, до тех пор пока проблема не появится - т.е. причина скорее в кривом расширении.

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

    @rPman
    для этого из $code удаляю по 1 символу
    так заведи еще одну переменную для этого и скопируй туда $code
    Ответ написан
  • Как работает генератор?

    @rPman
    Ответ написан
    Комментировать
  • Всё-таки Linux или WSL?

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

    Я встречал странные глюки при использовании wsl, файл физически присутствующий на диске не мог быть удален или прочитан (file not found), не мог быть пересоздан (file exists) и т.п., причем это похоже проблема со стороны windows, и лечится рестартом хоста.

    Само существование wsl - полезная вещь, но я не верю что майкрософт будет поддерживать полную совместимость, ей это не выгодно... т.е. сначала конечно все будет работать, но когда этим начнут активно пользоваться, как это уже встречалось с майкрософт, что-нибудь поменяется и работать без переделки будет только у них.

    p.s. главные возможности linux не только в командной строке и пакетном менеджере (и вылизанном порядке в нем) но и в фичах работы с железом (файловые системы, системы кеширования, работа с памятью,..) чего само собой в условиях wsl нет.

    К примеру в определенный момент мне не хотелось перезапускать процесс, запущенный на слабой linux машине, но там заканчивалась оперативная память, считанные гигабайты нехватало, к сожалению hdd диск использовался очень интенсивно (линейное чтение запись) и добавлять к нему нагрузку свопа стало бы фатальным (замедлило бы работ в десятки раз), за пару кликов я запустил nbd сервер на windows, расшарив обычный файл и подключив его на linux поднял своп на нем. Вдумайтесь в абсурдность конфигурации - и Linux это позволяет, когда как с windows это было бы невозможно либо 'дороже' (я знаю про iscsi).

    Вы можете представить что поднимаете своп на основе GPU RAM или используете ее как диск? Вы знаете что можете использовать GPU подсистему удаленно, по сети, причем это штатный инструмент (xserver сетевой сервер) без необходимости покупки дорогого серверного оборудования и софта (с большой буквы, ограничение у windows исключительно программное). 10 человек за одной машиной, физически не удаленный терминал (10 мониторов, 10 клавиатур и мышек) без покупки софта, как было бы для windows (спасибо ibik такой софт есть). Вы наверное не пробовали настроить кластер в linux, представьте что вы работаете в окружении представляющем для вас одну машину, но по факту являющейся распределенным кластером (кстати этот инструмент не так эффективен как ручное управление но факт есть факт)
    Ответ написан
    2 комментария
  • Как организовать файл подкачки на сервере Hyper-v?

    @rPman
    Разместить свап на более дешевом hdd хранилище, подключив отдельным разделом?

    Если приложением перестанет хватать оперативной памяти, их скорость так и так упадет катастрофически, и какая вам разница в 10 раз это будет или в 100?

    p.s. для windows vm хост разве нет инструментов по организации кеширования с помощью ssd медленных hdd. Т.е. используете везде обычные медленные диски, с кешем на основе всех ваших ssd дисков.

    Для linux, например, bcache, - штатный инструмент, стабильный и бесплатный.
    Ответ написан
    2 комментария
  • Может ли провайдер изменить протокол на транспортном уровне и прочитать ваш трафик?

    @rPman
    - если браузер (или любое другое приложение с root превилегиями, например антивирус) сливает данные провайдеру/специальный центр
    - если вы установили в браузере расширение, которое сливает данные в специальный центр

    ... то вас не защитит ни https, ни tor, ни крутые пароли и т.п.

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

    Чистый и надежный софт у вас на компе это залог незаметности... закрытым остается вопрос, а можно ли доверять чужим бинарникам в принципе? ведь слежка за своими гражданами в приоритете не только у стран третьего мира но и у вполне себе стран с высокими демократическими ценностями (тег сарказм).
    Ответ написан
    Комментировать