PHP: интересное поведение сложения чисел типа float

Был немножно удивлен сегодня, когда пытался сложить два числа типа float обычным оператором +. Например сложение чисел вида 59.86601 + 0,01 успешно выполнялось, а 59.86601+0,001 уже нет. Т.е. результирующее число оставалось прежним. Оказывается для точного сложения чисел, в PHP нужно использовать специальные операторы:

Например:

1С: Автоматическое сохранение данных на форме

Часто бывает ситуация, что необходимо во внешней обработке какие-то реквизиты позволять пользователю сохранять. Классический вариант — сохранять данные в пользовательских настройках, или придумывать иное место хранения. Но для этого нужны телодвижения со стороны программиста. С недавних пор (ну как с недавних, лет 5 уже 😉 ) , есть уже штатный способ, встроенный в платформу:

Автоматическое сохранение данных»В свойствах формы выбираем «Автоматическое сохранение данных» = использовать:

И далее проставляем в графе «Сохранение» галочки у тех реквизитов, которые необходимо сохранять:

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

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

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

Быстрый поиск разницы файлов

Ну собственно это история одной маленькой победы, которые происходят обычно у ИТишников каждый день 😉

Предыстория: при работе скрипта по заливке данных в БД из файла произошло зависание сервера. Скрипт работал в несколько потоков с одним файлом. Потому определить на каком именно месте файла произошла остановка не представлялось возможным. Удалять уже залитое в БД и стартовать скрипт заново — не вариант, скрипт и так работал двое суток, и терять их снова — ну так себе решение.

Решение №1. «В лоб». Ну думаю доработаю скрипт так, что если данные уже есть, то просто пропускаем. Т.е. перед вставкой выполняем проверку функцией вида:

И без проблем дозальем то, чего нет в БД. Да не тут то было, оказывается операция select в этом случае весьма дорогостоящая, и т.к. в БД записей порядка 600тыс, и индексы проставлены на ls и period корректно, но всёж скорость проверки крайне низкая, и т.о. скорость «дозалития» сокращается с двух суток до суток. Ну что собственно не устраивает.

Решение №2. Вдумчивое. Решил было выгрузить ключевые строки (лицевой счет) в файлы: файл ls_in_base.txt — лицевые счета которые уже в БД и ls_all.txt — файл со всеми лицевыми счетами, которые должны быть в БД, отсортировав их командой sort:

Далее воспользуемся Linux командой comm, вычленив уникальные записи файла ls_all которые не содержаться в файле ls_in_base:

И далее уже в скрипте вместо проверки наличия лс в БД при помощи запроса, проверяем наличие лс в БД при помощи in_array:

В результате скорость увеличилась в разы, и БД дозалить удалось в течении часа

Чтиво за последнее время

Взрослое

Релокант 1-5, В момент начала ядерной войны в мир пришла система и перенесла всех жителей во вновь сгенерированный мир куда попали в т.ч. жители других миров которые разрушили свои миры. В целом за исключением некоторых нудных моментов. Оценка 3+/5

Звездный лорд 1-5. В принципе просто перечитка уже прочитанного ранее несколько лет назад. Ну возникла пауза, когда не мог ничего новенького найти ). Оценка 4 из 5

Автократия Гоблинов 1-3. Михаил Усачев. В принципе старая серия, начинал её читать еще несколько лет назад, но тогда не зашла. Сейчас зашла. Оценка 4/5

Кинетик 1-3. Анин А.О. Очередная книга про попаданца в прошлое. В принципе читабельно. Оценка 3 из 5

Хроники Апокалипсиса 1-5. Родион Дубина. Мир пал, на его месте возникли зомби. Главный герой крут и скоро станет еще круче. В принципе интересно. Оценка 4 из 5

Мастер Порталов 1-3. После того как чела сбил автобус, он становится магом и научился открывать порталы в другие миры. Оценка 4 из 5.

Детское

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

Внучка бабы Яги. Екатерина Козина. Внучка проводит каникулы у бабушки, которая оказывается не просто бабушка. 5/5