Как стать автором
Обновить
38
0
Павел Маминов @Xobotun

Жаба-программист

Отправить сообщение
Если кто-то, как я, запутался, о каких модемах в статье идёт речь, то это про радиомодемы для мобильной связи, в том числе для нового модного 5G, а не про такие:
Модем для Apple
Hayes 8643 Micromodem IIe 300 bit/s Modem for Apple IIe
Хм. Я был уверен, что ретропоезд – МосИгра, ибо там же была игра актёров!
Понял, спасибо. Забавно, я не знал, что в sql можно сделать ленивые вычисления условий. Попробую – отпишусь, надеюсь, что меньше времени пройдёт. `:)
О, прекрасная книжка про Азора и Фанта! Зачитывался ей, жаль, что она была только одна из своей серии у нас дома.
Чан Рамён, кажется, по инструкции не заваривать надо, а варить в кастрюле на огне. Если его как обычный доширак использовать, будет гадость. :)
Кстати, в чёрном (Чачжан?) надо сливать воду и и соус добавлять только после этого. :D
А как прятать под CASE?
CASE WHEN TRUE THEN...? :)

UPD: Это, похоже, не то, что имелось в виду.
А, то есть вынести фильтр в отдельную sql-функцию?

Хотел задействовать типы данных и индексы из постгиса, но не дошли руки. ':)
Да, там есть ещё limit и offset, если пользователь стал просить других пользователей за пределами кеша, выводится ещё тысяча пользователей из результата.

идти от сортировки по расстоянию, отфильтровывая неподходящих юзеров вложенным запросом
А вот тут моих знаний sql и опыта уже явно не хватает, я просто не представляю, как и куда это сделать.
... WHERE id (SELECT /*здесь фильтры*/) ...

Как-то так? Или через CTE?
В мире майнкрафта не получается запускать сервера с плагинами на версиях выше 8: почему-то код сервера, на который можно ставить плагины, требует какую-то дикую интроспекцию, которую Jigsaw запрещает. По крайней мере, мне это так объяснили. :)
Сервис знакомств типа Тиндера и прочих ему подобных.
На самом деле я хочу сделать более защищённый алгоритм поиска расстояния между пользователями, но не хватает времени, всё на более приоритетные задачи уходит.

Более защищённый в том плане, чтобы нельзя было вычислить настоящие координаты другого пользователя, сдвигая свои.
Сейчас расстояние до другого пользователя показывается логарифмически "<1км", «5км», «10км», «25км», ..., но простым округлением. И если сдвигать свои координаты как раз на границе округления 1км-5км, то можно очень даже неплохо триангуляцией узнать приватные данные. Просто округлять в БД координаты WGS84 до четырёх знаков после запятой нехорошо, будет много пользователей с расстоянием в 0 км. Надо почитать на эту тему научных статей.

А, и да, сортируются не все миллион пользователей, а тысяча-другая, которая осталась после фильтрации по всем условиям в WHERE. Хотя если фильтр будет крайне щадящий и пропустит всех пользователей, то, на удивление, всего 2.5 секунды выполняется. Я ожидал худшего. Хотя база на 60-гиговом ssd, external merge быстрый.
О, это продолжение работы тех же людей из этой статьи. Tianhong Li, Mingmin Zhao и другие.
Это было риторическое утверждение, без попытки получить помощь. Хотел бы я её – пошёл бы на stackoverflow. :D

Но если нечего делать и задачка интересна, то вот запрос. :)
Типы данных, кмк, и так ясны, но у фильтров и юзеров есть TEXT[], если что.

Там быстродействие не столь важно, результаты кешируются бекендом на пару минут для повторных запросов, но нет предела совершенству. И преждевременной оптимизации.
Я сначала думал, может, баг сайта какой, explain закешировался в браузере. Но зашёл с другого компа – нет, мой план. :D

Так и не смог понять, что надо скормить постгресу, чтобы он sequental scan превратил в index scan. Там поиск по таблице с ~1 млн фейковых записей, и фильтр по колонкам, которые в 99.5% истинны. То есть, возможно, там действительно укорять нечего.

И да, я так понимаю, что cost-попугаи – условная стоимость чтения с диска и выполнения операций, а не предсказанное время. По крайней мере, так документация говорит.
А, это не баг, это фича. Ок.

Спасибо за статью. :)
1) У лямбд, как мне кажется, всё же чуть иной случай: чтобы переменная могла быть захвачена, она должна быть либо явно final, либо effectively final. У новых «связываний» финальность появляется от рождения, что чуть отличается от захваченных переменных в лямбдах.

Но это исключительно к слову пришлось. :D
А что произошло с областями видимости вот в этом примере: ↓?
if (!(obj instanceof String str)) {
    throw new RuntimeException();
}
System.out.println(str.toLowerCase());

Скомпилировалось. <...>

"Биндинг Связывание паттерна" str вышло за пределы фигурных скобок условного оператора?
То есть он работает иначе, чем try-with-resources, у которого Closeable-переменные, объявленные в круглых скобках, видны только внутри. Это тоже может доставить проблем, чувствую.
Поискал, нашёл клавиатуру, которая подходит под этот запрос даже лучше, чем a4tech парой веток выше:
Заголовок спойлера
image

Только у них на сайте ничего такого нет. Тоже устарела?.. :/
Да, именно такую я и искал. Теперь бы понять, где подобную купить, ибо что KB-8, что KBS-720 больше не производятся, судя по всему. :/

Да, действительно, каюсь. Глаз зацепился за 101/104, и мозг дописал ANSI сам по аналогии с надписью слева. :/

То-то я смотрю, что это уже второй пост подряд про транспорт и путешествия: сначала Венеция, теперь самолёты. Но я думал, что это как первоапрельский пост, когда Milfgard и Meklon поменялись постами и мало кто заметил. Думал, сейчас это просто посты для Туту.ру. А тут вот оно что, оказывается.

Информация

В рейтинге
5 994-й
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность