
Max
12.07.2018
23:14:48
еще раз - покажи мне пункт в PCI DSS про хранимые процедуры
там, где про обеспечение доступа через программные способы, есть пример про хранимые.
рекомендации использовать только их, точно нет, тут не поспоришь.
поспорить можно разве с тем, что без хранимых обеспечить невозможность изменения запроса сложнее, чем с ними.
ок, ты прав

Sergey
12.07.2018
23:14:56
ну вот у меня есть выборки которые я бы записал как:
from('appointments')
->select(someRepresentation())
->where(
meetsSomeCondition($someStuffForCondition),
meetsAnotherCondition(),
when($predicate, yetAnotherCondition())
)

Max
12.07.2018
23:15:49

Sergey
12.07.2018
23:15:52

Google

Sergey
12.07.2018
23:16:14
просто это никак не относится к той теме которую я хотел обсудить. Вообще.

Evgeniy
12.07.2018
23:16:30

Sergey
12.07.2018
23:16:52

Evgeniy
12.07.2018
23:16:53
попытку сделать подобное сделали в laravel через scope но так себе и там целая orm а не queryBuilder
типо условия написать и реюзать

Sergey
12.07.2018
23:17:46
я понимаю о чем ты)
https://www.thegreatcodeadventure.com/composable-query-builders-with-arel-in-rails/ - меня вот эта штука заинтриговала немного

f4rt~
12.07.2018
23:18:25

Sergey
12.07.2018
23:18:52
типо условия написать и реюзать
у меня еще куча запросов:
- интроспеция запросов (что бы потом гидраторы генерить и прочие штуки)
- что бы не зависил от всяких там абстракций над коннекшеном, PDO и т.д.
- элиасы - я не хочу их прописывать. Это сильно усложняет композицию
говно

f4rt~
12.07.2018
23:19:26
а мне нравки на чтение

Sergey
12.07.2018
23:19:36

Google

f4rt~
12.07.2018
23:19:49

Sergey
12.07.2018
23:20:01
но все ж это немного не то
из средненьких билдеров которые тоже интересны есть еще knex
http://knexjs.org/
но пока хз.... я плохо понимаю чего хочу. точно хочу интроспецию (что мы хотим выбрать и типы)
но в php такие штуки либо выходят многословными либо медленными (парсинг выражений)

f4rt~
12.07.2018
23:24:27
а ты так и не продолжил ту штуку с регулярками?

Evgeniy
12.07.2018
23:24:31
в scala любят свои dsl придумывать и целые языки поверх )

Sergey
12.07.2018
23:25:08

Evgeniy
12.07.2018
23:25:33
но я на скала не писал (

Sergey
12.07.2018
23:25:39
чисто теоритически имя FFI можно просто rec2 подключить и пробовать генерить php

f4rt~
12.07.2018
23:25:56
а я не нашел в себе духу даже попробовать)

Sergey
12.07.2018
23:26:14

f4rt~
12.07.2018
23:26:37
понятненько,интересно)

Evgeniy
12.07.2018
23:27:26
слушай тут за cohesion вопросик

Sergey
12.07.2018
23:27:56
а ты так и не продолжил ту штуку с регулярками?
я на прошлых выходных запилил простенькую либку для комбинаторов парсеров, вот на этих думал запилить полноценный парсер JSON (что бы ту же грамматику умел что пример на HOA) и глянуть насколько это медленнее HOA
но у меня мотивация для этого была.... несколько иная нежели у Кирила

Google

Evgeniy
12.07.2018
23:28:53
помимо того что cohesion это внутреннее зацепление в модуле, оно еще относится к тому чтобы модуль был нам полезным а не просто творил неведомую хуйню которая нам не нужна и без которой может жить приложение
ну например нам модуль по работе с гитом, а он помимо работы с гитом заваривает кофе

Sergey
12.07.2018
23:29:43

Evgeniy
12.07.2018
23:29:47
и причем там внутри все это зацепленно жеско фиг развяжешь будет большая связанность

Sergey
12.07.2018
23:30:14

Evgeniy
12.07.2018
23:30:21

Sergey
12.07.2018
23:31:07
но тут есть опасная штука - есть же логический кохижен (это чуть-чуть лучше случайного) где вроде как все штуки в модуле выполняют одну задачу но клиент выбирает что делать через интерфейс.
И да, я сомневаюсь что может быть функциональный (самый высокий) уровень кохижена на всех уровнях приложения. Это недостижимый идеал

Evgeniy
12.07.2018
23:32:26
по формальным критериям я даже попробовал дать определение оно не совсем cohesion но то как я его его понимаю
количество элементов в модуле - количество элементов связанных с нашей предметной областью < епселент при епселент стремящемся к 0 это хорощая связанность
что нет мертвого кода который нам нах не нужен

Sergey
12.07.2018
23:33:03

Evgeniy
12.07.2018
23:33:28
ну я и говорил что по кохижену надо знать что ты хочешь в итоге
чтобы правильно его оценивать

f4rt~
12.07.2018
23:33:46
Жень, ну что за глупостями ты сейчас занимаешься?)

Evgeniy
12.07.2018
23:33:58
ото с точки зрения кода все связано в клубок в "модуле" пакете, а на самом деле нафиг не нужно

Sergey
12.07.2018
23:34:09
ну семантику метриками не выразить, получается лишь простые штуки вроде "насколько полно все методы юзают все проперти класса"

Evgeniy
12.07.2018
23:34:17

Sergey
12.07.2018
23:34:36

Google

Evgeniy
12.07.2018
23:34:57

Sergey
12.07.2018
23:35:32
https://pdfs.semanticscholar.org/43cf/09ca4fa0c8bdd346c6fc63487cbf91cd99bf.pdf

Evgeniy
12.07.2018
23:35:36
если серьезно то, в инете дофига мнений

Sergey
12.07.2018
23:35:37
можешь это почитать для начала
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.61.5472&rep=rep1&type=pdf
или это

f4rt~
12.07.2018
23:36:20

Admin
ERROR: S client not available

f4rt~
12.07.2018
23:36:30
кохижен это то насколько твой код связан с терминами 'бизнеса"

Sergey
12.07.2018
23:36:50

f4rt~
12.07.2018
23:36:53

Sergey
12.07.2018
23:37:47
короч ладно, про билдеры не выйдет обсудить... Билдер Кири обязательно гляну, пойду дальше херней страдать

Evgeniy
12.07.2018
23:39:18
хорошо а я пока почитаю про метрику cohesion
потому что те варианты что я видел это просто цифры с потолка
типо как часто идет обращение к this и прочей лабуде если в контексте php

Sergey
13.07.2018
07:26:11
шутки за 300
было бы грубо для обстоятельств не запечатлеть это)

Rg
13.07.2018
09:28:31
народ
ккто-то работал с jsonapi + zend 3 (или хотя бы доктрина)?
не могу вникнуть как эту штуку готовить

Sergey
13.07.2018
09:37:24

Rg
13.07.2018
09:39:25
раздельно
в смысле? делать jsonapi как прокси после зенда?

F01134H
13.07.2018
09:54:52
А зачем в Exception в конструкторе аргумент Throwable $previous?

Google

F01134H
13.07.2018
09:55:04
что ща предыдущее исключение
непонятно

Bohdan
13.07.2018
09:55:34
цепочки исключений
типа как сф бросает иногда

F01134H
13.07.2018
09:56:20
не понимаю зачем это и как работает

Sergey
13.07.2018
09:57:04
и прикрепил предыдущее в цепочку
и так можно конкретизировать проблемы

F01134H
13.07.2018
09:57:19
понял, спасибо

Sergey
13.07.2018
09:57:19
это как пример.
редко юзается но бывает полезным

F01134H
13.07.2018
09:57:44
что то типо декорации исключений
Чисто ради прикола, можно как то сократить такой код?)
$fromCollection = new Collection();
$toCollection = new Collection();

Maksim
13.07.2018
13:26:53
use Collection as C;
$f = new C;
$t = new C:

Sergey
13.07.2018
13:27:47

Bohdan
13.07.2018
13:27:55
class Collection {
public static function c() {
return new self;
}
}
$f=C::c();
правда, символов больше

F01134H
13.07.2018
13:28:10

Sergey
13.07.2018
13:28:13

Maksim
13.07.2018
13:28:35
правда если бы я такой код увидел, в окно бы выбросил)