@prophp7

Страница 562 из 1387
Alexey
24.08.2017
07:41:03
В общем, у меня главная проблема - миграции на каждый тест. тяжеловато становится постепенно (хотя тоже все относительно)
мы перешли на способ с параллельным запуском и копированием файлов когда прогон всех тестов с накатом миграций и данных перевалил за несколько часов

Alexey
24.08.2017
07:41:45
сейчас минут в 15 укладывается

Evgeny
24.08.2017
07:42:14
а что за миграции перед тестами?

Google
Alexey
24.08.2017
07:42:39
ну всмысле подготовки базы, фикстуры и тд

Evgeny
24.08.2017
07:44:14
на постгресе я делал truncate всех таблиц (там он умный кстати, список передаешь он их в правильном порядке очищает), пересоздавать вообще долго, а так 50-80 мс на тест

Андрэ
24.08.2017
07:44:24
ну вот и я про это, что надо очищать а не миграции гонять

Виталий
24.08.2017
08:06:46
Парни, а вопрос о тестировании (конкретнее, Phpunit в Laravel) - как/какую вы БД используете? sqlite в памяти? отдельную тестовую базу? текущую базу с транзакциями? (подразумеваем, что проект работает на MySQL)
Пустая отдельная тестовая БД. Накатываем миграции. Каждый тест чистит данные и прогоняет свои фикстуры. Миграции, пока было не много накатывали каждый тест. Потом оборачивали фикстуры в транзакции и делали роллбэк после теста. Теперь чистим )

Alexander
24.08.2017
08:10:47
мне проще делать через drop table + create table

Виталий
24.08.2017
08:11:13
Это же миграция практически

Alexander
24.08.2017
08:11:14
если схема меняется, то пилим рядом другой sql файл с новой схемой, полученной через экспорт

Evgeny
24.08.2017
08:12:15
а как вы порядок удаления таблиц в mysql соблюдаете кстати?

Яўген
24.08.2017
08:13:26
так чем не устраивает вариант после каждого сценария автоматически чистить измененные таблицы?

Alexander
24.08.2017
08:13:28
я просто вызовы drop table в нужном порядке ставлю. у меня редко бывает такое, что в одном тесте используется более трех таблиц

поэтому в методе setup сначала идут вызовы drop table, потом create table. если тест упал, то у меня остаются данные, на которых тест не прошел

Яўген
24.08.2017
08:15:02
дропать и создавать - очень медленно

Google
Яўген
24.08.2017
08:16:01
кстати, delete * еще быстрее

Alexander
24.08.2017
08:17:02
на SSD норм. разница в выполнении с тестом в котором есть drop и без такого теста -- ~0.5 скунды

Яўген
24.08.2017
08:17:37
разработчики тоже должны програть тесты...

Alexey
24.08.2017
08:17:47
это же очень долго

Evgeny
24.08.2017
08:18:17
а разработчику все не надо прогонять, можно отдельно запустить несколько связанных тестов

Яўген
24.08.2017
08:19:09
ну, ваше решение

Alexander
24.08.2017
08:20:26
вообще, на мой взгляд, если очень много тестов зависят от БД, значит что-то пошло не так в архитектуре

ну или в проекте около сотни таблиц

Виталий
24.08.2017
08:23:17
Кажется, количество интеграционных тестов зависит от количества сценариев использования, а не от архитектуры. Или вы через БД тестируете компоненты?

Alexander
24.08.2017
08:25:26
через бд я тестирую только слой взаимодействия с бд -- репозитории в основном

для всего остального меняю репозитории работающие с бд на memory и забиваю оперативку

еще вариант можно поднять инстанс сервера бд у которого вместо записи на физ. диск будет запись в такую штуку https://www.cyberciti.biz/faq/howto-create-linux-ram-disk-filesystem/

Андрэ
24.08.2017
08:27:16
ну к примеру, при опреденном обращении к одному роуту, по событию должна идти запись в одну из таблиц. вот и проверяю в бд прямо

Ягнёнок
24.08.2017
08:27:25
Здрасти

Kirill
24.08.2017
08:27:51
приветики

Ягнёнок
24.08.2017
08:28:08
Ребят Чем парсить html страницу, которая меняет селекторы раз в несколько часов?

$iD
24.08.2017
08:28:44
symfony/dom-crawler

Ягнёнок
24.08.2017
08:29:13
symfony/dom-crawler
Щя чекну сяп

Google
Андрэ
24.08.2017
08:29:48
а какая разница чем парсить страницу? меняет она селекторы или нет, что, в чем разница?

Alexander
24.08.2017
08:29:55
Какая разница чем парсить. У тебя проблема в том что селекторы меняются раз в несколько часов, а не в том "чем парсить"

Виталий
24.08.2017
08:30:26
через бд я тестирую только слой взаимодействия с бд -- репозитории в основном
Мы также, но вот сущностей у нас полторы сотни. Таблиц, соответсвенно еще больше. Вот мы и уперлись в скорость удаления/создания таблиц.

Alexander
24.08.2017
08:31:19
ну к примеру, при опреденном обращении к одному роуту, по событию должна идти запись в одну из таблиц. вот и проверяю в бд прямо
ну а если для тестов в DI зарегать вместо слоя работающего с бд, слой, работяющий с памятью в качестве хранилища? можно будет уже потом не в бд проверять, а в памяти

Борис
24.08.2017
08:32:00
Парсить HTML на страницах это неуважение к брату :( У тех кого вы парсите точно АПИ нету?

Alexander
24.08.2017
08:32:41
Парсить HTML на страницах это неуважение к брату :( У тех кого вы парсите точно АПИ нету?
ну раз селекторы меняют, значит, поди, не хотят делиться контентом. а кто-то его очень хочет)

Ягнёнок
24.08.2017
08:33:53
а какая разница чем парсить страницу? меняет она селекторы или нет, что, в чем разница?
Я просто знаю как парсить через выбор селектора А как без них не знаю

Alexander
24.08.2017
08:33:57
такое часто можно встретить у букмекиров. Есть такое понятие "Вилки", это когда на разнице коэф в разных конторах, пожно поставить так что при любом раскладе будет профит.

Букмекеры меняют html чтобы их не парсили

Alexander
24.08.2017
08:34:39
Или к примеру бесплатные списки прокси. Там тоже часто можно встретить защиту от парсинга в таком виде.

Андрэ
24.08.2017
08:36:19
Я просто знаю как парсить через выбор селектора А как без них не знаю
если меняют код для защиты от пасинга, то серебрянной пули нет. ни селекторы, ни регулярки (скорее всего) не помогут

Андрэ
24.08.2017
08:36:34
Хотя сильно зависит от ситуации. может меняют только селекторы, тогда регулярками можно поработать

Яўген
24.08.2017
08:36:36
одним из преимуществ микросервисной архитектуры, кстати, указывают то, что тесты для каждого сервиса обособлены и проходят горааааздо быстрее

Alexander
24.08.2017
08:37:41
но там часто порт картинкой сделан)

Alexander
24.08.2017
08:38:19
Я просто знаю как парсить через выбор селектора А как без них не знаю
информация в селекторах статичная? или она тоже меняется постоянно?

Ягнёнок
24.08.2017
08:38:28
не меняется только структура

Андрэ
24.08.2017
08:38:54
если ты глазами надешь какие-то закономерности, как инфу получить со страницы, то скорее всего это можно запрограммировать

Google
Alexander
24.08.2017
08:39:12
Alexander
24.08.2017
08:39:37
Alexander
24.08.2017
08:39:53
не меняется только структура
что значит структура? OCR ?

Alexander
24.08.2017
08:40:03
а

Admin
ERROR: S client not available

Alexander
24.08.2017
08:40:15
не учел, что там могут быть в hidden

и вылезут лишние символы тогда

Alexander
24.08.2017
08:40:37
strip_tags
и получится 192.168.162.324.034.145. Так тоже не получится. Там глубже надо смотреть.

Андрэ
24.08.2017
08:40:47
все забывают про старый добрый xpath
у меня он и пользуется в одном проекта парсинггов новосей. прелестная штука

Alexander
24.08.2017
08:42:09
Подскажите, что означает Missing function doc comment?

Alexander
24.08.2017
08:42:09
не меняется только структура
Там цифры? или текст? Я как вариант делал через OCR. Делаешь картинку, и из куска картинки получается цифры.

Sergey
24.08.2017
08:42:18
а по мне так лучше вкорячить CSS Selector -> XPath, все таки с селекторами удобнее работать

Ягнёнок
24.08.2017
08:49:03
Блин как объяснить Есть страница Там <div class="23dkfdjfkfjdfkjw3rfefvkj"> <div class="lwjp234jb53jb25b3j4kb"> </div></div> Внутри <div>ов информация которую нужно вытащить, структура самого сайта не меняется, то есть все блоки всегда на своих местах Вот каким средством можно сделать так что бы выбрать html->body->вот тут выбрать div третий сверху -> и тут div второй например?

Андрэ
24.08.2017
08:49:44
regex

Alexander
24.08.2017
08:50:30
Через XPath /div[2]/diiv[1]/span[2]

Ягнёнок
24.08.2017
08:51:12
Через XPath /div[2]/diiv[1]/span[2]
О, а так можно? :DDDD Ладно, сейчас гляну, сяп

Alexander
24.08.2017
08:52:50
Еще есть :nth-child()

Андрэ
24.08.2017
08:52:55
А что значит "сяп"? Спасиб типа?

Ягнёнок
24.08.2017
08:53:11
Google
Андрэ
24.08.2017
08:53:32
пойду блесну в нашем чатике старперов. сяп

Kirill
24.08.2017
09:03:28
?

‮‮⚡️???⚡️‮‮
24.08.2017
09:49:11
и получится 192.168.162.324.034.145. Так тоже не получится. Там глубже надо смотреть.
да тут может быть еще динамический js и css, который будет на лету скрывать ненужное (или, например дешифровать или добавлять нужное). и если еще можно css с трудом распарсить и применить, то для js уже нужен вирт браузерный движок

Timur
24.08.2017
13:19:15
помогите пожалуйста // Use your knowledge of strlen(), substr(), and rand() to // print a random character from your name to the screen. $name = "Timur"; $part= strlen($name)-1; print $part; $if=substr($name,rand(0,$part),5); print $if; $og=rand(0,$part),5); print $og;

Alexander
24.08.2017
13:20:44
ну и с чем помочь то?

Андрэ
24.08.2017
13:21:13
Я думал, человек не дописал просто

А он и молчит дальше

Timur
24.08.2017
13:22:35
что-то неверно, не пропускает задание, с пометкой Oops, try again. The random output you printed from your name should be a letter.

Андрэ
24.08.2017
13:23:08
rand возвращает число. Все ок

$og=rand(0,$part),5); это вооще работает?

Timur
24.08.2017
13:28:22
нет parse eror какой-то

Андрэ
24.08.2017
13:28:29
странно

Страница 562 из 1387