Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 1
Регистрация: 16.04.2022
Сообщений: 1,009

Секционирование

13.03.2024, 15:22. Показов 1008. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Сначала создается структура таблицы (без указания partition by range ("column1")) и добавляются строки. Далее нужно задать секционирование.

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DROP TABLE IF EXISTS test1.myTable1;
CREATE TABLE test1.myTable1 ("column1" INTEGER);
 
INSERT INTO
    test1.myTable1 
SELECT
    t1."value" * 100 + t2."value"   
FROM
    (SELECT pg_catalog.generate_series(2022, 2023,1) AS "value") t1
CROSS JOIN
    (SELECT pg_catalog.generate_series(1, 12, 1) AS "value") t2
    
ALTER TABLE test1.myTable1 ADD partition BY range ("column1"); --??? 
    
CREATE TABLE test1.myTable1_2022 partition OF test1.myTable1 FOR VALUES FROM (202201) TO (202301);
CREATE TABLE test1.myTable1_2023 partition OF test1.myTable1 FOR VALUES FROM (202301) TO (202401);
Скажите, как в Alter правильно привязать секционирование?

Добавлено через 2 часа 55 минут
Или partition BY range ("column1") можно использовать только при CREATE TABLE?

Добавлено через 3 часа 24 минуты
Можно использовать только при create table.

Добавлено через 27 минут
Кликните здесь для просмотра всего текста
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
--Создается таблица как партиционированная
CREATE TABLE test1.myTable1
(
    "column1" INTEGER,
    "column2" INTEGER,
    "column3" VARCHAR(255),
    "column4" VARCHAR(255),
    "column5" VARCHAR(255), 
    "column6" VARCHAR(255), 
    "column7" NUMERIC(16, 4)
)
partition BY range ("column1", "column2", "column3");
 
--Создаются таблицы как секции
CREATE TABLE test1.myTable1_2022_202201_1 partition OF test1.myTable1 FOR VALUES FROM (2022, 202201, '1') TO (2022, 202202, '1');
CREATE TABLE test1.myTable1_2022_202201_2 partition OF test1.myTable1 FOR VALUES FROM (2022, 202201, '2') TO (2022, 202202, '2');
CREATE TABLE test1.myTable1_2022_202202_1 partition OF test1.myTable1 FOR VALUES FROM (2022, 202202, '1') TO (2022, 202203, '1');
CREATE TABLE test1.myTable1_2022_202202_2 partition OF test1.myTable1 FOR VALUES FROM (2022, 202202, '2') TO (2022, 202203, '2');
CREATE TABLE test1.myTable1_2023_202201_1 partition OF test1.myTable1 FOR VALUES FROM (2023, 202201, '1') TO (2022, 202202, '1');
CREATE TABLE test1.myTable1_2023_202201_2 partition OF test1.myTable1 FOR VALUES FROM (2023, 202201, '2') TO (2022, 202202, '2');
CREATE TABLE test1.myTable1_2023_202202_1 partition OF test1.myTable1 FOR VALUES FROM (2023, 202202, '1') TO (2022, 202203, '1');
CREATE TABLE test1.myTable1_2023_202202_2 partition OF test1.myTable1 FOR VALUES FROM (2023, 202202, '2') TO (2022, 202203, '2');

После создания второй секции ругается секция "mytable1_2022_202201_2" пересекается с секцией "mytable1_2022_202201_1". Хотя там другое значение для поля "column3".

Скажите, как правильно написать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.03.2024, 15:22
Ответы с готовыми решениями:

Секционирование
Всем привет! Помогите решить такую задачу! Есть таблица заказов клиентов, которую хочу секционировать, но по "хитрому". Чтобы...

Разбиение (секционирование) в PostgreSQL
в общем есть база на 29 млн строк. в нее идет постоянная запись и из нее нужно тоже постоянно получать данные. партицирование вроде...

Секционирование большой таблицы на лету
Кейс: Имеем большую таблицу (более 2.5 млрд. записей) с нагрузкой 24х7 read/write. Записи таблицы имеют GUID объекта и привязку...

15
106 / 67 / 29
Регистрация: 22.04.2022
Сообщений: 231
13.03.2024, 17:00
Не, так не работает...
создать таблицу, а потом одним alter table разбить на секции !!!!???....
сначала надо создать секционированую таблицу, потом добавить секции, а уж потом заливать данные...

Добавлено через 26 минут
Цитата Сообщение от MConst Посмотреть сообщение
Далее нужно задать секционирование.
У Макаревича есть - пусть весь мир прогнётся по НАС
0
2 / 2 / 1
Регистрация: 16.04.2022
Сообщений: 1,009
13.03.2024, 17:22  [ТС]
Написал по другому

Кликните здесь для просмотра всего текста
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE TABLE test1.myTable1
(
    "column3" VARCHAR(255),
    "column1" INTEGER,
    "column2" INTEGER,
    "column4" VARCHAR(255),
    "column5" VARCHAR(255), 
    "column6" VARCHAR(255), 
    "column7" NUMERIC(16, 4)
)
partition BY range ("column3", "column1", "column2");
 
CREATE TABLE test1.myTable1_1_2022_202201 partition OF test1.myTable1 FOR VALUES FROM ('1', 2022, 202201) TO ('1', 2022, 202202);
CREATE TABLE test1.myTable1_2_2022_202201 partition OF test1.myTable1 FOR VALUES FROM ('2', 2022, 202201) TO ('2', 2022, 202202);
CREATE TABLE test1.myTable1_1_2022_202202 partition OF test1.myTable1 FOR VALUES FROM ('1', 2022, 202202) TO ('1', 2022, 202203);
CREATE TABLE test1.myTable1_2_2022_202202 partition OF test1.myTable1 FOR VALUES FROM ('2', 2022, 202202) TO ('2', 2022, 202203);
CREATE TABLE test1.myTable1_1_2023_202201 partition OF test1.myTable1 FOR VALUES FROM ('1', 2023, 202201) TO ('1', 2022, 202202);
CREATE TABLE test1.myTable1_2_2023_202201 partition OF test1.myTable1 FOR VALUES FROM ('2', 2023, 202201) TO ('2', 2022, 202202);
CREATE TABLE test1.myTable1_1_2023_202202 partition OF test1.myTable1 FOR VALUES FROM ('1', 2023, 202202) TO ('1', 2022, 202203);
CREATE TABLE test1.myTable1_2_2023_202202 partition OF test1.myTable1 FOR VALUES FROM ('2', 2023, 202202) TO ('2', 2022, 202203);

После создания пятой секции ругается для секции "mytable1_1_2023_202201" заданы границы, образующие пустой диапазон
Подробности: Указанная нижняя граница ('1', 2023, 202201) больше или равна верхней границе ('1', 2022, 202202).
0
106 / 67 / 29
Регистрация: 22.04.2022
Сообщений: 231
14.03.2024, 07:08
Потому, что 2023 > 2022
0
2 / 2 / 1
Регистрация: 16.04.2022
Сообщений: 1,009
14.03.2024, 08:37  [ТС]
Кликните здесь для просмотра всего текста
column1column2column3
2022, 202201, '1'
2022, 202201, '2'
2022, 202202, '1'
2022, 202202, '2'
2023, 202201, '1'
2023, 202201, '2'
2023, 202202, '1'
2023, 202202, '2'
2022, 202301, '1'
2022, 202301, '2'
2022, 202302, '1'
2022, 202302, '2'
2023, 202301, '1'
2023, 202301, '2'
2023, 202302, '1'
2023, 202302, '2

Получается так
Кликните здесь для просмотра всего текста
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
DROP TABLE IF EXISTS test1.myTable1;
CREATE TABLE test1.myTable1
(
    "column1" INTEGER,
    "column2" INTEGER,
    "column3" VARCHAR(255),
    "column4" VARCHAR(255),
    "column5" VARCHAR(255), 
    "column6" VARCHAR(255), 
    "column7" NUMERIC(16, 4)
)
partition BY list ("column1");
 
CREATE TABLE test1.myTable1_2022 partition OF test1.myTable1 FOR VALUES IN (2022) partition BY list ("column2");
  CREATE TABLE test1.myTable1_2022_202201 partition OF test1.myTable1_2022 FOR VALUES IN (202201) partition BY list ("column3");
    CREATE TABLE test1.myTable1_2022_202201_1 partition OF test1.myTable1_2022_202201 FOR VALUES IN ('1');
    CREATE TABLE test1.myTable1_2022_202201_2 partition OF test1.myTable1_2022_202201 FOR VALUES IN ('2');
  CREATE TABLE test1.myTable1_2022_202202 partition OF test1.myTable1_2022 FOR VALUES IN (202202) partition BY list ("column3");
    CREATE TABLE test1.myTable1_2022_202202_1 partition OF test1.myTable1_2022_202202 FOR VALUES IN ('1');
    CREATE TABLE test1.myTable1_2022_202202_2 partition OF test1.myTable1_2022_202202 FOR VALUES IN ('2');
  CREATE TABLE test1.myTable1_2022_202301 partition OF test1.myTable1_2022 FOR VALUES IN (202301) partition BY list ("column3");
    CREATE TABLE test1.myTable1_2022_202301_1 partition OF test1.myTable1_2022_202301 FOR VALUES IN ('1');
    CREATE TABLE test1.myTable1_2022_202301_2 partition OF test1.myTable1_2022_202301 FOR VALUES IN ('2');
  CREATE TABLE test1.myTable1_2022_202302 partition OF test1.myTable1_2022 FOR VALUES IN (202302) partition BY list ("column3");
    CREATE TABLE test1.myTable1_2022_202302_1 partition OF test1.myTable1_2022_202302 FOR VALUES IN ('1');
    CREATE TABLE test1.myTable1_2022_202302_2 partition OF test1.myTable1_2022_202302 FOR VALUES IN ('2');
CREATE TABLE test1.myTable1_2023 partition OF test1.myTable1 FOR VALUES IN (2023) partition BY list ("column2");
  CREATE TABLE test1.myTable1_2023_202201 partition OF test1.myTable1_2023 FOR VALUES IN (202201) partition BY list ("column3");
    CREATE TABLE test1.myTable1_2023_202201_1 partition OF test1.myTable1_2023_202201 FOR VALUES IN ('1');
    CREATE TABLE test1.myTable1_2023_202201_2 partition OF test1.myTable1_2023_202201 FOR VALUES IN ('2');
  CREATE TABLE test1.myTable1_2023_202202 partition OF test1.myTable1_2023 FOR VALUES IN (202202) partition BY list ("column3");
    CREATE TABLE test1.myTable1_2023_202202_1 partition OF test1.myTable1_2023_202202 FOR VALUES IN ('1');
    CREATE TABLE test1.myTable1_2023_202202_2 partition OF test1.myTable1_2023_202202 FOR VALUES IN ('2');
  CREATE TABLE test1.myTable1_2023_202301 partition OF test1.myTable1_2023 FOR VALUES IN (202301) partition BY list ("column3");
    CREATE TABLE test1.myTable1_2023_202301_1 partition OF test1.myTable1_2023_202301 FOR VALUES IN ('1');
    CREATE TABLE test1.myTable1_2023_202301_2 partition OF test1.myTable1_2023_202301 FOR VALUES IN ('2');
  CREATE TABLE test1.myTable1_2023_202302 partition OF test1.myTable1_2023 FOR VALUES IN (202302) partition BY list ("column3");
    CREATE TABLE test1.myTable1_2023_202302_1 partition OF test1.myTable1_2023_202302 FOR VALUES IN ('1');
    CREATE TABLE test1.myTable1_2023_202302_2 partition OF test1.myTable1_2023_202302 FOR VALUES IN ('2');
0
106 / 67 / 29
Регистрация: 22.04.2022
Сообщений: 231
14.03.2024, 08:54
Не совсем понятно зачем в Вашем примере Вы используете диапазоны ?
Напрашивается ....
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CREATE TABLE my_table
(
    "column1" INTEGER,
    "column2" INTEGER,
    "column3" VARCHAR(255),
    "column4" VARCHAR(255),
    "column5" VARCHAR(255),
    "column6" VARCHAR(255),
    "column7" NUMERIC(16, 4)
)
partition BY list ("column3");
 
 
CREATE TABLE my_table_1  partition OF my_table FOR VALUES IN ('1') partition BY list("column1");
CREATE TABLE my_table_2 partition OF my_table FOR VALUES IN ('2') partition BY list("column1") ;
 
CREATE TABLE my_table_1_2022 partition OF my_table_1 FOR VALUES IN (2022) partition BY list("column2");
CREATE TABLE my_table_2_2023 partition OF my_table_2 FOR VALUES IN (2023) partition BY list("column2");
 
CREATE TABLE my_table_1_2022_202201 partition OF my_table_1_2022 FOR VALUES IN (202201);
-- и тд
CREATE TABLE my_table_1_2023_202201 partition OF my_table_1_2023 FOR VALUES IN (202201);
-- и тд
0
2 / 2 / 1
Регистрация: 16.04.2022
Сообщений: 1,009
14.03.2024, 08:59  [ТС]
Цитата Сообщение от fte65 Посмотреть сообщение
Не совсем понятно зачем в Вашем примере Вы используете диапазоны ?
Изучаю и экспериментирую с секционированием. Изначально вариант был некорректен.
0
106 / 67 / 29
Регистрация: 22.04.2022
Сообщений: 231
14.03.2024, 09:07
Ну если экспериметируете...
Тогда так должно получиться....
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE TABLE test1.myTable1
(
    "column1" INTEGER,
    "column2" INTEGER,
    "column3" VARCHAR(255),
    "column4" VARCHAR(255),
    "column5" VARCHAR(255), 
    "column6" VARCHAR(255), 
    "column7" NUMERIC(16, 4)
)
partition BY range ("column1", "column2", "column3");
 
CREATE TABLE test1.myTable1_2022_202201_1 partition OF test1.myTable1 FOR VALUES FROM (2022, 202201, '1') TO (2022, 202202, '1');
CREATE TABLE test1.myTable1_2022_202201_2 partition OF test1.myTable1 FOR VALUES FROM (2022, 202201, '2') TO (2022, 202202, '2');
CREATE TABLE test1.myTable1_2022_202202_1 partition OF test1.myTable1 FOR VALUES FROM (2022, 202202, '1') TO (2022, 202203, '1');
CREATE TABLE test1.myTable1_2022_202202_2 partition OF test1.myTable1 FOR VALUES FROM (2022, 202202, '2') TO (2022, 202203, '2');
CREATE TABLE test1.myTable1_2023_202201_1 partition OF test1.myTable1 FOR VALUES FROM (2023, 202201, '1') TO (2023, 202202, '1');
CREATE TABLE test1.myTable1_2023_202201_2 partition OF test1.myTable1 FOR VALUES FROM (2023, 202201, '2') TO (2023, 202202, '2');
CREATE TABLE test1.myTable1_2023_202202_1 partition OF test1.myTable1 FOR VALUES FROM (2023, 202202, '1') TO (2023, 202203, '1');
CREATE TABLE test1.myTable1_2023_202202_2 partition OF test1.myTable1 FOR VALUES FROM (2023, 202202, '2') TO (2023, 202203, '2');
0
2 / 2 / 1
Регистрация: 16.04.2022
Сообщений: 1,009
14.03.2024, 09:40  [ТС]
Цитата Сообщение от fte65 Посмотреть сообщение
Тогда так должно получиться....
SQL
1
CREATE TABLE test1.myTable1_2022_202201_2 partition OF test1.myTable1 FOR VALUES FROM (2022, 202201, '2') TO (2022, 202202, '2');
Ругается все равно.

Добавлено через 12 минут
Если добавлять индекс
SQL
1
CREATE INDEX myTable1_idx_1 ON test1.myTable1 ("column1", "column2", "column3", "column4");
то автоматически добавляет индексы в секциях?

Или надо отдельно еще добавлять?
SQL
1
2
3
4
5
CREATE INDEX ON test1.myTable1_2022 ("column1","column2","column3","column4");
  CREATE INDEX ON test1.myTable1_2022_202201 ("column1","column2","column3","column4");
    CREATE INDEX ON test1.myTable1_2022_202201_1 ("column1","column2","column3","column4");
    CREATE INDEX ON test1.myTable1_2022_202201_2 ("column1","column2","column3","column4");
...
0
106 / 67 / 29
Регистрация: 22.04.2022
Сообщений: 231
14.03.2024, 09:45
Да автоматически добавятся..., но не любой есть ограничение на уникальные индексы и первичный ключ
0
2 / 2 / 1
Регистрация: 16.04.2022
Сообщений: 1,009
14.03.2024, 10:16  [ТС]
Получается есть три поля для секционирования: "column1" (в основном одно значение), "column2" (Год+Месяц) и "column3"(только два значения). "column1" это главная фильтрация для группировки. А "column2" и "column3" также для группировок используется.

Исходя из такой логики получается рекомендуется так сделать "column1" -> "column3" -> "column2"?

Если задать такую иерархию с иерархией "column3" -> "column1" -> "column2", то по сравнению с предыдущим вариантом как сильно будет влиять на скорость выгрузки?
0
106 / 67 / 29
Регистрация: 22.04.2022
Сообщений: 231
14.03.2024, 10:23
Вопрос не корректный, нужен хотя-бы пример запроса для выгрузки

хотя наверное пофиг, главное что-бы корректно сообщили планировщику какие секции Вам нужны
0
2 / 2 / 1
Регистрация: 16.04.2022
Сообщений: 1,009
14.03.2024, 12:44  [ТС]
Создали таблицу как партиционную и создали секции с нужными значениями. Добавили данные. Потом добавляем еще секции. Поле этого и до добавлении новых данных нужно еще что-то делать, например, перерасчет индексов?

Добавлено через 5 минут
Цитата Сообщение от fte65 Посмотреть сообщение
Вопрос не корректный, нужен хотя-бы пример запроса для выгрузки
Например, такой
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT
    "column1",
    "column2",      
    "column3",
    "column4",  
    SUM("column7") AS "column7"
FROM
    test1.myTable1
WHERE
    "column1" = 2024    
GROUP BY
    "column1",
    "column2",      
    "column3",
    "column4"
Добавлено через 34 минуты
В DBeaver создаем обычную таблицу
SQL
1
2
3
4
5
6
7
8
9
10
CREATE TABLE test1.myTable1
    (
        "column1" INTEGER,
        "column2" INTEGER,
        "column3" VARCHAR(255),
        "column4" VARCHAR(255),
        "column5" VARCHAR(255), 
        "column6" VARCHAR(255), 
        "column7" NUMERIC(16, 4)
    );
В интерфейсе DBeaver нажимаем на test1.myTable1 и заходим в секции таблиц в поле "Секционирование по:" вводим list ("column1"). Нажимаем "Сохранить" и получаем такой скрипт
SQL
1
ALTER TABLE test1.mytable1 PARTITION BY list ("column1");
Если запустить, то ругается. Если нельзя так сделать, то почему DBeaver создает такой скрипт?
0
2 / 2 / 1
Регистрация: 16.04.2022
Сообщений: 1,009
18.03.2024, 12:12  [ТС]
Создал секционирование, наполнил данные, плюс создал индексы. Но выгрузка быстрее не стала работать, а только наоборот, дольше выгружает. На что нужно обратить внимание?
0
1303 / 357 / 97
Регистрация: 14.10.2022
Сообщений: 1,085
18.03.2024, 14:13
Цитата Сообщение от MConst Посмотреть сообщение
Создал секционирование, наполнил данные, плюс создал индексы. Но выгрузка быстрее не стала работать, а только наоборот, дольше выгружает. На что нужно обратить внимание?
А с чего вы взяли, что секционирование - это "быстрее"?
Секционирование, при прочих равных - это всегда медленнее, за исключением случаев, когда вы работаете с данными строго в пределах 1...нескольких секций, причем строго ограничивая доступ к данным условием по ключу секционирования (что позволяет элиминировать секции).
0
106 / 67 / 29
Регистрация: 22.04.2022
Сообщений: 231
18.03.2024, 20:29
Цитата Сообщение от MConst Посмотреть сообщение
Создал секционирование, наполнил данные, плюс создал индексы. Но выгрузка быстрее не стала работать, а только наоборот, дольше выгружает. На что нужно обратить внимание?
Каким образом выгружаете? Нужен пример и explain analyze
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.03.2024, 20:29
Помогаю со студенческими работами здесь

Postgresql. Секционирование таблицы по хэшу. Как происходит?
В официальной документации говорится про секционирование по хэшу. Но подробности не приводятся. Как оно происходит? Допустим, у меня...

Про секционирование
Доброго времени суток, вникаю в секционирование сиквела, есть пара вопросов ответы на которые не смог нагуглить. Возможно ли сделать...

Секционирование таблицы по году совершения сделки
Здравствуйте, У меня есть таблица sdelka (Её содержимое это: id_sdelka int auto_increment primary key, data date not null, summa...

Полный бэкап MySQL с ежедневными партициями (секционирование по дням)
Всем добрый день. Для понятности: Вопрос состоит в том, что не могу разобраться с партициями. Конкретно в том, как выполняется...

СЕКЦИОНИРОВАНИЕ
Есть задача, таблицу я создам и все свяжу, но нужно создать секционирование: Построить информационно-логическую модель базы данных,...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru