@nodejs_ru

Страница 419 из 2748
Pavel
11.12.2016
20:29:31
У них там какой-то CDN стоит, где пачка серваков с картинками и я так понимаю, они их чередуют. То есть картинки одни и те же, но, видимо, на каком-то из этих серваков они чуть иначе пожаты и я постоянно ловлю отчёты что картинки поменялись

Andrew
11.12.2016
20:30:16
вероятнее всего да, чуть разные настройки алгоритма сжатия и привет

abc
11.12.2016
20:37:32
Тут opencv поможет

Там вроде были такие алгоритмы сравнения

Google
abc
11.12.2016
20:38:24
Ну а я бы сеточку обучил на это :)

Andrew
11.12.2016
20:40:18
сеточка как вариант да, но в любом случае там вычислительная сложность выше будет алгоритма в лоб, а точность не факт

Vladimir
11.12.2016
20:41:03
https://github.com/mapbox/pixelmatch

Vint
11.12.2016
21:28:17
https://github.com/mapbox/pixelmatch
Ага, и последние коммиты в некоторые файлы с сообщением "throw error on image size mismatch") Но если задача сводится к действительно "одинаковым" картинкам, то похоже на хорошее решение. ImageMagick тоже умеет такое, например.

Vladimir
11.12.2016
21:28:47
Ну там оно под несколько специфичные цели, но посмотреть можно

Тем более если есть предположение что это из за пережатия

Vint
11.12.2016
21:31:56
От пережатия спасёт, сам когда-то подобное внедрял, не помню даже на чём) Но вот любой ресайз/кроп/compose картинки - всё, труба. До гугла и всяких tineye - как до луны.

eugene
11.12.2016
21:34:50
/stat@combot

/stat@combot

Vint
11.12.2016
21:35:09
/stat@combot

Dmitry
11.12.2016
22:32:10
господа, а кто как обновляет схему БД скажем монго дб, при обновлении приложения

скажем у вас релизится клиентам приложение, и нужно чтобы какие-нить поля добавились в коллекцию итд

как вы это делаете от релиза к релизу

Google
Dmitry
11.12.2016
22:32:45
?

Vladimir
11.12.2016
22:34:24
Так схемы то нет

Dmitry
11.12.2016
22:34:56
знал что будет такой вопрос

поэтому я "расширил" вопрос ниже предложением

Vladimir
11.12.2016
22:35:42
В общем подход такой

Можно добавлять все поля как необязательные навсегда

Тогда ничего делать не нужно

Dmitry
11.12.2016
22:38:17
я ща объясню к чему - я это. Вопрос консистенции. Когда я релижу сайтец у себя сам на сервере, в принципе это всеравно, но когда у тебя условно веб приложение, которое использует Компания А, ты ей отгрузил версию 1.0.0 но потом ты релизишься скажем несколько раз и там меняешь данные в бд, потом ребята хотят обновиться а БД поменялась скажем, получается что нужно добавлять как-то данные в коллекции

вот интересен опыт

кто как разруливает

я видел делают по принципу папочку и там скрипты, но видел я тока для SQL

как делается это для монги

Vladimir
11.12.2016
22:39:35
Ну здесь можно сделать тоже самое

Dmitry
11.12.2016
22:39:43
я тут нашел https://www.npmjs.com/package/database-updates

не знаю юзал кто?

Vladimir
11.12.2016
22:40:44
Если речь о софте, который периодически обновляется, то это может непросто

Так как должна быть возможность мигрировать с произвольной версии

Dmitry
11.12.2016
22:41:18
вот серия таких скриптов

на апдейт базы

и тогда можно с версии на версию

Google
Dmitry
11.12.2016
22:41:40
просто мало инфы вообще об этом

мало кто говорит вообще об этом

Pavel
11.12.2016
22:42:56
ну нужно чото типа привязки скриптов миграции БД к версиям релизов

Dmitry
11.12.2016
22:46:19
вот тоже к этому склоняюсь

Pavel
11.12.2016
22:51:48
я бы делал по-нубски примитивно

На старте приложения проверяется формат БД и если он не тот, который нужен, то сразу на горячую и исправляется

Надёжно как топор

Vladimir
11.12.2016
22:53:10
Слишком сложно проверять формат

Pavel
11.12.2016
22:53:17
Но кому-то не подойдёт из-за увеличенного на пару сотен миллисекунд времени запуска

Vladimir
11.12.2016
22:53:45
Тоже сложно

Pavel
11.12.2016
22:53:51
эээ чем?

Vladimir
11.12.2016
22:54:12
Ну нужно проверить каждое поле на присутсвие по сути

Pavel
11.12.2016
22:54:30
Нет, надо проверить таблицы и типы столбцов

Vladimir
11.12.2016
22:54:39
Да, именно

Pavel
11.12.2016
22:54:46
Ну и что тут сложного?

Это просто писать долго

Vladimir
11.12.2016
22:55:09
Слишком много писать да

Поэтому вместо это сохраняют версию схемы

Pavel
11.12.2016
22:55:20
Но и то по первому разу

Google
Pavel
11.12.2016
22:55:31
Версию схемы?

Vladimir
11.12.2016
22:55:47
Да, в базе записана текущая версия схемы

Берется версия из базы и версия из кода

И выполняются все миграции между ними

Pavel
11.12.2016
22:56:09
Ок, ты проверил, она не та, которая нужна, твои действия?

Admin
ERROR: S client not available

Pavel
11.12.2016
22:56:28
Ну то есть у тебя всё равно написан миллион скриптов миграций

Vladimir
11.12.2016
22:57:11
Да, но по крайней мере там код который реально нужно выполнять

Pavel
11.12.2016
22:57:26
не понял твою мысль

а бывает другой код?

Vladimir
11.12.2016
22:57:52
Если проверять по одному полю, то будет много лишней работы

Pavel
11.12.2016
22:58:05
для меня или машины?

Vladimir
11.12.2016
22:58:07
Например, когда ты в реальности добавил 10 полей за раз

Pavel
11.12.2016
22:58:31
Для меня работы не меньше, чем скрипт миграции написать

а машинное время оно для того и создано чтобы работу выполнять

Vladimir
11.12.2016
22:58:58
Тем более, поля могут зависетб друг от друга

И проверять их нужно в определенном порядке

Pavel
11.12.2016
22:59:11
типа foreign key?

Vladimir
11.12.2016
22:59:15
Нет

Google
Pavel
11.12.2016
22:59:22
а как?

Vladimir
11.12.2016
22:59:34
Допусти мы хотим добавить поле A, в него прописать какое то значение по дефолту

Pavel
11.12.2016
22:59:42
так

Vladimir
11.12.2016
22:59:57
Затем мы хотим добавить поле B, и прописать в него по дефолту то же, что и в A

Pavel
11.12.2016
23:00:03
так

Vladimir
11.12.2016
23:00:24
Соответственно, поля нужно всегда проверять именно в таком порядке

И порядок этот поддерживать руками

Pavel
11.12.2016
23:01:55
Ну а в скриптах миграции как-то решена эта проблема?

Vladimir
11.12.2016
23:02:38
В том что каждая миграция пишется отдельно и потому не трогается, и все они пишутся в конретном порядке

Pavel
11.12.2016
23:03:15
Ну ты проверки тоже пишешь в каком-то порядке

И тоже отдельно — по версиям приложения

Разве нет?

Vladimir
11.12.2016
23:04:06
Просто создается много дополнительных состояний, которые нужно проверять

Например, проверяешь, что есть поле B, но нет поля A

Хотя в реальности если есть B, то A уже должно быть

Но в принципе можно сделать примерно похожее поведение

Страница 419 из 2748