@symfony_php

Страница 374 из 1418
Vladislav
01.11.2017
10:01:59
arData это обычный массив

Sergey
01.11.2017
10:02:09


Алексей
01.11.2017
10:02:15
Google
Vladislav
01.11.2017
10:02:25
нет, это масив бакетов

The buckets (= array elements) are stored in the arData array.

Алексей
01.11.2017
10:02:58
Ну да

короче. Что мы хотим понять?

Vladislav
01.11.2017
10:03:20
как он удаляет андеф бакеты?

точнее не так

как он удаляет андеф ?

Sergey
01.11.2017
10:03:36
As you can see the first five arData elements have been used, but elements at position 2 (key 0) and 3 (key 'xyz') have been replaced with an IS_UNDEF tombstone, because they were unset. These elements will just remain wasted memory for now. However, once nNumUsed reaches nTableSize PHP will try compact the arData array, by dropping any UNDEF entries that have been added along the way

Алексей
01.11.2017
10:03:49
Что ты понимаешь под "удаляет"?

Vladislav
01.11.2017
10:04:16
да, это я прочитал. меня интересует как происходит этот проц "will try compact the arData array, by dropping any UNDEF entries"

вот на этом примере удаление 2,3 ключей

элементы должны сьехать на 2 значение влево

Алексей
01.11.2017
10:05:54
элементы должны сьехать на 2 значение влево
Как я понял они в структуре не съезжают

Google
Vladislav
01.11.2017
10:06:10
это обычный массив уже

arData это Array<Bucket>

Алексей
01.11.2017
10:06:51
и что?

Vladislav
01.11.2017
10:07:20
то есть ключи будут 0, 3, 4

после удаления?

нет

Алексей
01.11.2017
10:08:29
Снаружи да(?)

Andrey
01.11.2017
10:08:52
+

Алексей
01.11.2017
10:08:54
Индекс просто

Andrey
01.11.2017
10:08:56
снаружи да

Vladislav
01.11.2017
10:09:03
так мы говорим про внутри

я хз внутри что за ключи вообще

я говорю про arData

раньше это был дабл линкед лист

Алексей
01.11.2017
10:09:22
внутри вообще ничего не пропадет

Vladislav
01.11.2017
10:09:26
сейчас это массив из с

Алексей
01.11.2017
10:09:28
просто значение поменяет

Vladislav
01.11.2017
10:09:42
на что?

ты удаляешь что-то, значение в arData ->IS_UNDEF

Google
Алексей
01.11.2017
10:10:10
undef

Vladislav
01.11.2017
10:10:17


а как происходит "dropping any UNDEF entries"

?

я об этом

Алексей
01.11.2017
10:11:36
меня смущает последняя строка скриншота

Кто то может пояснить?

Vladislav
01.11.2017
10:11:50
это обычное поведение

крч ты создал масив

выделилась паматься

как только ты велазешь за рамки этой памяяти - точно такая же выделяется еще

это как в го слайсы работают. выделил x памяти, как только ты уже не влазишь, память стает сразу 2x

Алексей
01.11.2017
10:13:18
Я понял. Я думал это в контексте unset

Vladislav
01.11.2017
10:13:38


крч пошел я в сорцы чтобы понять как удаляется андеф

https://github.com/php/php-src/blob/master/Zend/zend_hash.c#L75

Алексей
01.11.2017
10:18:09
zend_hash_do_resize?

Vladislav
01.11.2017
10:19:03
я дропнул сообщение, разбираю рехеш. как варик я бы делал просто свап последнего элемнта с андефом

решал пару задачу и чтобы не шифтить элементы current <-> last и передефайнить ключ в хештаблице для last на новом месте

Алексей
01.11.2017
10:21:20
Еще глянь zend_hash_rehash

Google
Vladislav
01.11.2017
10:21:29
ну я его и смотрю

Алексей
01.11.2017
10:21:34
#L961

Vladislav
01.11.2017
10:21:53
я именно там

если я не туплю то идет сдвиг и копируются значения

0 -> a, 1 -> undef, 2 -> undef, 3-> f будет 0 -> a, 1 -> f, 2 -> not init, 3 -> not init

хотя не могу понять где апдейтится arHash

тогда

хотя

Admin
ERROR: S client not available

Vladislav
01.11.2017
10:32:08
крч в самом начале обсуждения я был немного прав про шифтниг массива) но то было чисто интуитивно

тогда такая поочередность операций на массиве который заполнен по максимуму unset(arr[key]) arrr.push() arr.push() ->> O(N)

возьмет O(N) в худшем случае

Константин
01.11.2017
11:16:03
У кого есть фасетный поиск, как вы запросы формируете при изменении фасета? Генерировать ссылку на фронте и делать гет запрос? Отправлять состояние поиска json'ом? Есть какой то best practice?

Dmitry
01.11.2017
11:24:07
это не программисты решают, это проектировщики взаимодействия решают

Константин
01.11.2017
11:26:23
Ок гугл, как сделать фасетный поиск если ты и программист, и проектировщик, и архитектор, и на дуде игрец

Dmitry
01.11.2017
11:27:39
посмотреть, как делают топ игроки

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

Константин
01.11.2017
11:31:38
Вопрос был как данные запрашивать. Если через query, то получается строить на фронте url. Но это имхо попахивает, ибо у нас не spa и дублировать логику роутера на фронте так себе решение.

Dmitry
01.11.2017
11:32:28
а аякс по твоему не использует url?

Google
Dmitry
01.11.2017
11:32:56
да делай как хочешь ;) вообще что значит строить query?

ты хочешь к фасетному поиску ЧПУ приделать?

queryString ты генеришь или json - тут глубоко пофиг, но если ты делаешь запросы аяксом - рано или поздно бизнес тебя спросит - а как мне дать ссылку на этот результат поиска. И придется тебе все-равно модифицировать URL подставляя туда данные фасетов... и совершенно пофиг при этом, как ты будешь отправлять на сервер все.

но я не очень представляю, как ты хочешь отправить json при GET запросе

Arky
01.11.2017
12:15:41
синьор который пишет только на пхп это уже сомнительно
А сколько языков в голову "поместиться"?)

Sergey
01.11.2017
12:18:03
А сколько языков в голову "поместиться"?)
в среднем у типичного пхп разраба это php/javascript/bash и что-то из java/c#/go, иногда все вместе

более продвинутые влазят еще в плюсы, и функциональные языки

Arky
01.11.2017
12:19:25
Alan
01.11.2017
12:19:57
от проектов твоих зависит)

Sergey
01.11.2017
12:20:00
Голова не лопнет?) Сколько лет на это нужно?)
я говорю о разрабах у которых хотя бы 5 лет опыта есть

Alan
01.11.2017
12:20:16
можно и за 5 не пощупать ничего

Алексей
01.11.2017
12:20:47
Важно понимать что никто и ничего не должен

Alan
01.11.2017
12:21:03
а можно за год перечеркнуть эти пять ))

Sergey
01.11.2017
12:21:25
ну и если ты бекенд разработчик, ты еще должен понимать все инфраструктурные и сетевые штуки, администрирование и тд

Arky
01.11.2017
12:21:25
2-3
Вроде до 3 лет это только джун) А тут за 2 столько переварить)

Алексей
01.11.2017
12:21:29
Если ты будешь топом в ПХП и не знать ничего в остальных языках - это не страшно

Алексей
01.11.2017
12:21:48

Страница 374 из 1418