
Ilya
27.12.2016
19:49:17
я просто его месяцами не выключаю
eap, а иконка старая

Sergey
27.12.2016
19:50:14
так что считай что это хорошая страховка

Google

Sergey
27.12.2016
19:50:56
ну и как бы пхпшторм и подобные инструменты держат в памяти индекс, работают анализаторы и прочая хрень
это еще мало жрет как по мне

0x9d8e
27.12.2016
19:53:39

Pavel
27.12.2016
20:57:17
http://pix.toile-libre.org/upload/original/1482871987.png __)

Sergey
27.12.2016
21:06:26


0x9d8e
27.12.2016
21:17:35
у меня демоны месяцами живут. так что память это критичный момент
Писал как-то (3 года назад в качестве первой задачи на новом рабочем месте) свой php-крон с полной интерграцией в студийный cmf и секундами. Там в общем-то течь нечему было, но как же я тогда задрался это дело тестить и отлаживать. Сейчас понимаю, что надо было какой сокет открыть и через него работать, но тогда я сколхозил всё взаимодействием с этим демоном через создание файлов типа .stop .restart .addTasks (этим занимался модуль в cmf, можно было из любого места задачу создать, так что на этом и очереди делались). Но там, насколько помню, демон сам себя перезапускал периодически (в зависимости от ограничений на время исполнения, съеденной памяти и всякой такой фигни), плюс крон раз в день его лаунчер дёргал.
Ыы, а ещё там было штук шесть вложенных while(true), которые потом было страшно рефакторить т.к. написано в потоке и непонятно как вообще работает.


Sergey
27.12.2016
21:20:22
лет 6 назад писали крон обработчики, которые себя форкали и хреначили какие-то джобы по массовым рассылкам писем
мало того что поддерживать код который форкается тот еще адок, так еще если не успевали отработать задачи и их догоняли получалась такая себе форк бомба на сервере ?
потом конечно узнали что можно было просто делать через очереди, заюзать паттерн продюсеров-консюмеров, менеджить все процессы супервизорами

0x9d8e
27.12.2016
21:23:27
Я чтобы оно "само на себя не наезжало" тупо файл блокировки писал. Пока он есть все кроме его "автора" висят (и дату последнего обновления проверяют ибо если он секунд 10 без изменений, значит автор умер :))

Sergey
27.12.2016
21:24:25
мы еще shmop там обмазывались

0x9d8e
27.12.2016
21:24:41
К счастью на продакшне это дело почти не побывало, а то наверняка бы каюк какой случился

Google

Sergey
27.12.2016
21:24:55
но форки это всегда весело)

0x9d8e
27.12.2016
21:26:33
о, как хорошо что мне тогда никто не сказал о shmop)
ну хотя

Sergey
27.12.2016
21:27:11
в тот момент еще дебаггер настроить было тот еще вызов
дебажили через var_dump()die()
хардкор во всей красе

0x9d8e
27.12.2016
21:27:48
я и сейчас 80% так дебажу)
Особенно текущий проект, который я локально не могу поднять (мускуль падает, лол), и дебажу на серваке (не на продакшне конечно)

Sergey
27.12.2016
21:31:36
remote debug есть же
пробрасываешь через ssh туннель на сервер
и коннектишься

0x9d8e
27.12.2016
21:31:51
Правда чаще вардамп не помогает и я исключения кидаю, ибо если баги то без стектрейса их не разобрать, а необработанные эксепшны у нас очень уж ужобно выводятся.

Sergey
27.12.2016
21:31:57
я так даже прод дебажу иногда

0x9d8e
27.12.2016
21:32:21
Да, со следующего проекта так и сделаю
Вернее он то у меня на локалке будет нормально работать. (а вот на сервере хрен, но хоть админу люлей дадут может)
У админа нашего сервера девиз "Тут старый непоодерживаемый freebsd на который ничего нельзя поставить/скомпилить/настроить. Нельзя нельзя нельзя, давайте бекап прошлогодний накачаку, вот это можно."

Роман
27.12.2016
21:35:27
"Правда чаще вардамп не помогает" « это где он не помогает?

0x9d8e
27.12.2016
21:35:35
Мемкеш? Неееее. Пхп 7? ТЫ НЕ ПРОЙДЁШЬ!
Когда совершенно не понятно как оно вообще туда попало
Плюс у нас тут такая хрень что вардамп почти всегда выведет такую бороду, что глазами её не прочитать почти.

Google

0x9d8e
27.12.2016
21:38:12
Чаще всего делаю так:
throw new dbge(json_encode($object));
Ибо почти всё JsonSerializable а эксепшн ещё и стектрейс нарисует
и там не будет всего "системного" мусора
но это у меня деформация психики от нашего внутристудийного франкенштейна

Sergey
27.12.2016
21:44:06
жесть
логирование вообще спасает
а var_dump не помню когда последний раз юзал

Sergey
27.12.2016
21:45:02
я на днях юзал var dump

Sergey
27.12.2016
21:45:08
есть знакомые пхпшники которые до сих пор считают что вардампы удобнее дебагера

Sergey
27.12.2016
21:45:09
точнее симфоневый dump

Роман
27.12.2016
21:45:10
Я как-то раз писал парсер недвижимости, там регионы 1 - Москва, 2 - Питер и т.д. Они у меня в базу складывались отлично. Но как-то раз заказчик пишет что у Крыма регион 181462, а в базу пишется 32767. Я долго не мог понять что происходит, везде где можно уже обставил вардампами. Не мог понять откуда такое число приходит. В коде нигде его нету. Перед складыванием в базу ID региона корректный. Около часа тупил, пока не озарило. ???

Sergey
27.12.2016
21:45:17

Sergey
27.12.2016
21:45:50
такое вообще в varchar лучше хранить

Роман
27.12.2016
21:46:13
+

Sergey
27.12.2016
21:46:23
чтобы не было таких внезапностей)

Sergey
27.12.2016
21:46:26
для твига не считается :D
не, у меня там был жирный кусок кода, где разработчики разошлись и сделали мега сложно... там один объект делигирует одному, потому другому, потом обратно... и так много много итераций... а мне надо было лишь посмотреть правильно ли промежуточные транзакции вычисляются.... раскидал дампы в паре мест запустил пару разных сценариев и собрал нужную инфу. С дебагером я бы мучался пару часов.

Роман
27.12.2016
21:46:27
Почему не BIGINT?

Sergey
27.12.2016
21:46:46

Роман
27.12.2016
21:47:01
Там очень много данных. На всём экономить пытаюсь.

Google

Sergey
27.12.2016
21:47:19

Роман
27.12.2016
21:47:43
Кто-то использует utf8mb4?

Sergey
27.12.2016
21:47:44

Sergey
27.12.2016
21:48:04

Роман
27.12.2016
21:48:20
Пока не много, но как говорится у страха глаза велики, да и не проблема выставить бигинт, это даже не инкремент же а код региона.

Sergey
27.12.2016
21:48:25

Admin
ERROR: S client not available

Роман
27.12.2016
21:50:18
Кто-то использует utf8mb4? Первый раз пришлось использовать при парсинге ВК, у них там всё так хранится теперь. Получается оверхед большой. По 4 байта на символ. Я думаю это неизбежно скоро всё переводить на него?
Я про mysql*

Sergey
27.12.2016
21:52:12
пока на utf8 сидим

Sergey
27.12.2016
21:53:32

Sergey
27.12.2016
21:53:55
удиви

Sergey
27.12.2016
21:55:23
class AddOrderAction
{
/**
* @Route("/orders", methods={"POST"})
* @Responder(OrderDetailsResponder::class)
*/
public function __invoke(AddOrder $request, Customer $buyer): Order
{
// todo
}
}

Sergey
27.12.2016
21:55:40
так это ж дунглас толкает

Sergey
27.12.2016
21:55:50
ну вот я сегодня утром на курилке обдумывал
и в целом с нормальным мэппингом данных из реквеста на DTO
все збс
операции на чистое чтение можно оставить в старых контроллерах
или делать отдельно респондеры (пока план именно такой)

Google

Sergey
27.12.2016
21:56:34
https://speakerdeck.com/dunglas/adr-pattern-autowiring-dunglasactionbundle-symfony-controllers-redesigned

Sergey
27.12.2016
21:56:38
не не
ADR херня полная
покуда у тебя Action знает о Responder
хотя тут тоже есть нюансы

Sergey
27.12.2016
21:57:15
ну ты презенташку посмотри

Sergey
27.12.2016
21:57:19
по сути что меня напрягает так это то что по его схеме экшены должны возвращать http респонс

Sergey
27.12.2016
21:57:23
там как раз он толкает то что ты выше прислал

Sergey
27.12.2016
21:57:30
че правда?
секу

Sergey
27.12.2016
21:58:00
он даже почти в ядро это протащил)
https://dunglas.fr/2016/01/dunglasactionbundle-symfony-controllers-redesigned/

Sergey
27.12.2016
21:58:33
все еще ищу в презентации момент с "экшен не должен ничего знать о http"

Sergey
27.12.2016
21:59:14
у меня щас такие экшены пишутся)
@PostMapping("/quotes")
fun quotesAction(@RequestBody request: List<RequestQuote>) = quoteService.requestQuotes(request)

Sergey
27.12.2016
21:59:58
не, почти тоже самое но я пошел дальше и убрал респондеры из экшенов
оставив только указание через аннотации
какой респондер надо юзать после экшена
ближе к CQRS

Sergey
27.12.2016
22:00:40
чет ты загоняешься)