Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.11.2020
Сообщений: 5

Такой cost это страшно? cost=73219.95.1221773157.54 rows=18715110 width=412

18.11.2020, 07:55. Показов 1265. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
SQL
1
EXPLAIN  ANALYZE  SELECT * FROM api_isogd.datasection1;
Добрые люди проконсультируйте плизззз.
Нужно интегрироваться с внешней системой, записей в ней не много, данные начали вводить недавно, но будет расти в ближайшее время.

Меня очень пугают показания explain, уже сейчас зашкаливают, а что будет когда база увеличится в 10-30 раз.
Стоит связываться с этим подходом или лучше держаться подальше?

Hash Left Join (cost=73219.95..1221773157.54 rows=18715110 width=412) (actual time=295.530..313.536 rows=7 loops=1)
Hash Cond: (objects_part.id = objtep_part_5.object_id)
-> Hash Left Join (cost=30374.15..75729.25 rows=2119203 width=342) (actual time=81.874..98.573 rows=7 loops=1)
Hash Cond: (objects_part.id = objtep_part_2.object_id)
-> Hash Left Join (cost=4318.14..25181.60 rows=239967 width=280) (actual time=1.407..18.087 rows=7 loops=1)
Hash Cond: (objects_part.id = objtep_part_4.object_id)
-> Nested Loop Left Join (cost=5.55..17939.72 rows=38518 width=218) (actual time=0.424..17.086 rows=7 loops=1)
-> Nested Loop Left Join (cost=5.41..12753.41 rows=4361 width=156) (actual time=0.381..16.948 rows=7 loops=1)
-> Nested Loop Left Join (cost=5.27..12165.92 rows=494 width=94) (actual time=0.314..16.814 rows=7 loops=1)
Join Filter: (objtep_part.val_v = (doc_status_classifier.text)::text)
Rows Removed by Join Filter: 7
-> Nested Loop Left Join (cost=4.99..12122.03 rows=494 width=149) (actual time=0.272..16.716 rows=7 loops=1)
-> Nested Loop (cost=4.85..12055.43 rows=56 width=87) (actual time=0.197..16.493 rows=7 loops=1)
-> Bitmap Heap Scan on classifier_data classes (cost=4.85..95.09 rows=1 width=9) (actual time=0.136..0.165 rows=1 loops=1)
Recheck Cond: (class_id = 767)
Filter: ((code)::text ~~ '1.%'::text)
Rows Removed by Filter: 75
Heap Blocks: exact=11
-> Bitmap Index Scan on classifier_data_class_id_idx (cost=0.00..4.85 rows=76 width=0) (actual time=0.067..0.067 rows=76 loops=1)
Index Cond: (class_id = 767)
-> Append (cost=0.00..10935.64 rows=102471 width=80) (actual time=0.056..16.307 rows=7 loops=1)
-> Seq Scan on objects_part (cost=0.00..0.00 rows=1 width=636) (actual time=0.005..0.005 rows=0 loops=1)
Filter: (classes.doc_type_id = object_type_id)
-> Bitmap Heap Scan on objects_part00 (cost=189.75..7709.03 rows=3269 width=64) (actual time=0.045..0.121 rows=7 loops=1)
Recheck Cond: (object_type_id = classes.doc_type_id)
Heap Blocks: exact=6
-> Bitmap Index Scan on objects_part00_object_type_id_idx (cost=0.00..188.94 rows=3269 width=0) (actual time=0.026..0.026 rows=7 loops=1)
Index Cond: (object_type_id = classes.doc_type_id)
-> Index Scan using objects_part01_object_type_id_idx on objects_part01 (cost=0.14..8.16 rows=1 width=636) (actual time=0.014..0.014 rows=0 loops=1)
Index Cond: (object_type_id = classes.doc_type_id)
-> Index Scan using objects_part02_object_type_id_idx on objects_part02 (cost=0.14..8.16 rows=1 width=636) (actual time=0.016..0.016 rows=0 loops=1)
Index Cond: (object_type_id = classes.doc_type_id)
-> Index Scan using objects_part03_object_type_id_idx on objects_part03 (cost=0.14..8.16 rows=1 width=636) (actual time=0.015..0.015 rows=0 loops=1)
Index Cond: (object_type_id = classes.doc_type_id)
-> Seq Scan on objects_part04 (cost=0.00..31.32 rows=346 width=132) (actual time=0.181..0.181 rows=0 loops=1)
Filter: (classes.doc_type_id = object_type_id)
Rows Removed by Filter: 348
-> Seq Scan on objects_part05 (cost=0.00..3162.64 rows=98851 width=121) (actual time=15.893..15.893 rows=0 loops=1)
Filter: (classes.doc_type_id = object_type_id)
Rows Removed by Filter: 98851
-> Index Scan using objects_part06_object_type_id_idx on objects_part06 (cost=0.14..8.16 rows=1 width=636) (actual time=0.026..0.026 rows=0 loops=1)
Index Cond: (object_type_id = classes.doc_type_id)
-> Append (cost=0.14..1.17 rows=2 width=70) (actual time=0.025..0.027 rows=1 loops=7)
-> Index Scan using objtep_part_object_id_tep_id_key on objtep_part (cost=0.14..0.16 rows=1 width=40) (actual time=0.006..0.006 rows=0 loops=7)
Index Cond: ((objects_part.id = object_id) AND (tep_id = 1931))
-> Index Scan using objtep_part00_object_id_tep_id_key on objtep_part00 (cost=0.43..1.01 rows=1 width=70) (actual time=0.015..0.017 rows=1 loops=7)
Index Cond: ((objects_part.id = object_id) AND (tep_id = 1931))
-> Materialize (cost=0.28..14.26 rows=4 width=82) (actual time=0.005..0.008 rows=2 loops=7)
-> Index Scan using classifier_data_class_id_idx on classifier_data doc_status_classifier (cost=0.28..14.24 rows=4 width=82) (actual time=0.023..0.028 rows=2 loops=1)
Index Cond: (class_id = 766)
-> Append (cost=0.14..1.17 rows=2 width=70) (actual time=0.015..0.015 rows=0 loops=7)
-> Index Scan using objtep_part_object_id_tep_id_key on objtep_part objtep_part_3 (cost=0.14..0.16 rows=1 width=40) (actual time=0.005..0.005 rows=0 loops=7)
Index Cond: ((objects_part.id = object_id) AND (tep_id = 7988))
-> Index Scan using objtep_part00_object_id_tep_id_key on objtep_part00 objtep_part00_3 (cost=0.43..1.01 rows=1 width=70) (actual time=0.007..0.007 rows=0 loops=7)
Index Cond: ((objects_part.id = object_id) AND (tep_id = 7988))
-> Append (cost=0.14..1.17 rows=2 width=70) (actual time=0.012..0.016 rows=1 loops=7)
-> Index Scan using objtep_part_object_id_tep_id_key on objtep_part objtep_part_1 (cost=0.14..0.16 rows=1 width=40) (actual time=0.004..0.004 rows=0 loops=7)
Index Cond: ((objects_part.id = object_id) AND (tep_id = 1599))
-> Index Scan using objtep_part00_object_id_tep_id_key on objtep_part00 objtep_part00_1 (cost=0.43..1.01 rows=1 width=70) (actual time=0.005..0.007 rows=1 loops=7)
Index Cond: ((objects_part.id = object_id) AND (tep_id = 1599))
-> Hash (cost=4297.01..4297.01 rows=1246 width=70) (actual time=0.936..0.936 rows=71 loops=1)
Buckets: 2048 Batches: 1 Memory Usage: 21kB
-> Append (cost=0.00..4297.01 rows=1246 width=70) (actual time=0.093..0.827 rows=71 loops=1)
-> Seq Scan on objtep_part objtep_part_4 (cost=0.00..1.44 rows=1 width=40) (actual time=0.024..0.024 rows=0 loops=1)
Filter: (tep_id = 7968)
Rows Removed by Filter: 35
-> Bitmap Heap Scan on objtep_part00 objtep_part00_4 (cost=30.08..4295.58 rows=1245 width=70) (actual time=0.066..0.688 rows=71 loops=1)
Recheck Cond: (tep_id = 7968)
Heap Blocks: exact=67
-> Bitmap Index Scan on objtep_part00_tep_id_idx (cost=0.00..29.77 rows=1245 width=0) (actual time=0.042..0.042 rows=71 loops=1)
Index Cond: (tep_id = 7968)
-> Hash (cost=25905.55..25905.55 rows=12037 width=70) (actual time=80.354..80.354 rows=13620 loops=1)
Buckets: 16384 Batches: 1 Memory Usage: 973kB
-> Append (cost=0.00..25905.55 rows=12037 width=70) (actual time=2.554..63.263 rows=13620 loops=1)
-> Seq Scan on objtep_part objtep_part_2 (cost=0.00..1.44 rows=1 width=40) (actual time=0.013..0.013 rows=0 loops=1)
Filter: (tep_id = 7967)
Rows Removed by Filter: 35
-> Bitmap Heap Scan on objtep_part00 objtep_part00_2 (cost=281.71..25904.11 rows=12036 width=70) (actual time=2.537..40.991 rows=13620 loops=1)
Recheck Cond: (tep_id = 7967)
Heap Blocks: exact=5234
-> Bitmap Index Scan on objtep_part00_tep_id_idx (cost=0.00..278.70 rows=12036 width=0) (actual time=1.815..1.815 rows=13652 loops=1)
Index Cond: (tep_id = 7967)
-> Hash (cost=42284.69..42284.69 rows=44889 width=70) (actual time=212.704..212.704 rows=46434 loops=1)
Buckets: 65536 Batches: 1 Memory Usage: 4505kB
-> Append (cost=0.00..42284.69 rows=44889 width=70) (actual time=7.473..159.829 rows=46434 loops=1)
-> Seq Scan on objtep_part objtep_part_5 (cost=0.00..1.44 rows=1 width=40) (actual time=0.026..0.026 rows=0 loops=1)
Filter: (tep_id = 1555)
Rows Removed by Filter: 35
-> Bitmap Heap Scan on objtep_part00 objtep_part00_5 (cost=1040.31..42283.25 rows=44888 width=70) (actual time=7.442..90.692 rows=46434 loops=1)
Recheck Cond: (tep_id = 1555)
Heap Blocks: exact=12743
-> Bitmap Index Scan on objtep_part00_tep_id_idx (cost=0.00..1029.09 rows=44888 width=0) (actual time=5.506..5.506 rows=46958 loops=1)
Index Cond: (tep_id = 1555)
SubPlan 1
-> Limit (cost=0.42..0.47 rows=1 width=8) (actual time=0.093..0.093 rows=0 loops=7)
-> Nested Loop (cost=0.42..466.41 rows=9222 width=8) (actual time=0.091..0.091 rows=0 loops=7)
-> Append (cost=0.42..13.16 rows=18 width=8) (actual time=0.013..0.027 rows=1 loops=7)
-> Index Scan using c_obj_object_slave_id_idx on c_obj_object (cost=0.42..8.44 rows=1 width=8) (actual time=0.011..0.012 rows=1 loops=7)
Index Cond: (slave_id = objects_part.id)
-> Index Only Scan using c_obj_object_master_id_slave_id_role_key on c_obj_object c_obj_object_1 (cost=0.42..4.72 rows=17 width=8) (actual time=0.012..0.012 rows=0 loops=6)
Index Cond: (master_id = objects_part.id)
Heap Fetches: 1
-> Append (cost=0.00..23.82 rows=8 width=8) (actual time=0.051..0.051 rows=0 loops=8)
-> Seq Scan on objects_part objects_part_1 (cost=0.00..0.00 rows=1 width=8) (actual time=0.004..0.004 rows=0 loops=8)
Filter: ((object_type_id = objects_part.object_type_id) AND (c_obj_object.master_id = id))
-> Index Only Scan using objects_part00_id_object_type_id_idx on objects_part00 objects_part00_1 (cost=0.42..4.66 rows=1 width=8) (actual time=0.011..0.011 rows=0 loops=8)
Index Cond: ((id = c_obj_object.master_id) AND (object_type_id = objects_part.object_type_id))
Heap Fetches: 0
-> Index Only Scan using objects_part01_id_object_type_id_idx on objects_part01 objects_part01_1 (cost=0.14..2.61 rows=1 width=8) (actual time=0.004..0.004 rows=0 loops=6)
Index Cond: ((id = c_obj_object.master_id) AND (object_type_id = objects_part.object_type_id))
Heap Fetches: 0
-> Index Only Scan using objects_part02_id_object_type_id_idx on objects_part02 objects_part02_1 (cost=0.14..2.61 rows=1 width=8) (actual time=0.005..0.005 rows=0 loops=6)
Index Cond: ((id = c_obj_object.master_id) AND (object_type_id = objects_part.object_type_id))
Heap Fetches: 0
-> Index Only Scan using objects_part03_id_object_type_id_idx on objects_part03 objects_part03_1 (cost=0.14..2.61 rows=1 width=8) (actual time=0.004..0.004 rows=0 loops=6)
Index Cond: ((id = c_obj_object.master_id) AND (object_type_id = objects_part.object_type_id))
Heap Fetches: 0
-> Index Only Scan using objects_part04_id_object_type_id_idx on objects_part04 objects_part04_1 (cost=0.27..4.29 rows=1 width=8) (actual time=0.007..0.007 rows=0 loops=6)
Index Cond: ((id = c_obj_object.master_id) AND (object_type_id = objects_part.object_type_id))
Heap Fetches: 0
-> Index Only Scan using objects_part05_id_object_type_id_idx on objects_part05 objects_part05_1 (cost=0.42..4.44 rows=1 width=8) (actual time=0.006..0.006 rows=0 loops=6)
Index Cond: ((id = c_obj_object.master_id) AND (object_type_id = objects_part.object_type_id))
Heap Fetches: 0
-> Index Only Scan using objects_part06_id_object_type_id_idx on objects_part06 objects_part06_1 (cost=0.14..2.61 rows=1 width=8) (actual time=0.004..0.004 rows=0 loops=6)
Index Cond: ((id = c_obj_object.master_id) AND (object_type_id = objects_part.object_type_id))
Heap Fetches: 0
SubPlan 2
-> Aggregate (cost=64.30..64.31 rows=1 width=32) (actual time=0.120..0.121 rows=1 loops=7)
-> Nested Loop (cost=0.84..64.29 rows=1 width=40) (actual time=0.031..0.074 rows=2 loops=7)
-> Index Scan using files_tree_parent_id_idx on files_tree ft (cost=0.42..10.11 rows=4 width=32) (actual time=0.013..0.027 rows=5 loops=7)
Index Cond: (objects_part.id_folder = parent_id)
-> Index Scan using files_parent_id_idx on files f (cost=0.42..13.52 rows=3 width=24) (actual time=0.005..0.006 rows=0 loops=35)
Index Cond: (parent_id = ft.id)
SubPlan 3
-> Limit (cost=0.42..0.48 rows=1 width=8) (actual time=0.043..0.044 rows=1 loops=7)
-> Nested Loop (cost=0.42..97.44 rows=1594 width=8) (actual time=0.041..0.041 rows=1 loops=7)
-> Append (cost=0.42..13.16 rows=18 width=8) (actual time=0.009..0.014 rows=1 loops=7)
-> Index Scan using c_obj_object_slave_id_idx on c_obj_object c_obj_object_2 (cost=0.42..8.44 rows=1 width=8) (actual time=0.007..0.007 rows=1 loops=7)
Index Cond: (slave_id = objects_part.id)
-> Index Only Scan using c_obj_object_master_id_slave_id_role_key on c_obj_object c_obj_object_3 (cost=0.42..4.72 rows=17 width=8) (actual time=0.028..0.029 rows=1 loops=1)
Index Cond: (master_id = objects_part.id)
Heap Fetches: 1
-> Append (cost=0.00..4.66 rows=2 width=8) (actual time=0.020..0.020 rows=1 loops=8)
-> Seq Scan on objects_part objects_part_2 (cost=0.00..0.00 rows=1 width=8) (actual time=0.001..0.001 rows=0 loops=8)
Filter: ((object_type_id = 163) AND (c_obj_object_2.master_id = id))
-> Index Only Scan using objects_part00_id_object_type_id_idx on objects_part00 objects_part00_2 (cost=0.42..4.66 rows=1 width=8) (actual time=0.012..0.012 rows=1 loops=8)
Index Cond: ((id = c_obj_object_2.master_id) AND (object_type_id = 163))
Heap Fetches: 0
Planning time: 26.868 ms
Execution time: 314.758 ms
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.11.2020, 07:55
Ответы с готовыми решениями:

Нет перегруженной подпрограммы с такими типами параметров(в строке if a[i].cost>maxx then maxx:=a[i].cost; )
//Процедура нахождения максимальной-минимальной цены// procedure max_min(var a:spr; n:integer); var maxx,minn:integer; i:integer; ...

В Delphi есть оператор cost i of. и т.д. Есть ли в C++ такой же оператор?
(C++ Builder XE5)

разложить фунцию f(t)=cost в ряд Фурье
Привет всем! Помогите пожалуйста разложить функцию f(t)=cost в ряд Фурье: 1) 2) Изобразить полученые гармоники та их...

6
1264 / 978 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
18.11.2020, 21:13
планы надо всегда выкладывать с форматированием.
отступы узлов важны для понимания порядка
а лучше ссылку на вот сюда
0
0 / 0 / 0
Регистрация: 18.11.2020
Сообщений: 5
19.11.2020, 10:02  [ТС]
На сам запрос я повлиять не могу, мне понять, если стоимость очень большая, то это неминуемо приведет к большой загрузке процессора и увеличение времени реакции системы.
Я правильно понимаю?

Добавлено через 28 минут
Если правильно понял, вот ссылка
https://explain.depesz.com/s/ctK8

Добавлено через 13 минут
и вот еще один запрос
https://explain.depesz.com/s/OJ2B

мне бы понять, на сколько это в будущем может вызвать не разрешимые проблемы?
структуру данных менять не могу.

Добавлено через 2 часа 6 минут
возможно уже сам себе ответил,
прогнал эти запросы на практически пустой базе,
получил не сравнимо меньшие значения cost что то около 122.
...
Похоже в процессе роста БД нагрузка будет очень сильно возрастать а соответственно расти время реакции системы, а голову будут снимать с меня.
0
1264 / 978 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
19.11.2020, 12:34
никогда не доверяйте результатам плана на пустой базе.
все нагрузочные проверки только на реальных или модельных данных.
ну и cost - это безразмерные попугаи относительно seq_page_cost! они в том числе зависят от статистики, которую база периодически обновляет.
вообще план запроса может зависеть от статистики.
обязательно перед анализом запросов обновляйте статистику
(см. команду ANALYZE)

при анализе запроса пользуйтесь параметрам analyze, buffers, timings и т.п.
чтобы анализатор запросов именно выполнял ваш запрос и именно показывал реальные затраты наряду с оценочными.
0
0 / 0 / 0
Регистрация: 18.11.2020
Сообщений: 5
19.11.2020, 14:51  [ТС]
вот запрос с ANALYZE на живой БД
EXPLAIN ANALYZE SELECT * FROM api_isogd.datasection1;
https://explain.depesz.com/s/ctK8

вот оценка
cost=73219.95..1221773157.54 rows=18715110 width=412) (actual time=295.530..313.536 rows=7 loops=1

пока скорость сносная, но если БД увеличится в 10 раз, как может это сказаться на скорости
или пока скорость устраивает наплевать на cost?
0
1264 / 978 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
19.11.2020, 21:28
это может сказаться отрицательно.
самая главная проблема - у вас очень много nested loop join.
то есть просто тупо перебор всего идет каждый раз.
тут оценка просто перемножение вариантов, потому что вложенные циклы везде, в некоторых случаях hash join

чем больше данных, тем больше будет тупо перебрирать.
при этом выхлоп у вас мизерный.
обратите внимание на верхний уровень плана.
выбирает 6877 записей,
при этом для каждой записи два раза лезем в невероятно большой join, который перемалывает много раз одну и туже таблицу и достает оттуда всего по одной записи.

пока вас спасают индексы, которые быстро достают нужные записи в objtep.
размер базы вырастет, индексы вырастут и проблема может появится неожиданно.
внесите под explain параметры buffers, timing, verbose
следите за операциями извлечения данных по вашим таблица objects и objtep и индексам у этих таблиц (что читается с диска и сколько; чем больше таблица или индекс, тем меньше шансов ее размещения в памяти)
следите за размерами сортировки, когда distinct делается.

судя по всем, у вас это вьха какая-то.
запрос вьюхи нуждается в значительном рефакторинге.

также у вас используется партицирование таблиц - оправдано оно или нет??!
нужно прикинуть, будет оно работать правильно при увеличении объема данных или нет.
0
0 / 0 / 0
Регистрация: 18.11.2020
Сообщений: 5
20.11.2020, 07:05  [ТС]
Огромное спасибо за ответ!
Да это view, но на ее создание повлиять не могу, у меня нет доступа к реальным таблицам.
Опасения мои оправдались,
еще раз огромное спасибо за ответ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.11.2020, 07:05
Помогаю со студенческими работами здесь

Ошибка CS0161 "Priysadebnoe.cost()": не все ветви кода возращают значение
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace...

Ошибка run time error 6 overflow, что не так? (без cost.Text = c6 вроде сначала робил, а потом удалял и всё равно ошибка
Dim h, w, l, wr, lr, p, a As String Private Sub CommandButton1_Click() h = InputBox("Введите высоту комнаты в метрах::") ...

Страшно это делать. кто делал это с планшетом?
Хочу изменить место хранения на SD, но андроид говорит что некоторые приложения работать перестанут. Кто проставлял значения SD? Планшет не...

Бот LinkExchanger v2.0 checker - это страшно? :)
Сразу еще один вопрос возник. Предыстория. Общался с знакомым вебмастером по теме каталогов, вот цитата: R> на данный...

Rows cannot be programmatically added to the DataGridView's rows collection when the control is data-bound
Здравствуйте! Столкнулся с такой проблемой. Есть компонент dataGridView, он связан с одной из таблиц компонента DataSet, даные в которую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru