
Borislav
18.04.2018
10:53:53
Небольшой отвлеченный вопрос, хорошая ли практика делать проверку count($array) > 0 перед foreach?
Вроде как ранее выбрасывалось NOTICE если попробовать передать пустой массив в foreach, нет?
P.S. Сейчас попробовал:
<?php
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
$values = array();
foreach ($values as $value) {
echo $value . PHP_EOL;
}
PHP 7 не 7.2.3 не выдает ошибку

Dinar
18.04.2018
10:54:43
нет
форич просто пройдет 0 раз

Konstantin
18.04.2018
10:55:52
guize

Google

Borislav
18.04.2018
10:55:53
хмм...

Konstantin
18.04.2018
10:56:06
на маленьком серваке 2гб оперативки, 1.5 свободно
делаю composer update (симфони проект) и он сжирает 1.5 гига и вылетает с can not allocate memory
в чем может быть косяк? только что сделал composer install и было норм, но изменил версию пхп (в композере) и теперь не воркает

Timur
18.04.2018
10:57:21
Небольшой отвлеченный вопрос, хорошая ли практика делать проверку count($array) > 0 перед foreach?
Вроде как ранее выбрасывалось NOTICE если попробовать передать пустой массив в foreach, нет?
P.S. Сейчас попробовал:
<?php
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
$values = array();
foreach ($values as $value) {
echo $value . PHP_EOL;
}
PHP 7 не 7.2.3 не выдает ошибку
Не помню такого, чтобы foreach выдавал какие то нотисы на пустых массивах. Можно сделать проверку на то, что это вообще массив, а еще можно сделать проверку на то, что массив содержит лишь определенные типы) но для этого нужны дженерики, не?

Bohdan
18.04.2018
10:58:53
было такое у меня

Konstantin
18.04.2018
10:59:01
че за свап

Bohdan
18.04.2018
10:59:01
хотя
типа диск в качестве рам

Konstantin
18.04.2018
10:59:49
а, ты про то что просто увеличить память

Bohdan
18.04.2018
11:00:00
может композер не может разрезолвить зависимости

Sergey
18.04.2018
11:00:03

Google

Konstantin
18.04.2018
11:00:21
тада уж проще снести вендоры и заново install )

Sergey
18.04.2018
11:00:22
и что бы он не много жрал - поднимай его по требованию

Bohdan
18.04.2018
11:00:23

Sergey
18.04.2018
11:00:38

Bohdan
18.04.2018
11:01:02

Sergey
18.04.2018
11:01:12
ааа.... ну у меня 16 и пока все хорошо)

Bohdan
18.04.2018
11:01:17
но вообще да
опасно

Konstantin
18.04.2018
11:02:37
хм просто инсталл сейчас всего около сотки жрет

Andrew
18.04.2018
11:04:06

Konstantin
18.04.2018
11:06:11
спасиб за хинт, пока не продакшн не страшно )

Dmitriy
18.04.2018
11:06:29

Borislav
18.04.2018
11:07:44
Ладно, наверное действительно так оно и есть. Спасибо @Gaaarfild, @murtukov, @dmitriytk

Andrew
18.04.2018
11:07:58
спасиб за хинт, пока не продакшн не страшно )
а время на отлов OOM exceptions и всякх багов, когда внезапно в минорной версии чего-то поломалось апи или на сервере не те версии пакетов и там даже кеш не собирается, когда на локали все работает не жалко?)

Konstantin
18.04.2018
11:09:03

Timur
18.04.2018
11:12:17
Вопрос по MySQL. У меня такая проблема: надо в таблице user найти все дубликаты (сравнение по firstname для простоты примера).
Для этого я делаю джоин таблицы с самой собой, вот запрос:
SELECT
c.id,
c.firstname,
d.id,
d.firstname
FROM user u
JOIN user d
ON
u.firstname = d.firstname
AND c.id <> d.id # чтобы не сравнивать строки с собой
Проблема в том, что сравнениваются все строки со всеми, чего, очевидно, делать не обязательно. Можно ускорить процесс на 40%, если сравнивать каждую строку лишь с последующими строками, но как написать запрос, я не знаю.

Dmitriy
18.04.2018
11:13:09
это агрегирующие функции нужны

Bohdan
18.04.2018
11:13:13
выбери id по distinct

Andrey
18.04.2018
11:13:17
SELECT firstname
GROUP BY firstname
HAVING COUNT(id) > 1

Bohdan
18.04.2018
11:13:37
id - name
затем оттуда только id и not in

Google

Shmaltorhbooks
18.04.2018
11:15:04
Если пользователей много, а имя не индекс - может быть тоскливо
А firstname скорее всего таки не индекс

Timur
18.04.2018
11:16:45

Dmitriy
18.04.2018
11:17:35
`SELECT GROUP_CONCAT(id SEPARATOR ', ') AS ids, firstname
GROUP BY firstname
HAVING COUNT(id) > 1`
так будет еще и идшники показывать

Shmaltorhbooks
18.04.2018
11:17:59
md5 от имени и в отдельную таблицу в память)))
В памяти будет быстро)
Хотя можно и без md5

Dmitriy
18.04.2018
11:18:54
блин, сколько должно быть записсей в таблице users, чтобы печаль была заметна на глаз?

Shmaltorhbooks
18.04.2018
11:19:06
Но это баловство

Dmitriy
18.04.2018
11:19:50
оракл сложные просчеты делает по объединенным таблицам, в которых 7-10 млн записей в каждой за минуту-две. При чем разрабы особо не парились с индексами

Timur
18.04.2018
11:20:10
SELECT firstname
GROUP BY firstname
HAVING COUNT(id) > 1
Возможно я зря упростил пример, потому что должны выдаваться результаты не только по точному сравнению но и по soundex и по LIKE (то есть = OR LIKE OR soundex). Да, запрос будет оцень тяжелым. Но это не страшно, ведь мне всего 28, вся жизнь впереди)

Timur
18.04.2018
11:20:36

Shmaltorhbooks
18.04.2018
11:20:50
А записей много?

Sergey
18.04.2018
11:21:12

Dmitriy
18.04.2018
11:21:22

Timur
18.04.2018
11:21:56
Окола 7000 тысяч юзеров. Если сравнивать всё со всем получится декартово произведение, это 49 миллионов строк
Точнее 49 миллионов сравнений строк
Это если делать джоином, как я написал выше

Виктор
18.04.2018
11:23:46
Вопрос по MySQL. У меня такая проблема: надо в таблице user найти все дубликаты (сравнение по firstname для простоты примера).
Для этого я делаю джоин таблицы с самой собой, вот запрос:
SELECT
c.id,
c.firstname,
d.id,
d.firstname
FROM user u
JOIN user d
ON
u.firstname = d.firstname
AND c.id <> d.id # чтобы не сравнивать строки с собой
Проблема в том, что сравнениваются все строки со всеми, чего, очевидно, делать не обязательно. Можно ускорить процесс на 40%, если сравнивать каждую строку лишь с последующими строками, но как написать запрос, я не знаю.
хм...
c.id > d.id

Google

Ad
18.04.2018
11:26:51
Обьясните, почему симфони отказалась от поддержки hhvm?
Из-за говенного ООП в ххвм?

?
18.04.2018
11:27:22

Виктор
18.04.2018
11:27:26

Timur
18.04.2018
11:27:30

Ad
18.04.2018
11:28:21
Я с села просто

Admin
ERROR: S client not available

Shmaltorhbooks
18.04.2018
11:29:45
это из ссылки цитата
разрабы симфони решили, что разница несущественная

Ad
18.04.2018
11:30:47

Shmaltorhbooks
18.04.2018
11:31:17
источники Фадьена, по всей видимости, таких данных не предоставляют)

Timur
18.04.2018
11:31:18

Ad
18.04.2018
11:31:55

Artem
18.04.2018
11:31:56

Shmaltorhbooks
18.04.2018
11:32:03
ой
Фабьен, сорри

Dmitriy
18.04.2018
11:32:58

Timur
18.04.2018
11:33:37
функция, принимает строку, выдает другую строку - код.
Так можно сравнить две строки на схожесть звучания, если две разные строки выдают один код

Google

Ad
18.04.2018
11:33:39
Есть сервак на 32гб оперативки. Nginx + php-fpm, 30к уников в час, (порно), LA 0.3

Igor
18.04.2018
11:34:12

Ad
18.04.2018
11:34:15
Правда поток через цдн
Так что в принципе зря выебываюсь

Dmitriy
18.04.2018
11:34:45

Artem
18.04.2018
11:35:38

Timur
18.04.2018
11:36:03
не пользовался, не знаю
soundex('Max') == soundex('Maks')
Потому как функция вернет один код для обех строк, примерно такой M967
Он в мускуле встроен

Artem
18.04.2018
11:36:34
ок, я думал ты спрашиваешь

Dmitriy
18.04.2018
11:36:41
GROUP BY soundex(firstname)
SELECT GROUP_CONCAT(id SEPARATOR ', ') AS ids GROUP BY soundex(firstname) HAVING COUNT(id) > 1

Shmaltorhbooks
18.04.2018
11:52:13
Вопрос по MySQL. У меня такая проблема: надо в таблице user найти все дубликаты (сравнение по firstname для простоты примера).
Для этого я делаю джоин таблицы с самой собой, вот запрос:
SELECT
c.id,
c.firstname,
d.id,
d.firstname
FROM user u
JOIN user d
ON
u.firstname = d.firstname
AND c.id <> d.id # чтобы не сравнивать строки с собой
Проблема в том, что сравнениваются все строки со всеми, чего, очевидно, делать не обязательно. Можно ускорить процесс на 40%, если сравнивать каждую строку лишь с последующими строками, но как написать запрос, я не знаю.
а что за задача такая? зачем тебе надо находить не только дубликаты, но и одинаково звучащие имена?
голосовые сообщения им собираешься посылать?)


Timur
18.04.2018
11:56:40
SELECT GROUP_CONCAT(id SEPARATOR ', ') AS ids GROUP BY soundex(firstname) HAVING COUNT(id) > 1
Вряд ли я сам смогу переделать твой пример, под свои нужды (а возможно это и не возможно). Я скажу, что требуется:
Есть таблица user с firstname и lastname
Мне надо найти всех юзеров, имена которых (одновременно firstname и lastname)
1) равны между собой
ИЛИ
2) входят друг в друга по LIKE, т.е. Alexander Schultz = Alex Schultz = exander Schult
ИЛИ
3) равны по алгоритму soundex

Artem
18.04.2018
12:05:26
сорри, что не в тему комьюнити, но может кто знает нормальное живое java комьюнити? мне иногда кажется, что это самый нормальный тг-канал)

Andrew
18.04.2018
12:05:57

Herman
18.04.2018
12:12:05

Timur
18.04.2018
12:12:36

Shmaltorhbooks
18.04.2018
12:13:15
а какая цель этого мероприятия?