Size: a a a

2017 December 01

АБ

Андрей Баратынский in phpGeeksJunior
Но на телефоне не всегда загружаются превьюхи фоток
источник

NK

ID:176141457 in phpGeeksJunior
Перезапусти его , повис он
источник

DK

Dmitriy Kuts in phpGeeksJunior
Андрей Баратынский
Но на телефоне не всегда загружаются превьюхи фоток
это не ботопроблема
источник

DK

Dmitriy Kuts in phpGeeksJunior
а телефона или клиента
источник

АБ

Андрей Баратынский in phpGeeksJunior
Да вот нет
источник

АБ

Андрей Баратынский in phpGeeksJunior
Как будто это связано с каким-то кешем
источник

АБ

Андрей Баратынский in phpGeeksJunior
Выявил закономерность
источник

АБ

Андрей Баратынский in phpGeeksJunior
Я в чат кидаю фотки из определенного списка урлов
источник

АБ

Андрей Баратынский in phpGeeksJunior
Так вот, если боту сказать /сиськи , он вставляет урл в чат
источник

АБ

Андрей Баратынский in phpGeeksJunior
И вот если юзать инлайн режим на телефоне в превьюхах видны иконки тех картинок, которые в чат уже загружались ранее
источник

АБ

Андрей Баратынский in phpGeeksJunior
SarcasmIO
This error usually occurs because you answer the request longer than 7-8 seconds after user type something to your inline bot. Try to answer less than 3 seconds
Спасибо за посощь. В итоге нашел 2 ошибки. 1 в параметрах написал result= а надо было results
источник

АБ

Андрей Баратынский in phpGeeksJunior
А вторая, забыл в архиве взять группу параметров в квадратные скобки
источник

EP

EnterpriseJira PluginDev in phpGeeksJunior
чем в пхп смотреть логи в колоризованном виде?
источник

EP

EnterpriseJira PluginDev in phpGeeksJunior
console
источник

EP

EnterpriseJira PluginDev in phpGeeksJunior
причем желательно лайв
источник

EP

EnterpriseJira PluginDev in phpGeeksJunior
в гитхаб не посылать
источник

EP

EnterpriseJira PluginDev in phpGeeksJunior
люди, помогите программисту, попавшему в эту палеозоя!
источник

EP

EnterpriseJira PluginDev in phpGeeksJunior
хочу ведь простого: запустить через композер в консоле некую тулзу, которя бы помогала бы просматривать логи по ха пе ошибок. В колоризованном табличном виде
источник

EP

EnterpriseJira PluginDev in phpGeeksJunior
раньше юзал кибана и логсташ.
источник

KS

Kirill Sulimovsky in phpGeeksJunior
h0rsie 🐴
Ну давай разбираться.

Согласимся, что речь идет о приложениях или системах, которые развиваются - к ним меняются требования, вносятся изменения, дописываются или удаляются фичи, фиксятся баги и т.д.  Кто-то открывает исходный код и пытается его понять, а иногда и поменять.

Во-вторых, понятно, что мы говорим о достаточно сложных системах, в которых есть отдельное хранилище (БД), выделен пользовательский интерфейс (иначе нам не надо было бы кодировать данные в HTML/JSON), возможно есть внешние или внутренние сервисы (иначе не надо было бы париться об url_encoding).

Когда оба эти условия выполнены, всплывает такая размытая штука как архитектура и "хороший код". Про это написаны тонны книжек, иногда противоречивых, но есть вещи, с которыми согласны очень многие. Например понятия "зоны ответственности", separation of concerns, business rules. Если следовать этим понятиям, и у БД, и у "ядра" приложения,  и у шаблонизатора, и у внешних сервисов есть то, что назвается "контракт" -  свой набор функций (роль как у части единой системы) и интерфейс (API, "язык", на котором часть системы общается с другими частями). БД должна принять запрос в формате SQL и сохранить/выдать данные в точности как сказано в запросе. HTML шаблон должен принять текст и сделать так, чтобы в браузере он выглядел в точночти также, как был получен шаблоном. Сервис принимает команды по HTTP. И так далее. Разработчик, когда открывает исходный код, надеется, что код следует этим общепринятым правилам, что каждая часть системы делает ровно то, что должна, не больше и не меньше, и в любых обстоятельствах. Бизнес-требования меняются. За реализацию бизне-требований отвечает "ядро" приложения. То, что сегодня "заведомо вредная инфа" завтра станет багрепортом от пользователя "ой, я запостил важное сообщение, а ваша система его испортила" или судебным иском от клиента. Поэтому разработчик полезет менять логику бизнес-требований в ядро, а не в шаблонизатор или БД. Вообще, чем меньше частей системы затрагиваются для выполнения одного изменения, тем лучше, т.к. меньше шансов внести ошибку (гуглить Single Responsibility Principle).

Когда ты проектируешь транспортный (или сервисный, если угодно) уровень системы так, что он может работать только с "правильными" данными, ты расставляешь ловушки в коде. Слои системы начинают зависить друг от друга неочевидным образом. Поддерживать и развивать такую систему становится очень сложно, долго и дорого. В итоге это скажется на клиентах и на бизнесе. Так что "конечный результат одинаковый" это заблуждение.
Но ты не ответил на вопрос, а последним наплодил еще несколько.
1. Где можно прочесть про транспортный/сервисный уровень приложения? Гугл знает только о модели OSI, которя никак напрямую к твоему приложению не относится, пробежался по архитектурам DDD (а прочитав про слои еще раз пересмотрел луковую) и тоже ничего не нашел.
2. Про "правильные" или "неправильные" данные у меня должна знать сама сущность, если данные неправильные то конструктор кинет экзепшн, это вообще логика самого бизнеса "правильность" данных. Ну зависимость уровней уже зависит от зависимостей  этих сущностей.  О системе с сильными зависимостями и сущностями, которые не контролируются тоже полностью согласен. Но
3. Я говорил не о правильности данных, а об их безопасности и о конкретном примере с xss атакой и о конечном резульате который увидит пользователь. Ты говоришь о том, что надо всё хранить, но именно выводить безопасно. То есть например у сущностей (у каждой) у тебя будет функция render, которая для определенных свойств будет знать что надо сейчас избавиться от возможных скриптов. Такой подход есть, но не могу понять чем он лучше того, что ты фильтруешь эти же данные на входе? Например в более старых фреймах например (простигосподи) Кохана, есть функция для получения данных из поста которая также чистит данные от xss, ты юзешь для получения данных во всём проекте только её и у тебя нет проблем. В симфони например, рекомендуют юзать оба подхода (соответсвенно на формы на входе и на твиг на выходе).
Если не сложно, можно пример более конкретный?) хочу разобраться в этом вопросе
источник