Rbot: парсер данных с госуслуг

На днях довелось попробовать в работе специализированную платформу для написания «роботов» — RPA Bot. По сути это хорошо документированная надстройка на Selenium. В базе позволяет писать «роботов» на Python, Node.js и PHP. На сайте ОЧЕНЬ хорошая документация по всему функционалу с примерами, а потому роботов писать гораздо приятнее чем при использовании «чистого» Selenium. Это плюс. Из минусов — отсутствие версии под Linux и конский ценник. Ну если первое разработчики усиленно пилят, то второе лично мне фиолетово (босс платит 😉 )

В ходе реализации очень понравилась функция save_url_to_file, аналога которой в Selenium я не нашел в своё время, а потому приходилось изобретать велосипед. Ну скорее всего конечно это то-же «велосипед» (ну логично, проект то на основе Selenium), но сделанный «штатно». К сожалению функция не отрабатывает, если закачька происходит с использованием Redirect 301. потому в случае необходимости можно воспользоваться таким вариантом закачки:

Share
0

Yandex Map: отображение меток в зависимости от масштаба карты

Работал давече с плагином HeatMap для яндекс карт. Всё хорошо, но один нюанс — невозможно навесить эвент на клик по точке карты. Ну или не нашел как. Пришлось задействовать «финт ушами» — при достижении определенного приближения, принудительно отрисовывать поверх точек heatmap свои «кликабельные» точки. В результете родилось нечто подобное:

Share
0

PixiJS: игра «жизнь» продолжение

В ходе наблюдения за жителями, заметил, что не очень хорошо смотрится рождение нового жителя, а именно он «рождается» в случайном месте карты. Не порядок. Пусть он рождается рядом с «мамой». Для этого изменим код генерации «нового жителя», чтобы можно было за ранее передавать координаты рождения жителя:

И соотвественно «рождение» жителя:

И картинка стала выглядеть уже интереснее: жители стали «кучковаться», что логично — в тех местах где жителей больше они и рождаться стали чаще

Второй момент. Нужно как-то выделить возраст жителей. Может быть сделать более «старших» чуть толще?

Еще нашел ошибку, оказывается не все жители умирали по достижении 120 лет. Поправил:

После этого жители стали стремительно вымирать после примерно 30-50 прошедших «лет» и на «планете» остались одни трупы:

Гнетущее впечатление, планета заваленная трупами.. Всё таки сделаю чтоб они убирались при смерти, пришлось серьёзно переписать логику, избавившись от «теневого» массива

Осталось придумать что-то, что бы позволило не вымирать населению? Может быть повысить «рождаемость»? Пусть иногда рождаются двойни-тройни?

Не помогло. Нужно разрешить рожать от 16 лет до 55. Плюс не нравится мне, что умирают жители строго по дистежении 120 лет. А если сделать что умирать будут чем больше лет начиная от 70, тем чаще?

Уже выглядит красивее, но всё равно жители вымирают..

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

Вот теперь население стабильно стало расти. Теперь сделаем так, чтоб дети рождались только в роддоме:

В итоге получили:

Share
0

Pixi.js: игра «жизнь»

Продолжаю на досуге изучать 2D движек для работы с графикой на javascript. Решил написать игру «жизнь» со следующими правилами:

У каждого жителя есть возраст,пол и профессия.

  • Жители двигаются по всему полю хаотично
  • При достижении возраста 120 лет житель умирает
  • Если два жителя сталкиваются между собой и они разного пола от 18 до 50 лет, тогда они рожают ребенка

Сначала определим объекты карты:

Зададим переменные для игры:

Напишем процедуры генерации зданий и жителей:

Создадим сцену и запустим время:

Share
0

Pixi.js : первые шаги

Pixi.js — это движёк 2D графики на JavaScript. Позволяет использовать WebGL или Canvas если первый не доступен.

Ну что, попробуем его в действии. Нарисуем 2000 кружков и попробуем их подвигать.

Подключим движёк через CDN:

Обьявим массив кружков, определим размер экрана:

Инициируем экран приложения:

Нарисуем 2000 кружков и поместим эти обьекты в массив, чтобы дальше с ними играться:

Далее используем класс ticker для периодических действий с кружками. По умолчанию класс эвент класса выполняется 60 раз в секунду. Что делаем в эвенте? Пробегаемся по массиву кружков и двигаем их. Если кружок выходит за пределы экрана, то передвигаем его случайным образом вверх экрана. Бонусом выведем FPS:

В результате получим движущиеся кружочки с разной скоростью

Share
0
1 5 6 7 8 9 54