
Andrey
13.12.2017
15:08:17

Alexander
13.12.2017
15:08:45
или еще https://www.hackerrank.com/dashboard

Sergey
13.12.2017
15:15:36
https://livesql.oracle.com/apex/livesql/file/index.html

Vladislav
13.12.2017
15:18:29

Google

Artem
13.12.2017
16:08:13

Shyngys
13.12.2017
17:39:05
формат времени в БД12 часовое , его можно поменять на 24 часовой?
как?

@b6ed7
13.12.2017
18:35:46

Shyngys
13.12.2017
18:40:26
Спасибо, завтра попробую

Sergey
13.12.2017
20:26:04
Нашел в приложении самый эпичный баг года) догадайтесь, что же здесь пошло не так:
=# \d proxies
Table "public.proxies"
Column | Type | Modifiers
—----------+-----------------------------+------------------------------------------------------------
id | bigint | not null default nextval('proxies_id_seq'::regclass)
ip | character varying(150) | not null
port | integer | not null
user | character varying(200) |
password | character varying(200) |
запрос такой:
SELECT ip, port, user, password FROM proxies
и он даже успешно выполняется. Но результат неправильный.

om
13.12.2017
23:24:01

Sergey
13.12.2017
23:24:45
фишка в кривости самого запроса на выборку

om
13.12.2017
23:27:16
А что в нём не так?

Sergey
13.12.2017
23:28:23
значение, которое вернется в колонке user)

om
13.12.2017
23:29:50

Sergey
13.12.2017
23:35:01
Ну вот если это поле в select указать в двойных кавычках или указать полностью proxies.user, тогда отработает правильно. Но из-за лени так мало кто делает

Google

om
13.12.2017
23:53:12
Мда.

Artem
14.12.2017
00:31:21
Мне кажется, это не баг, это фича.
Насколько я понимаю, речь про юзера в PG?
Так вот он может быть без кавычек, например ivanov
А если ivanov.ii , то только в кавычках.
Или речь не об этом? :)

om
14.12.2017
00:35:01

Anton [Mgn, az09@osm]
14.12.2017
05:21:02

Andrey
14.12.2017
05:34:35

Anton [Mgn, az09@osm]
14.12.2017
05:36:03
а, значит это всё таки функция! но какой смысл в этом?
выгладит так будто кто-то из разработчиков пг отлаживался, а потом этот вызов забыли убрать ?

Arthur
14.12.2017
06:13:16
Нет, это задокументированная функция https://www.postgresql.org/docs/current/static/functions-info.html#FUNCTIONS-INFO-SESSION-TABLE

Alexander
14.12.2017
06:20:03
всем добрый день. Возник вопрос о вертикальной масштабируемости посгре, есть ли у нее предел?

Nikolay
14.12.2017
06:25:38

Yura
14.12.2017
07:07:11

Николай
14.12.2017
07:28:16
Подскажите, я пишу приложение с использованием google maps. Т.к. локаций становится очень много я хочу перенести кластеризацию маркеров на бекенд. Может быть кто-нибудь ссылку на какой-нибудь снипеет или туториал даст, как лучше это сделать с использованием Postgis?

Darafei
14.12.2017
07:29:25

Николай
14.12.2017
07:30:34

Darafei
14.12.2017
07:30:36
а вообще кластиризовать точки есть десятки способов, нужно понимать природу и задачи до того, как кластеризовать
в самом постгисе нативно и то штуки четыре разных кластеризатора

Google

Николай
14.12.2017
07:31:48
Около 100к точек, сейчас кластеризируется с помощь js библиотеки, кластеризируются норм, загружаются долго

Darafei
14.12.2017
07:32:20
kmeans, dbscan, within, intersecting

Николай
14.12.2017
07:32:47
kmeans есть в постгис? Я просто начал один пакет разбирать, там kmeans отдельным расширением ставится

Darafei
14.12.2017
07:33:15
https://postgis.net/docs/ST_ClusterKMeans.html
но если тебе нужно по зумам группировать, тебе нужно что-то другое, даже просто по регулярной сетке

Николай
14.12.2017
07:40:24
Я щас вот это модуль ковыряю https://github.com/biodiv/anycluster там вот такой вот запрос вроде как основной https://dumpz.org/2711518/ Он работает так как мне надо, собственно вот пример https://www.anymals.org/nx/bigmap/ Я хочу разобраться как он это делает и сделать по аналогии без установки дополнительного расширения kmeans. Как я понял этот модуль устаревший.

Anton [Mgn, az09@osm]
14.12.2017
07:40:25
никому и никогда 100К не может понадобиться разом

Николай
14.12.2017
07:41:17

Darafei
14.12.2017
07:41:37
нарисуй их не точками, а полигонами

Николай
14.12.2017
07:41:57
Зачем?
Есть какая-то проблема?

Darafei
14.12.2017
07:43:13
да, у тебя сейчас точки друг на друга налезают и неясно, на какую территорию они растащены
а вообще выкинь всё и возьми https://github.com/Leaflet/Leaflet.markercluster
или https://blog.mapbox.com/clustering-millions-of-points-on-a-map-with-supercluster-272046ec5c97

Anton [Mgn, az09@osm]
14.12.2017
07:44:53
но вообще конечно трассировка нужна вот этого вот всего. и сравнение

Николай
14.12.2017
07:45:46
У меня сейчас https://www.npmjs.com/package/points-cluster работает хорошо
Но загружается долго

Darafei
14.12.2017
07:46:39
работает плохо, там TTFB одна секунда

Google

Darafei
14.12.2017
07:46:58
и content download 1.14ms

Николай
14.12.2017
07:48:28
Ок, но 100к точек загружать всё равно долго. Поэтому я хочу сделать server-side кластеризацию...
Я что-то упускаю?

Darafei
14.12.2017
07:49:47
да, kmeans - не для визуализации, для визуализации карты по зумам сейчас самое лучшее что есть - supercluster
если ты прочтёшь статью, там есть ссылка, как его запустить на сервере
ну и api точно надо переделать на такое, которое можно закешировать - тайлы нарезать в статику, например

Николай
14.12.2017
07:51:48
Че такое тайлы?

Artem
14.12.2017
07:54:06

Anton [Mgn, az09@osm]
14.12.2017
08:41:44
иногда это даже почти динамика, а не статика
а, значит от своего оверлейного слоя так и не отказались?.. ну такое себе. но вам виднее ))
А как от него откажешься? Когда в ТЗ стоит уметь отображать до 20 тысяч одновременно движущихся ТС. ?
и никакой кластеризации


yurc
14.12.2017
08:46:34
Добрый день помогите разобраться,
CREATE OR REPLACE FUNCTION mcore.py_exec(
_ssql text,
_jdat jsonb)
RETURNS text AS
$BODY$
import json
dic=json.loads(_jdat)
plan = plpy.prepare(_ssql, [])
res = plpy.execute(plan, [])
return '{}'
$BODY$
LANGUAGE plpython3u VOLATILE
COST 100;
ALTER FUNCTION mcore.py_exec( text, jsonb)
OWNER TO postgres;
упростил до минимума нужен вызов такой
select py_exec('select py_exec(''select 1'',''{}''::jsonb);','{}'::jsonb);
на версии PostgreSQL 9.5.10 on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.7.2-5) 4.7.2, 64-bit работает стабильно через раз с такой ошибкой
а на версии PostgreSQL 9.6.3 on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit все просто отлично
R: KeyError: '_jdat' SQL-состояние: 38000 Контекст: Traceback (most recent call last): PL/Python function "py_exec", line 4, in <module> dic=json.loads(_jdat) PL/Python function "py_exec", line 308, in loads PL/Python function "py_exec", line 352, in decode PL/Python function "py_exec"
и там и там
CREATE PROCEDURAL LANGUAGE 'plpython3u'
HANDLER plpython3_call_handler
INLINE plpython3_inline_handler
VALIDATOR plpython3_validator;
ALTER LANGUAGE plpython3u
OWNER TO postgres;


Andrey
14.12.2017
08:49:17
А почему именно третий питон? На втором все ок?

yurc
14.12.2017
08:49:44
сейчас попробую
ERROR: KeyError: '_jdat' CONTEXT: Traceback (most recent call last): PL/Python function "py_exec", line 3, in <module> import json PL/Python function "py_exec" ****** Ошибка ****** ERROR: KeyError: '_jdat' SQL-состояние: 38000 Контекст: Traceback (most recent call last): PL/Python function "py_exec", line 3, in <module> import json PL/Python function "py_exec"
та же ошибка

Google

yurc
14.12.2017
09:19:54
нельзя так в 9.5?

Andrey
14.12.2017
09:25:15
loads должен строку принимать, попробуйте text
Еще модно вывести через notice значение locals().

yurc
14.12.2017
09:33:07
так на 9.5 она работает ровно через один раз один раз норм другой ошибка
CREATE OR REPLACE FUNCTION mcore.py_exec(
_ssql text,
_jdat text)
RETURNS text AS
$BODY$
import json
dic=json.loads(_jdat)
plan = plpy.prepare(_ssql, [])
res = plpy.execute(plan, [])
return '{}'
$BODY$
LANGUAGE plpythonu VOLATILE
COST 100;
ALTER FUNCTION mcore.py_exec( text, text)
OWNER TO postgres;

Andrey
14.12.2017
09:34:32
Ну вот и увидите, отличаются loclals() для этих двух вызовов или нет.

yurc
14.12.2017
09:34:40
поменял та же ошибка ERROR: KeyError: '_jdat' CONTEXT: Traceback (most recent call last): PL/Python function "py_exec", line 3, in <module> import json PL/Python function "py_exec" ****** Ошибка ****** ERROR: KeyError: '_jdat' SQL-состояние: 38000 Контекст: Traceback (most recent call last): PL/Python function "py_exec", line 3, in <module> import json PL/Python function "py_exec"

Darafei
14.12.2017
09:35:18
очень странно выглядит keyerror вообще на обращение к переменной

yurc
14.12.2017
09:35:40
вызывал так select py_exec('select py_exec(''select 1'',''{}'');','{}');
как добавить locals() ?

Andrey
14.12.2017
09:36:17
plpy.notice(locals())

Darafei
14.12.2017
09:36:20
plpython передаёт в функцию параметры через глобальные переменные
это надо иметь в виду

yurc
14.12.2017
09:37:15
ну на 9.6 то все ок

Darafei
14.12.2017
09:38:13
»Allow PL/Python functions to call themselves recursively via SPI, and fix the behavior when multiple set-returning PL/Python functions are called within one query (Alexey Grishchenko, Tom Lane)
в 9.6 это только разрешили, вызывать рекурсивно самого себя в plpython