
Sergey
18.09.2018
08:56:21
если тебе интересно почему может понадобиться итератор а не массив - посмотри другие реализации - например PersistentCollection (или как-то так). где у тебя итератор будет орудовать курсором к базе данных и прочие непотребства делать

Dmitry
18.09.2018
08:58:21
Есть еще разница хранения на физическом уровне, наример, кластеризованный праймари у мускуля.

Sergey
18.09.2018
09:01:17

Google

Sergey
18.09.2018
09:01:46
вот если ты убер ты можешь раз в два года писать статтьи о том как вы героически мигрировали с mysql на postgresql и обратно

Dmitry
18.09.2018
09:03:57
ну зато, имхо, этот героизм подарил постгресу логическую репликацию ;)
постулировал, так сказать

Roman
18.09.2018
09:16:27

Sergey
18.09.2018
09:17:17
Хотя мне было интересно читать как статьи так и ответы разработчиков постгреса

Dmitry
18.09.2018
09:29:12
Ну хз…. как-то подозрительно, убер поныл, что большинство их проблем из-за отстутствия логической репликации, и тут она появилась. Может и совпадение….

Maksim
18.09.2018
09:31:07
ну работали они явно над ней и до нытья) просто катализатор дополнительный, имхо

Sergey
18.09.2018
09:41:06

Dmitry
18.09.2018
09:41:51
Ну с автовакумом были проблемы… из-за долгих транзакциях на слейвах… и еще с чем-то

Sergey
18.09.2018
09:43:15
Я вот лично ещё до необходимости в pgbouncer не дорос, так что...

Dmitry
18.09.2018
09:58:04
А есть кто использует кролика с большим числом топиков на один эксчендж? Ну порядка десятков тысяч топиков. С постоянным bind/unbind, как ведет себя кролик

Maksim
18.09.2018
10:01:47

Google

Dmitry
18.09.2018
10:02:17
топик, т.е. пара десятков очередей забиндило на одном эксчендже пару десятков тысяч топиков

Maksim
18.09.2018
10:03:24
у нас гошная часть такой хуитой страдает, но там счёт на сотни идёт. За тысячи не могу сказать, но с сотнями он даже не задумывается.

Dmitry
18.09.2018
10:04:45
вебсокет? ?

Maksim
18.09.2018
10:05:36
не, всякое фоновое непотребство. а так оно потому, что гошник наугад херачил

Dmitry
18.09.2018
10:11:57
а… я вот думаю как банасировку вебсокета сделать

Maksim
18.09.2018
10:12:42
а модная центрифуга чем не катит? или тебе не только раскидывать надо?

Sergey
18.09.2018
10:13:31
Балансировку лучше рэдисаси да тарантулами
Опять же центрифуга хорошо скейлится вокруг рэдиса

Dmitry
18.09.2018
10:14:17
потому что у нас уже свое налобали, центрифугу сложно внедрять… да и не факт, что она поможет, сообщения кролика же нужно тоже балансировать

Maksim
18.09.2018
10:15:08
а своё на чём, если не секрет? просто любопытство

Dmitry
18.09.2018
10:15:09
типа редис как оркестрация сообщений… хочется избежать, типа на каждое сообщение читать из редиса связь “клиент-инстанс”?
свое на го тоже

Sergey
18.09.2018
11:57:26

Chupa
18.09.2018
11:57:40
Возможно не по теме немного вопрос, но может был у кого опыт добавления параметров в POST запрос при использовании nginx как прокси
с GET все просто, строку дописываем и все

Sergey
18.09.2018
11:58:31
Все можно дополнить на lua)

Dmitry
18.09.2018
11:58:42
без lua не получится

Chupa
18.09.2018
11:59:12
http://ywebdev.com/?p=1
Вот единственное, что пока нашел

Sergey
18.09.2018
11:59:44
Но сама задачка попахивает... Если бы мне нужно было что то докидывать маленькое я б заголовки пихал

Google

Батманов
18.09.2018
13:53:14
Всем привет) объясните, плз, если в бизнес логике не рекомендуется использовать исключения, то какие способы еще есть возвращать ошибки? Делать какой то специальный класс MessageBug и проверять его постоянно на наличие ошибок?

F01134H
18.09.2018
13:53:35
чаво

Roman
18.09.2018
13:54:30
а почему нельзя использовать исключения?
по моему не рекомендуется использовать исключения типа для логики
а не то что вообще не использовать

Батманов
18.09.2018
13:55:42
ну я про бизнес логику имел ввиду

Maksim
18.09.2018
13:55:42
всё смешалось, люди и кони...
можно использовать исключения, если ты понимаешь что делаешь. А можно не использовать исключения и писать, как go портянки if(err != nill), если знаешь, что делаешь.

Roman
18.09.2018
13:56:05

Maksim
18.09.2018
13:56:11
просто зачастую эксепшены используется, как эдакий скрытый goto. Что бы через надцать слоёв улететь наверх.

F01134H
18.09.2018
13:56:21
как по мне, лучше всего писать в процедурном стиле без обработки исключений, все равно пхп сам упадет если что

Батманов
18.09.2018
13:57:25

Maksim
18.09.2018
13:57:44

Roman
18.09.2018
13:57:55
если оно используется именно для этого то да

Maksim
18.09.2018
13:58:07
в таком случае ты можешь взять goto и не обманывать ни себя, ни окружающих)
нет прям жёсткого запрета на использование эксепшенов. Всё ограничено здравым смыслом.
если ты делаешь, к примеру, валидацию, то тебе надо вернуть коллекцию факапов. Ты ж не будешь делать коллекцию исключений, правда?) и не будешь использовать летящее исключение в качестве транспорта?)

Amon Bower
18.09.2018
14:02:45
Чтобы OG:IMAGE генерировался в зависимости от заголовка

Dmitriy
18.09.2018
14:02:57

Maksim
18.09.2018
14:03:03
сделай, 20 строк кода займёт.

Google

Dmitriy
18.09.2018
14:04:23

Maksim
18.09.2018
14:06:19
короче с эксепшенами, как с наследованием: наследование - это плохо. Нихера подобного. Всё зависит от того, на сколько человек понимает что он делает. Если он делает херню, то он будет делать херню при любом варианте.

Батманов
18.09.2018
14:06:44

Maksim
18.09.2018
14:08:32
приведи какой-нить более приземлённый пример

Батманов
18.09.2018
14:14:39
ну у нас напр. сейчас приходит запрос на активацию id юзера, и id продукта. Проверям в объекте "A" есть ли такой юзер и продукт. Система взаимодействует еще с другой внешней системой через объект "B". И в объекте А могут возникнуть ошибки при проверке данных и в объекте В при отправке запросов. Получается нужно в А перехватывать ошибку и отсылать выше.

Bohdan
18.09.2018
14:17:49
зачем? это разные ошибки

Maksim
18.09.2018
14:18:48
Ну у тебя есть какой-то кусок, который отвечает за активацию; кусок для работы с внешней системой и кусок, который зкнимается проверкой ао внешней системе. Каждый из них бросает свой тип. А есть кусок, который соединяет все части воедино. Он ловит факапы и адаптирует, выбрасывая уже свой.
В таклм случае у тебя нет разницы какой подход юзать
В куске, который занимается активацией, есть ещё абстракция над бд и так далее.

Admin
ERROR: S client not available

Maksim
18.09.2018
14:20:56
Тут вопрос не в эксепшенах, а в ответственности

Батманов
18.09.2018
14:29:22
А тип ты имеешь ввиду эксепшн?

Maksim
18.09.2018
14:31:34
Ога
А если ты шинами обмазываешься, то у тебя не эксепшены будут, а события

Батманов
18.09.2018
14:44:00
Где то читал про следующую проблему. Есть главный кусок А, который ловит эксепшн от куска Б. Один разработчик пишет кусок Б, который общается с внешней системой. И этот разработчик вводит новый эксепшн, который кусок А не умеет ловить. И если это исключение происходит, исключение выбрасывается хз куда и система крашится)
Возможно конечно что такой случай должны тесты поймать, но я не уверен)

Maksim
18.09.2018
14:46:37
если в докблоках верно прописаны все исключения, то даже шторм подсветит, что ты херню затеял. В любом случае, это не проблема исключений.

Bohdan
18.09.2018
14:47:02

Maksim
18.09.2018
14:47:11

Bohdan
18.09.2018
14:47:34
фу таким быть
но я никого обвинять не буду, если исключение вылетит - сложно себя обвинять)
а вообще склоняюсь к подходу fail fast - в моем кейсе это не очень рискованно

Maksim
18.09.2018
14:48:50

Google

Bohdan
18.09.2018
14:49:13
последнее время не упарываюсь)
то было дело, на две недельки упоролся, и потом еще на пару дней - надо было

Борис
18.09.2018
14:49:16

Bohdan
18.09.2018
14:50:36

Maksim
18.09.2018
14:50:49
а ещё нативные стактрейсы, ага)

Bohdan
18.09.2018
14:54:46
"видишь суслика? а он есть"

Батманов
18.09.2018
14:55:12

Chupa
18.09.2018
14:56:34
Столкнулся с тем, что в nginx нельзя передать заголовки php_auth_user и php_auth_pw при помощи proxy_set_header. Никак не могу найти в чем дело, их нельзя напрямую передавать?
Они просто до адресата не доходят
Любые другие названия - Ok

Alexey
18.09.2018
14:58:07
всем привет
Как правильно указать селектор в phpQuery если там есть пробел $doc ->find('#doth kl');

Andrew
18.09.2018
15:00:31

Alexey
18.09.2018
15:00:55
так указан id на разметке
вот например
<div class="rfc rftr"></div>
Как класс указать, пробел то является разделителем

Yury
18.09.2018
15:02:50
.class1.class2

Alexey
18.09.2018
15:03:26
получается просто без пробела .rfc.rftr ???

Yury
18.09.2018
15:03:48
если оба класса нужно искать на одном элементе
да

Andrew
18.09.2018
15:08:40
так указан id на разметке
проблема в том что идентификатор говорит - браузер, смотри, это элемент с уникальным идентификатором. Два уникальных идентификатора не имеют смысла.


Борис
18.09.2018
15:34:31
но ведь это как раз и получится goto в бизнес-логике. И как отличить этот хороший goto от плохого про которого мы говорили выше?)
Давай так, goto в логике, это когда бросаемое исключение знает (или хотябы расчитывает) на то, что его словят.
throw new CatchMeAndProcessValidationError() это аналог goto
Если ты бросаешь исключения только чтобы информировать пользователя либы Б - девелопера А - и оставляешь принятия решения, что с этой исключительной ситуацией делать девелоперу А - это гуд
throw new BCouldntProcessBecauseExternalUnavailable() - Б говорит, что сейчас не может обслужить запрос. Если A пофиг, по какой причине B не работает (например, если что-то случилось, положить задачу в очередь и повторить позже) то можешь ловить все исключения. Возможно нужна более тонкая обработка.
В любом случае, B не должен просто так пробрасывать (игнорировать) исключения своей зависимости C. Тоесть B должен словить все, что может бросить C и отдать свои исключения. А как пользователь либы Б должен парится только о Б исключениях.