Парсинг без единой строчки кода
Сегодня
Полная статистика будет доступна после того, как публикация наберет больше 100 просмотров.
Парсинг без единой строчки кода
И так ребят, возможно вы слышали такое выражение как парсинг сайтов. Но не все знают что это, поэтому предлагаю в этом разобраться.
И да, в этой статье не будет ни строчки программного кода - только теория.
И так определение парсинга гласит, что это автоматизированный сбор неструктурированной информации, ее преобразование и выдача в структурированном виде. Звучит как обычная обработка данных, например какой-нибудь бдшки. Но по факту это используется как воровство контента разного типа с сайтов.
Но вы наверняка думаете, что невероятно сложно. Ведь для этого нужно иметь доступ к базе данных и тд. НО ЭТО НИХУЯ НЕ ТАК достаточно просто посмотреть код элемента через браузер, найти нужный блок, узнать его класс и спиздить его содержание.
Кому это нужно?
Приведу банальный пример. Чтобы написать эту статью я изучал различные уроки и источники, а мог бы просто скопировать текст с какого-нибудь ноунейм сайта и не париться. Только в данном случае парсинг будет проблемно применить, а вот если бы я делал это на свой веб-сайт - было бы легко спиздить какую-нибудь статью.
Другой пример, все вы знаете что такое сайты с 18+ контентом. И неужели вы думаете, что все они заключают договора со студиями или сами все снимают. Нет, они просто парсят контент с сайта со схожим контентом.
Ну или ценовая "разведка". Такие сайты как “Wildberries” или “Lamoda“ свободно предоставляют доступ к ежедневным объемам продажи. И если мне нужно узнать какой сейчас ходовой товар, то я могу просто написать парсер на эти данные и все знать.
Path Of Despair, quest system
Всем привет.
Предыдущий пост набрал довольно-таки много отзывов, да и мне нужна конструктивная критика, поэтому сейчас расскажу вам, как я реализовал систему квестов в Path Of Despair.
Основную задачу, которую я поставил перед собой - создать как можно меньше скриптов, и как можно универсальнее. Мне нужно было, чтобы для создания нового квеста мне нужно было просто создать объект в квест листе, заполнить описание , название, награды и тд в инспекторе и все. Так-же главной задачей было полностью отказаться от метода Update.
Первым шагом я создал окно с квест-буком. С левой стороны ScrollView с Vertical Layout Group в который помещаются префабы кнопок. С правой стороны все описание квеста(название, информация о квесте, отслеживание прогресса, награда , название награды , количество получаемого опыта и кнопка "complete").
Родительским объектом этого окна я сделал пустышку, в которую поместил Квест лист. Квест-бук - дочерний объект, для того, чтобы при его закрытии, была возможность ссылаться на квест лист.
Не обращайте внимания на сериализацию и модификаторы доступа. Их я переделаю позже, сейчас хочу показать суть.
Начнем со скрипта Quests. Соответственно, данный скрипт висит на объекте в Квест листе.
В ссылках указываем пути к "правой стороне" квест бука, а так-же к объектам отвечающим за обновление квест бука( чуть дальше покажу ), появлением сообщения на экране(MessageCanvas) , панели с наградой (RewardTooltip) и ссылкой на инвентарь(для проверки на наличие нужного предмета по квесту).
В этом скрипте вся необходимая информация по квесту. Название, информация, награды, отслеживание прогресса, выбор типа квеста ( пока-что это убийство мобов, или поиск предмета), а так-же название сохранения.
На старте проверяем активен квест или нет, а так-же ищем инвентарь.
Дальше идет 2 проверки. Первая проверяет есть ли в инвентаре необходимый предмет и возвращает true или false. Вторая проверяет больше или равно количество убитых монстров по отношению к нужному количеству по квесту.
Тут только 1 метод, но, пожалуй самый главный. Данный метод срабатывает при нажатии на кнопку в "левом столбце" квест бука. Т.е. своеобразный выбор квеста из перечня.
При выборе квеста(нажатии на кнопку) - подставляется вся информация о квесте в необходимые части "правой стороны" квест бука.
Тут, самый приятный метод =) Получение награды. Метод срабатывает при нажатии кнопки "Complete".
Проверка есть ли место в инвентаре, если в награду дают предмет. Если место есть и предмет помещен в инвентарь - обнуляем все значения по умолчанию , закрываем и выключаем квест, добавляем экспу за выполнение и выдаем надпись о полученном предмете и завершенном квесте.
Последняя часть самого большого скрипта на сегодня - сохранение.
Все что нужно сохранить это 1 float значение - количество убитых монстров на данный момент и bool переменную включен или нет скрипт. Все остальное автоматически подставиться при нажатии на кнопку выбора квеста.
Второй скрипт - QuestRefresher.
Те-же самые ссылки, необходим для того, чтобы после окончания квеста можно было легко очистить "правую сторону" квест бука. Закрыть панель с информацией о награде, убрать информацию о ненужном квесте и отключить кнопку "complete".
Используем метод Refresh() когда нам удобно - при открытии квест бука. Открывается окно, где необходимо выбрать нужный квест. При выборе вся информация обновится и подставиться в нужные места. Никаких Update.
Третий скрипт - QuestHelper(другого названия не придумал =) ).
Вешается на цель квеста. Указывается в инспекторе название квеста, а в методе смерти моба - вызывается метод AddQuestComponent() и в необходимый квест плюсуется 1 убийство.
Последний скрипт на сегодня - SaveLoadQuests.
Вешается на любой удобный объект, который не удаляется при переходе между сценами.
Весь квест лист засовывается сюда и вызывается метод сохранения или загрузки при необходимости.
В итоге имеем - для создания нового квеста нужно:
- Продублировать любой объект в квест листе.
- Переименовать его, а так-же настроить информацию, название, награды и тд.
- Продублировать любую кнопку в "левой стороне" квест бука.
- Переименовать ее и в инспекторе указать путь к нужному квесту из квест листа.
Все. При открытии квест бука мы имеем окно, где необходимо выбрать нужный квест. Если он активен - тогда он есть в окне выбора. Если не активен - соответственно нет. В будущем можно создать еще 1 окно , куда будут попадать все выполненные квесты. При выборе квеста - вся информация обновляется автоматически. Для сохранения нам необходимо сохранять и загружать всего 2 значения.
Как-то так... Принимаю любую критику и замечания. Опыта в программировании не много, поэтому уверен косяки найдутся)
Кому интересно посмотреть видео с демонстрацией работы - приглашаю в группу проекта:
Всем спасибо за внимание. Если есть вопросы - задавайте, постараюсь ответить.
Кто нибудь может предложить движок для создания игры The binding of Isaac?
Вот тут на видео чувак делает игру и вроде бы у него легко получается, однако он работает на движке который сделан на Javascript. А я не знаю Javascript, знаю только C#. Можете порекомендовать какой нибудь движочек или лучше самому состряпать? https://www.youtube.com/watch?v=9XtXplVN7fA
Raycast`s Path Of Despair
День добрый. В связи с большим количеством сообщений с просьбами поподробнее рассказать о скриптах в проекте, решил начать небольшими порциями выкладывать маленькие посты, но почаще о внутренностях моего проекта(если это будет кому-то интересно).
Начать я решил с рейкастов.
Если персонаж заходит за предмет окружения с тегом "Environment" и добавленным скриптом VisibleInvisible:
В этом скрипте указывается стандартный материал объекта, и материал с прозрачностью 70%.
Чтобы сильно не грузить сцену кучей проверок в Update было ли соприкосновение с определенным объектом или нет, я решил сделать все это в скрипте персонажа.
На старте находим нашего игрока (этого можно было бы избежать, если бы не было смен сцены, добавили бы просто в инспекторе ссылку на персонажа и все).
В update кидаем луч из камеры в игрока, проверяем на попадание в нужный тег. Заведомо определив GameObject go ( для того, чтобы в дальнейшем включить ему обратно стандартный материал). А дальше проверки если цель изменилась - включаем старой цели стандартный материал, а новой цели меняем на прозрачный.
А в этом скрипте часть логики на видимость противником нашего персонажа.
Если персонаж в зоне агро радиуса, то получаем bool CheckPlayerVisible если true , включается логина достижения цели или атаки, если false - продолжение патрулирования или ожидания.
Метод Agro увеличивает агро радиус у противника, и запускает Invoke на восстановление его к стандартному значению. Стоит, например 2 врага друг от друга на 30 метрах. Агро радиус у обоих 20 метров. Если 1 враг агрится на персонажа, то он запускает метод Agro у соседнего врага, чтобы он тоже "увидел" игрока и соответственно сагрился, если персонаж в прямой видимости( CheckPlayerVisible никто не отменял ).
Ну, как-то так. Если кому-то будут интересны такого рода описания - дайте знать.
Ну и на последок ссылка на группу в вк =) https://vk.com/pathofdespair
Кто хочет быть в курсе всех новостей - добро пожаловать.
Самые популярные языки программирования
Согласно новому исследованию, языки Java и JavaScript являются самыми распространёнными в корпоративной среде, даже несмотря на то, что разработчики предпочитают что-то более новое.Аналитическая компания Cloud Foundry Foundation провела исследование корпоративных разработчиков и руководителей IT по всему миру, и установила, что самыми популярными в промышленности являются языки Java и Javascript.«Бизнесы внедряют многоязычные и многоплатформенные стратегии, чтобы отвечать своим конкретным требованиям», сказано в отчёте. Аналитики определили, что 77% предприятий используют или оценивают возможность работы с Платформами-как-Сервисом. Более 72% применяют контейнеры, 46% — используют или планируют бессерверные вычисления. И при этом 39% компаний применяют все три технологии.Java
Для компаний такая стратегия «гибкости облачных практик позволяет отойти от монолитных подходов и движет мир вычислений к гибкости, портативности и операционной совместимости».Это значит, что Java и JavaScript продолжают набирать свою популярность, однако крупнейшие компании используют и другие языки. В рейтинге, после пары Java расположился C++, C#, Python, и PHP.
В конце самое интересное. Есть один человек, который проводит челлендж в Телеграмм. Сейчас он зарёкся, что выучит один из языков программирования, который выберут люди в голосовании и будет его учить, тем самым делая программы или игры, которые предложат люди, с ежедневным результатом. Также комментирует новости IT, короче годнота подоспела и обещает быть интересной.