В таком случае ответ простой. С помощью веб контейнера gtm это сделать невозможно. FB CAPI подразумевает только S2S соединение. Для отправки запросов в CAPI используется ваш приватный ключ от FB. И получается если вы будете отправлять запросы с WEB контейнера то все его смогут увидеть и получить доступ к данным на вашем FB акаунте.
Не совсем понятен вопрос. Существует несколько вариантов реализации FB CAPI. И использование GTM Server Side один из них.
Для меня он удобен тем что как правило у клиента уже установлен GTM Web контейнер и с помощью этого решения можно сделать отправку запросов в CAPI без вмешательства разработчиков.
iOS 14 (а именно ITP) не блокирует выполнение js или работу fb/google analytics.
ITP пытается блокировать cross site tracking.
Conversion API от FB решает проблему межсайтной слежки за пользователем. Так как вы передаете User Agent, IP, fbp, fbс если возможно то и email/phone/имя пользователя и другое. С помощью всех этих параметров FB может точно сказать какой именно пользователь посещал те или иные сайты. Таким образом FB будет знать все тоже самое про пользователя и даже больше чем до появления ITP и похожих технологий.
3) Google больше не может выставлять cookie c вашего сайта на google.com вот более детально про текущий статус www.cookiestatus.com
Вообще почти все описанные проблемы в статье решает GTM Server Side. Вы можете раздавать cookie аналитики со своего домена на 2 года. Это работает и в Safari и Firefox и любых других браузерах с ITP 2.2 и даже обходить CNAME cloaking.
2) Зависит от того какой конкретно домен использован для iframe.
В рамках одного домена можно пользователя обеднить по cookie даже сейчас. Не важно как открывается сайт через iframe или sub домен или просто на прямую.
А касательно того как идентифицировать пользователя с разных девайсов/браузеров. Я обедняю по своим признакам email/phone/ip+user agent. Пользователь мог подписаться на рассылку/зарегистрироваться/рекламный источник передать идентификатор. Это все можно отправлять в аналитику и привязывать к пользователю. Примерно по такому же принципу Facebook определяет пользователя на сайте с пользователем у себя. Вот по этому Facebook пиксель просит присылать им email/phone/ip/user agent.
Погуглив я понял что такая возможость есть уже давно. Раньше я ее не замечал. Возможно ее немного переместили в другое место. В любом случае надеюсь статья будет полезной хотя бы для таких слоупоков как я.
YML был в Yandex Market теперь он появился в Yandex Webmaster и многие думаю об этом не знают. Если написать в своем блоге о библиотеке ее не заметят. И если у кого то возникнет потребность создания даного файла ему не прийдется решать проблему самому.
В связи с тем что теперь выгрузка товаров в яндекс бесплатная я думаю это будет актуально.
А как можно удобно фильтровать данные при вывод если вы используете Serializer + FOSRest?
С учетом того что выводимые данные в таком случае описываются в модели http://jmsyst.com/libs/serializer/master/reference/annotations
> Расскажите как вы будете это делать если у вас один компонент допускает только br в name сущности, другой компонент допускает только b в name сущности. Сущность одна, приемников несколько, но в пропертях вы можете задать только один фильтр. Ваши действия?
Использовать группы фильтрации. Ровно так же как это сделано с валидацией.
> В общем на мой взгляд спорное решение.
Исходя из ваших слов выходит что и Constraint в symfony сделаны не верно.
Я долго работал с Zend и после перехода на Symfony самое первое что мне бросилось в глаза это простота/удобство аннотаций. Раньше я все валидации/фильтрации делал в формах и не могу сказать что это удобно.
>В большинстве случаев жирные объекты с большим количеством полей свидетельствуют о недостаточном уровне декомпозиции.
Да но вы же не можете повлиять на нормализацию сторонней базы данных.
>Что именно мне нужно фильтровать? Вот… серьезно, я не могу придумать.
Например:
— в varchar хранится int и вам именно int нужно передать дальше.
— есть текст с переносами \n вам нужно сделать
— есть html а нужно передать text
— есть datatime а нужно timestamp
Конкретный пример из жизни. У вас есть объект который вы получили с сервиса/базы данных которую редактировать у вас нет доступа. В объекте нужно отфильтровать несколько полей перед тем как передать конечному клиенту/сервису.
Исходя из вашего личного правила что в set/get можно писать фильтрацию и подобные вещи эта проблема решаема. Но куда удобней добавить одну аннотацию к property вместо нескольких строчек кода. Особенно если у вас много таких объектов и они совсем не маленькие. С моим решением как минимум станет легче читать код.
Мою задачу одними Data Transformer`ами не решить. Они работают для форм, но любой объект ими не отфильтруешь. Например есть база данных сторонняя и нету возможности изменять её формат и данные, но получать информацию можно. В моем решении можно отфильтровать любой объект с аннотациями в любой нужный момент.
Думаю Вы просто мало с этим стыкались. Пример: как легко и просто можно фильтровать данные которые вы получаете от пользователя в написаном вами API? Или фильтрация данных из entity когда entity нужно передать в serializer/сторонний api?
Давайте будем им пользоваться и не будем писать новый велосипед.
Какие были трудности
Трудностей не было если вы опытный php разработчик и работаете c Symfony несколько лет, то странно если будет какая либо сложность в написании подобного функционала.
A так получается, что вы просто свой бандл по сути рекламируете
Так и есть. Просто когда я искал подобное решение я ничего не нашел. И решил что б если у кого-то появится подобная задача и он загуглил решение в интернете то мог бы легко найти данную статью и решить свою проблему не писав того что уже написано.
даже особо не объясняя, в чем его прелесть и как им пользоваться.
В статье есть ссылка на документацию где подробно написано как им пользоваться. Я подумал что не стоит дублировать документацию в статью.
Проводил тестирование версии 1.11 выдал критическую ошибку.
Сейчас использую hhvm в коммерческом проекте для обработки данных полученных с бд. Прирост сравнительно с php fpm в 1/3 было 0.9 сек сейчас 0.500 в среднем. Как по мне то очень хороший результат учитывая что никаких дополнительных действий по оптимизации кода не проводилось.
В таком случае ответ простой. С помощью веб контейнера gtm это сделать невозможно. FB CAPI подразумевает только S2S соединение. Для отправки запросов в CAPI используется ваш приватный ключ от FB. И получается если вы будете отправлять запросы с WEB контейнера то все его смогут увидеть и получить доступ к данным на вашем FB акаунте.
Не совсем понятен вопрос. Существует несколько вариантов реализации FB CAPI. И использование GTM Server Side один из них.
Для меня он удобен тем что как правило у клиента уже установлен GTM Web контейнер и с помощью этого решения можно сделать отправку запросов в CAPI без вмешательства разработчиков.
ITP пытается блокировать cross site tracking.
Conversion API от FB решает проблему межсайтной слежки за пользователем. Так как вы передаете User Agent, IP, fbp, fbс если возможно то и email/phone/имя пользователя и другое. С помощью всех этих параметров FB может точно сказать какой именно пользователь посещал те или иные сайты. Таким образом FB будет знать все тоже самое про пользователя и даже больше чем до появления ITP и похожих технологий.
Вообще почти все описанные проблемы в статье решает GTM Server Side. Вы можете раздавать cookie аналитики со своего домена на 2 года. Это работает и в Safari и Firefox и любых других браузерах с ITP 2.2 и даже обходить CNAME cloaking.
2) Зависит от того какой конкретно домен использован для iframe.
В рамках одного домена можно пользователя обеднить по cookie даже сейчас. Не важно как открывается сайт через iframe или sub домен или просто на прямую.
А касательно того как идентифицировать пользователя с разных девайсов/браузеров. Я обедняю по своим признакам email/phone/ip+user agent. Пользователь мог подписаться на рассылку/зарегистрироваться/рекламный источник передать идентификатор. Это все можно отправлять в аналитику и привязывать к пользователю. Примерно по такому же принципу Facebook определяет пользователя на сайте с пользователем у себя. Вот по этому Facebook пиксель просит присылать им email/phone/ip/user agent.
По логике это не должно мешать друг другу.
В связи с тем что теперь выгрузка товаров в яндекс бесплатная я думаю это будет актуально.
С учетом того что выводимые данные в таком случае описываются в модели http://jmsyst.com/libs/serializer/master/reference/annotations
Использовать группы фильтрации. Ровно так же как это сделано с валидацией.
> В общем на мой взгляд спорное решение.
Исходя из ваших слов выходит что и Constraint в symfony сделаны не верно.
Я долго работал с Zend и после перехода на Symfony самое первое что мне бросилось в глаза это простота/удобство аннотаций. Раньше я все валидации/фильтрации делал в формах и не могу сказать что это удобно.
Да но вы же не можете повлиять на нормализацию сторонней базы данных.
>Что именно мне нужно фильтровать? Вот… серьезно, я не могу придумать.
Например:
— в varchar хранится int и вам именно int нужно передать дальше.
— есть текст с переносами \n вам нужно сделать
— есть html а нужно передать text
— есть datatime а нужно timestamp
Исходя из вашего личного правила что в set/get можно писать фильтрацию и подобные вещи эта проблема решаема. Но куда удобней добавить одну аннотацию к property вместо нескольких строчек кода. Особенно если у вас много таких объектов и они совсем не маленькие. С моим решением как минимум станет легче читать код.
Давайте будем им пользоваться и не будем писать новый велосипед.
Трудностей не было если вы опытный php разработчик и работаете c Symfony несколько лет, то странно если будет какая либо сложность в написании подобного функционала.
Так и есть. Просто когда я искал подобное решение я ничего не нашел. И решил что б если у кого-то появится подобная задача и он загуглил решение в интернете то мог бы легко найти данную статью и решить свою проблему не писав того что уже написано.
В статье есть ссылка на документацию где подробно написано как им пользоваться. Я подумал что не стоит дублировать документацию в статью.
Не совсем понимаю вашу критику.
Может кому поможет.
Сейчас использую hhvm в коммерческом проекте для обработки данных полученных с бд. Прирост сравнительно с php fpm в 1/3 было 0.9 сек сейчас 0.500 в среднем. Как по мне то очень хороший результат учитывая что никаких дополнительных действий по оптимизации кода не проводилось.