Задать вопрос
  • Linux mint восстановление x11 из командной строки?

    @rPman
    Если wayland был установлен по похожей инструкции то достаточно удалить пакет wayland в консоли recovery (выбрать в grub, ввести пароль root)
    apt purge wayland weston sway mutter
    тут указан список всех пакетов что приведены в статье, но возможно ты использовала что то конкретное. purge в отличии от remove должно удалить и конфигурационные файлы
    Ответ написан
    Комментировать
  • Используется ли двухканальный режим оперативной памяти внутри VirtualBox?

    @rPman
    Двух/четырех-канальный режим - это аппаратная фича, на уровне процессора и приложений нет различий, просто считай что шина данных в два/четыре раза шире и последовательные операции чтения/записи будут быстрее в два/четыре раза в идеальном случае.

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

    @rPman
    Пользуйтесь средами разработки, поддерживающими php и xdebug (или аналоги).

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

    А так есть еще такие Atom, Netbeans IDE, Komodo IDE, Aptania Studio,..
    Ответ написан
  • Возможно ли парсить разные сайты одним скриптом?

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

    Что бы скрипт решал такую задачу, тебе нужно формализовать постановку задачи, т.е. описать задачу таким образом, что бы она была математически строгой, и машиночитаемой.
    spoiler
    Отличным примером можно представить задачу выявления рекламы... если кто то определит, на каждом веб сайте, что является рекламой, определив ее специально созданным языком css selector, и опубликует эти правила на специально тиражируемом публично списке, то приложение 'блокиратор рекламы', использующее эту информацию будет решать задачу, схожую с ней. Но нужно понимать, что это приложение не может работать без толпы людей, которые эти правила создают, т.е. это только часть системы.

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

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

    Сейчас от этой низкой вероятности успеха отнимается еще некоторый процент некачественного ИИ в наличии.

    Настоятельно рекомендую попробовать поработать с топовыми claude sonnet или openai gtp4o, подсовывая ей html код страницы одновременно со скрином, выделив на нем искомые области и описывая словами задачу построения приложения для выявления нужных элементов (само собой примеров должно быть несколько), поработав так и поняв как косячит современный ИИ в этой задачи, ты начнешь понимать сложность проблемы.

    p.p.s. если тебе не поболтать а реальную задачу решать, советую строить парсер на основе веб браузера, собирая только видимые элементы страницы (имеющие текст и настроенные события типа onclick), сохраняя структуру на основе относительного положения (выше/ниже/левее/правее,.. на одном уровне по верхней границе/по левой/по правой/по нижней,.. перекрывает край или полностью входит в...) этой информации на текущий момент достаточно что бы строить очень мощные парсеры, которые справятся даже с теми кто против этого борется, и эту информацию в принципе можно скармливать чисто текстовому ИИ, с большей эффективностью (само собой что бы он смог построить приложение для анализа, а не для анализа самих данных).
    Ответ написан
    Комментировать
  • Может ли РКН блокировать конкретный URL?

    @rPman
    https зашифрованный трафик, в зависимости от версии протокола и настроек на веб сервере, позволяет определять (и соответственно блокировать) доменное имя в https сессии (одно подключение может передавать несколько запросов) но не сам url.

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

    Сомневаюсь что именно так делают для блокировки, но вот для анализа трафика да, например выявление vpn, скрытых за обфускацией через https трафик... собственно повальное использование vpn позволяет сейчас провайдерам собрать статистику и разработать методики по этой блокировке.

    Железо для этого требуется не слабое и не дешевое.

    p.s. Есть проще подход, если на машине пользователя установлен юридически подконтрольный браузер, если на машине установлены корневые сертификаты того кто желает проводить блокировки и используется злонамеренный dns сервер (можно делать атаки man-in-the-middle подменяя содержимое сайта), то разбор того, где ходит пользователь и соответствующая блокировка - технически решаемый вопрос.
    Ответ написан
    Комментировать
  • Как скачать запись вебинара с платформы МТС Линк, если у меня есть только ссылка на запись проведенной лекции?

    @rPman
    Смотреть нужно через браузерную консоль разработчика (f11), начинать исследование нужно с вкладки network, смотреть что там происходит после открытия страницы и запуска видео.

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

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

    Возможна ситуация, когда этот файл-список формируется скриптом.

    Для скачивания может потребоваться повторить запрос со всеми заголовками (тут же в браузере правая кнопка на запросе, скопировать как curl команда) и в особых случаях, некоторые заголовки могут меняться, алгоритм этого изменения придется отреверсить по коду или логике, в простых случаях этот код может передаваться текстом в соседних запросах...

    p.s. в простых же ситуациях, видеофайл будет в виде одного файла, и его сразу будет видно в списке запросов.
    Ответ написан
    1 комментарий
  • Материнская плата GIGABYTE B760M D3H DDR4 поддерживает одновременное использование двух SSD с типоразмером 2280?

    @rPman
    Да, они различаются только размерами платы, а разъемы одни и те же.
    Я допускаю что на плате может не быть крепежного болта для 2280 но это очень маловероятно и проверить это можно визуально
    Пример случайной платы из интернета:
    rtx-9_k55e3deeswyylftjf_6ly.png

    Описание на офф сайте
    CPU:
    - 1 x M.2 connector (Socket 3, M key, type 22110/2280 PCIe 4.0 x4/x2 SSD support) (M2A_CPU)
    Chipset:
    - 1 x M.2 connector (Socket 3, M key, type 2280 PCIe 4.0 x4/x2 SSD support) (M2P_SB)
    Ответ написан
    4 комментария
  • Допустимо ли хранить логи nodejs приложения в mysql бд или есть решения лучше?

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

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

    А так, первым шагом можно вместо записи в базу данных, просто писать в jsonl (построчно по json на событие), по меньше упаковки в человекочитаемые строки и побольше читаемые машиной, постаравшийсь полностью исключить вывод сообщений об ошибках в stdout/stderr, и над именованием файлов подумать, что бы удобнее с ними было работать.
    Ответ написан
    Комментировать
  • Как установить windows 10 на Asus vivobook go 15 e1504f?

    @rPman
    Обычно у биос есть возможность без собственно входа в его меню настроек, открыть меню выбора дисков для загрузки, обычно это кнопки F11, F8 или ESC сразу после включения

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

    Саму флешку записывай с помощью чего то типа rufus (что windows что linux)
    Так же попробуй вариант с legacy mbr режимом установки (формат разделов не gpt а msdos тип системы CSM), еще есть вариант записи iso на флешку в режиме dd (посекторное копирование, т.е. на флешке не будет привычных разделов а она будет копией cdrom iso)
    Ответ написан
  • Процессор i5 vs i7. Когда надо и надо ли?

    @rPman
    Не смотри на частоту, на нее уже лет 10 не нужно смотреть, как и на количество ядер/потоков (с оговоркой). И у памяти нужно смотреть не частоты а тайминги, точнее поделив частоту на тайминг (это будет время выполнения операции в герцах), чем меньше полученное число тем лучше.

    При выборе процессора смотри на объем кеша L2 (и тут победитель 'последние' годы amd но не в секторе ноутбуков к сожалению) и бенчмарки в single thread (однопоточные). А еще у интель есть энергоэффективные ядра, которые роняют производительность ниже плинтуса, да, affinity можно ручками выставлять, говорят помогает но это дико неудобно.

    Если смотреть твои варианты, то:
    thinkpad t14 gen3 - 3213 попугая, батарея 39.3Wh (пишут что есть варианты с дискретной видео тогда 52.5Wh)
    thinkpad t14 gen4 - 3482 попугая, батарея 39.3Wh
    thinkpad t14 gen5 - 3453 попугая, батарея 52.5Wh (и пишут что батарея заменяемая)
    Что то описания на офф сайте не очень совпадают с тем что магазин показывает, либо там оперативную память вынимают (маркетинг ****) либо кто то косячит.
    Оперативную память 'всегда' можно докупить, процессоры до 64гб поддерживают (если нельзя заменить, то такой ноут точно не нужно рассматривать как мощная машина, обычно это SoC с запаянной памятью, ssd и процессором)

    p.s. И помним, что ноутбук это не про производительность! это про мобильность и время работы. Либо ты будешь работать быстро и мощно (игровые ноуты, из дорогого сегмента) но не долго (пару часов) либо долго (5-6 часов) но 'без огонька'.

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

    Для смеха, добавлю вариант - мощный компьютер стоит в машине, раздает быстрый wifi, а ноутбук работает как терминал к нему, подходит для тех кто катается например на природу 'поработать' на своей машине.
    Ответ написан
    6 комментариев
  • Как установить основную ОС на другой жесткий диск на уже запущенной машине?

    @rPman
    Вариантов много, все они требуют какие то навыки работы с linux.

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

    Можно по другому. Для начала тебе нужно запустить на этом компьютере какой-либо linux (использовать livecd/liveusb варианты с возможностью работать как с обычным ос) что бы он мог найти сетевой адаптер и настроить его автоматически, а так же что бы в его составе шел какой-нибудь сервер удаленного управления, от ssh до vnc на выбор...

    Вот пример как модифицировать тот же livecd ubuntu в gui с помощью cubic-wizard

    Так же можно по тупому, на рабочей машине протестировать, какую последовательность действий необходимо выполнить для установки vnc сервера, и прожать кнопки в слепую.
    например:
    # переключиться в tty консоль ctrl+alt+f1 ввести логин и пароль (у ubuntu livecd дистрибутивов имя пользователя совпадает с названием дистрибутива, например xubuntu, и с пустым паролем)
    # переключить консоль на рута (
    sudo -i
    # обновить индексы репозитария и установить x11vnc
    apt update; apt install -y x11vnc
    # Запуск VNC сервера без пароля
    x11vnc -forever -shared -display :0
    теперь можно подключиться по ip:5900 хоть с винды, простейший vncviewer

    ip адрес можно узнать, зайдя в админку роутера или просканировав локальную сеть (я надеюсь все это в локальной сети будет происходить?) каким-нибудь сканером типа nmap

    Но и без знания ip можно выкрутиться, у vnc есть обратный режим подключения, когда сервер (машина которой нужно управлять) подключается к клиенту (машина с которой будет управление), клиент тогда запускать командой
    vncviewer -listen 5500
    а сервер
    x11vnc -display :0 -connect IP_КЛИЕНТА:5500
    ip клиента ты знаешь, в слепую набрать на клавиатуре это не сложно.
    Ответ написан
    Комментировать
  • Как можно узнать какие сайты открыты в хроме у пользователя терминального сервера?

    @rPman
    Потребуется приложение и расширение к браузеру, и то и другое формально можно написать в блокноте (wsh/.net/powershell), они не такие сложные как ожидается. Ну и расширение пользователь может отключить (раньше для IE это можно было политиками запретить но для хрома/edge на сколько я знаю этот функционал отсутствует) или запустить браузер со своим отдельным профилем

    Можно мониторить заголовки окон, тоже простым приложением, будет видно что в браузере открыто окно с заголовком, в котором обычно название сайта (но не ссылка) активной вкладки
    Ответ написан
    Комментировать
  • Совет по организации NAS?

    @rPman
    Важнейший вопрос тут - для каких задач будет использоваться NAS.

    1гбит будет давать до 110мбайт/сек, для hdd особого смысла выше нет (только если это будет бесплатно, что обычно не так, так как 2.5Gb коммутаторы все еще дорогие), так как высокие скорости (200мб/с) достигаются только при линейном копировании больших файлов и при отсутствии фрагментации... во всех остальных случаях скорость может упасть 10кратно... и не утилизирует сетевой канал.

    Второе - по какому сетевому протоколу будет обеспечиваться доступ к файлам... Например самые быстрые - iscsi/nbd/aoe (потому что позволяют кешировать локально даже записи, ОС знает до каких пор), но они только блочные устройства транслируют... дальше идет linux nfs и где то в конце майкрософтовский smb (он на мелких файлах может чуть ли не кратно ронять скорость)

    Теперь важный ответ про RAID, никогда не используйте дешевые 'аппаратные' raid контроллеры (не серверные, те что с кешем записи и батарейкой), пользы они вам не принесут никакой а вот гемороя административного добавят (например вендорлок, при смене материнки/контроллера пересобирать рейд). Пользуйтесь программным рейдом, он есть как в windows штатно (даже в десктопных ОС если pro версия) так и конечно в linux (mdadm или штатная фича файловых систем btrfs/zfs).

    По поводу конфигурации... подбирайте корпус mini pc что бы диски были внутри и подключались по своему штатному коннектору, в вашем случае sata, так как внешние usb контроллеры могут добавить багов (например не будет виден smart дисков или уберут поддержку trim для ssd) и главное, конструктивно эти наружу торчащие провода можно задеть и сбросить диски 'со стола'... NAS должен быть удобным и монолитным, и 'с ручкой для переноса'.

    p.s. покупать аппаратный raid с корпусом (домашние ревизии) имеет смысл когда есть желание получить готовый результат без усилий, за это и идет доплата в цене, по сравнению со своей сборкой, выбирайте либо вы собираете либо за вас. Ну и функционал готового рейда обычно лимитирован софтом, который там запущен, когда как свой linux - максимально полнофункционален но конечно не так удобен, плюс никто не мешает и тут такой же софт поставить с UI.
    Ответ написан
    4 комментария
  • Truenas, пул zfs, возможно ли будет вытащить данные если диск подключить к другому компьютеру?

    @rPman
    Нет, сами пулы не имеют никаких настроек прав доступа (собственно поэтому шифрование и используют, что бы защититься от этого), на новом компьютере можно будет получить к ним доступ
    Ответ написан
    Комментировать
  • Как проверить текст на осмысленность?

    @rPman
    А это считается осмысленным?
    Родился на улице Герцена, в гастрономе номер двадцать два. Известный экономист, по призванию своему — библиотекарь. В народе — колхозник. В магазине — продавец. В экономике, так сказать, необходим. Это, так сказать, система… э-э-э… в составе ста двадцати единиц.
    Ответ написан
    Комментировать
  • Как обнаружить высокое потребление CPU?

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

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

    Но, так как часто бывает, процесс большую часть времени чего то ждет, например IO операции с базой, сетью или диском, то таким образом не получится вычислить нагрузку именно на процессор. Поэтому, либо перед каждой такой операцией отключаешь счетчик (т.е. снова засекаешь время начала и конца) либо используешь средства операционной системы, для определения нагрузки на процессор конкретным процессом/потоком... они для каждой ОС и фреймворков/языков программирования - свои
    Ответ написан
  • Хватит ли имеющегося БП для новой видеокарты?

    @rPman
    Технически его должно хватить
    КПД 80% получаем 520, процессор до 150W, видеокарта 200W, hdd нет (они в пике в момент включения могут 30W брать), кулеры по 10W, все основное потребление идет по линии 12V (там на 3.5V и 5V всего 150 так что процессору так и так хватит), материнки больше 100 не берут.

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

    p.s. я бы попробовал оставить этот БП, держа в голове что необходима его замена 'на вырост'
    Ответ написан
    1 комментарий
  • Полноценная Убунта поверх WSL?

    @rPman
    Главная беда windows, которая многократно ухудшается при использовании wsl - это медленная работа с диском, первая же статья из гугла где проводили тесты
    Methods
    For this experiment, I used Windows Version 2004 build 19035.1000 on a ThinkPad X1 Extreme with 32GB of RAM and a Samsung 970 Evo Plus 1TB NVMe SSD.

    The four tests are:

    yarn build create-react-app: Use webpack and babel to build the basic open source create-react-app. This generates about 40KB of gzipped code.
    yarn build tsnsi: Use webpack and typescript to build a large proprietary application that I work on most days. This generates about 40MB of minimized javascript code. This repo contains just over 100000 files. THANKS node_modules!
    du -sh tsnsi: Calculate disk usage over the 100000 small files in the proprietary project.
    du -sh cpbotha.net: Calculate disk usage over my personal blog’s hugo source files. 4700 files of varying sizes occupying about 780MB.

    In all but one case (du tsnsi on WSL2 NTFS, because the spread was just too great), I ran the test multiple times, and recorded the average time in seconds. After the first run, standard deviation was low.

    In all cases, the built-in Microsoft anti-virus real-time protection was disabled, as that can have a significant effect on IO-based benchmarks.

    Test WSL 1 ntfs WSL 2 ntfs WSL 2 samba WSL 1 lxfs WSL 2 ext4 native linux
    yarn build c-r-a 11.89 63.14 13 7.38 5.8 4.63
    yarn build tsnsi 45.25 263.71 65 31.70 28.75 24.13
    du tsnsi 4.9 70 - 155 (4x) 13.5 8.6 0.19 0.19
    du cpbotha.net 0.24 3.7 0.5 0.074 0.011 0.015
    Числа - время выполнения в секундах, антивирус отключен. Не вижу смысла что то еще добавлять.

    p.s. wsl - отличная идея, 1 версия позволяет работать числодробилкам на процессоре, без заметной потери производительности, 2 версия - позволяет устаналивать драйвера на gpu и запускать приложения числодробилки на видеокартах, сам лично не пробовал но пишут что работает без потери производительности... Считаю это лучший способ постепенно уходить от windows it разработчикам, которые все еще сидят на этой платформе но не имеют никакого опыта и резко все еще опасаются это сделать. Все равно многие вещи через docker там и так уже запускаются, помучавшись с тормозами будет логично выкинуть windows и идти в мир linux,... а там надеюсь наконец и производители оборудования подтянутся.
    Ответ написан
  • Скрипт для передачи данных, в поисках простого решения. кто может помочь?

    @rPman
    ТЗ дано, в целях - простое, про авторизацию не заикнулись...

    Реализация будет состоять из 3 частей:
    1. интерфейс - frontend
    2. серверная часть backend
    3. из-за особенности реализации backend большинством инструментов и веб серверов, регулярные операции делают сторонним скриптом, обычно его запускают средствами ОС (его шедулером), в linux это cron

    Итак, интерфейс из одного окна - окно запроса текста с кнопкой отправки с сообщением о результате, на основе html forms:
    spoiler
    <!DOCTYPE html>
    <html>
    <head>
        <title>Текстовая форма</title>
    </head>
    <body>
        <form action="script.php" method="post">
            <textarea name="text" rows="10" cols="50"></textarea>
            <br>
            <input type="submit" value="Отправить">
        </form>
    </body>
    </html>

    Бакэнд на php это эта же самая страница, но в местах где нужно менять содержимое по логике (где нужно вывести сообщение о результате) ставится <?php ... код ... ?>. Вот пример сохранения введенного сообщения пользователем в файл, имя которого будет содержать номер сессии пользователя и время (timestamp, это сделано намеренно что бы показать проблему именования файла в данной задаче при многопользовательском доступе, если использовать просто timestamp, т.е. время в секундах, то несколько одновременно посланных сообщений заменят друг друга и останется только последнее, в приведенном примере эта проблема сохранится только для одного 'пользователя' т.е. сессии браузера - открытой страницы что даже локально сложно добиться, естественно правильно делать индекс со списком файлов но зачем, задача то простая):
    spoiler
    <?php
    define("STOREPATH","/my_cool_file_database");
    
    session_start();
    
    if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["text"])) {
        // Получаем текст из POST запроса
        $text = $_POST["text"];
        
        // Создаем имя файла: session_id + _ + timestamp
        $filename = STOREPATH . "/" . session_id() . "_" . time() . ".txt";
        
        try {
            // Пытаемся записать файл
            if (file_put_contents($filename, $text) !== false) {
                echo "Успешно";
            } else {
                throw new Exception("Ошибка при записи файла");
            }
        } catch (Exception $e) {
            echo "Ошибка: " . $e->getMessage();
        }
    } else {
        echo "Ошибка: Неверный запрос или отсутствуют данные";
    }
    ?>


    И соответственно скрипт удаления старых сообщений
    spoiler
    <?php
    define("STOREPATH","/my_cool_file_database");
    define("REMOVE_INTERVAL",3600); // интервал в секундах для старых сообщений
    
    // Получаем все txt файлы из директории
    foreach (glob(STOREPATH . "/*.txt") as $file) {
        // Извлекаем timestamp из имени файла
        if (preg_match('/_([0-9]+(?:\.[0-9]+)?)\.txt$/', $file, $matches)) {
            $fileTimestamp = (int)$matches[1];
            
            // Если файл старше часа - удаляем
            if (time() - $fileTimestamp > REMOVE_INTERVAL) {
                unlink($file);
            }
        }
    }
    ?>

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

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

    @rPman
    Регулярные выражения не подходят для анализа html.

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

    Настоятельно рекомендую готовые анализаторы html, они есть подо все популярные и не очень языки и фреймворки. Например для php - штатные или рекомендую simple_html_dom, код будет простым, работать будет очень быстро, все встроено в php или простой include одного файла..
    Ответ написан
    1 комментарий