Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.52/131: Рейтинг темы: голосов - 131, средняя оценка - 4.52
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549

Архитектура: парсинг и выгрузка текстовиков

11.03.2020, 10:51. Показов 32420. Ответов 421

Студворк — интернет-сервис помощи студентам
начало было положено в ветке - Считать текстовые файлы из папки - там и возник вопрос об Архитектуре...
Цитата Сообщение от JeyCi Посмотреть сообщение
так и не собрала эти все объекты этого класса в group class...
вроде уже собрала...
осталось отображение создать (типа I_tbl_Show) и пронаследовать ? в разные классы пункта назначения (или на консоль, или в файл, или в БД, или допустим ещё в форму)... N.B. классы (пункты-назначения) делать не надо - эти View уже реализованы разработчиками того ПО, на котором сейчас идёт работа...
а) пока что можно просто прописать функции-члены класса; и по месту использовать, что надо при разработке - в файл или на консоль;
б) в перспективе для Release - реализовать и откомпилировать и выгрузку и в файл, и выгрузку в БД, и отражение в DataGrid...
===
!! Т.Е. если в Release захочется и выгрузку в текст, и в БД, и допустим ещё в форму (например с разных кнопок сделать) - тут уж лучше и писать, как положено, наследование??... -- к слову из прошлой ветки о:
Цитата Сообщение от JeyCi Посмотреть сообщение
полагаю тут Наследования никакого не пригодится?
... или как раз тут (при выборе направления выгрузки) его (наследование) делать??
===
Обоснование выбора уровня Абстракции (I_tbl_Show со всеми виртуальными функциями):
чтобы не дублировать код-сбора-для-выгрузки -- сделать class Table - и класс-интерфейс I_tbl_Show, в котором обозначить virtual-функции выгрузки... эти функции определить в др. классах - типа Interface (IwriteCSV, IwriteDB, IwriteDataGrid)...
p.s.
классы консоль, файл, бд, DataGrid - не создаём, т.к. эти пункты назначения уже присутствуют...
p.p.s.
вывести конечные интерфейсы с определёнными методами записи на кнопки...
===
ИЛИ то, что подчёркнуто чуть выше, стоит реализовать в одном классе Table, и здесь же задать все virtual функции ??
===
на скрине: синие - классы, зелёные - интерфейсы (в с++ по сути тоже классы)
птицами отмечены уже кое-как реализованные классы (2 птицы)
курсивные стрелки - отсутствие наследования


Добавлено через 7 минут
вобщем вопрос:
class Table и класс I_Tbl_Show - объединить или нет?

Добавлено через 10 минут
p.p.s.
чтобы избежать проблем Ромба и такого:
Неоднозначность при множественном наследовании
Цитата Сообщение от DrOffset Посмотреть сообщение
Тут нужно виртуальное наследование.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.03.2020, 10:51
Ответы с готовыми решениями:

Проверка двух текстовиков
Написать прогу на языке Си, проверяющую, совпадают ли тексты в двух файлах #include <stdio.h> #include <stdlib.h> ...

Access модуль объединения текстовиков
Добрый день. Очень нужен модуль access который будет объединять текстовые файлы с предложенной папки (каждый раз разные названия и...

Сделать скрипт для вывода текстов из текстовиков
Здравствуйте! Не могли бы помочь сделать скрипт для вывода текстов песен из текстовиков в папке. Расскажу подробней: есть папка с...

421
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.06.2020, 20:04
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от JeyCi Посмотреть сообщение
т.е. неужели мы элементы вектора фьючей не сможем использовать в лямбде, например, функции std::accumulate ?
Цитата Сообщение от JeyCi Посмотреть сообщение
auto res=[](int n, std::future<int> a) {n=a.get(); return n;};
[](int n, std::future<int> &a)
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
05.06.2020, 21:24  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
[](int n, std::future<int> &a)
и всё равно возвращает только последний square в массиве - не сумму всех...
ок спасибо, хоть лямбда запускается!... надо см. тело лямбды и/или accumulate...

Добавлено через 1 час 2 минуты
в принципе без accumulate - по вашему коду работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <future>
#include <vector>
 
using namespace std;
 
int square(int x) {
    return x * x;
}
 
int main() {
    std::vector<std::future<int>> futures;
    for (int i = 0; i < 4; ++i)
        futures.push_back(std::async(&square, i));
 
    int sum=0;
    for (auto& n : futures)
        sum += n.get();
 
    cout << "threads returned " << sum << endl;
    
    return 0;
}
или
C++
1
2
    int sum=0;
    std::for_each(futures.begin(), futures.end(), [&] (std::future<int> &n) {sum += n.get();});
надеюсь thread_safe ?.. ещё надо покопать...
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.06.2020, 21:24
Цитата Сообщение от JeyCi Посмотреть сообщение
надеюсь thread_safe ?.. ещё надо покопать...
А что тут должно быть не thread-safe?
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
05.06.2020, 21:27  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
А что тут должно быть не thread-safe?
sum +=
я ещё пока разбираюсь с <atomic> -- ещё сама себе не верю по этому вопросу... но, надеюсь, библиотека async в её header'e -- уже учла все нюансы... хотя этот int sum к ней не имеет, вроде, никакого отношения...
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.06.2020, 21:30
Цитата Сообщение от JeyCi Посмотреть сообщение
sum +=
Это же в одном потоке суммируется
1
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
05.06.2020, 21:56  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Это же в одном потоке суммируется
точно!! уже ведь вышли из async в главный поток! - ок...
стр.20 этой pdf - буду стремиться к этому...
спасибо, вами уже положено начало моего пути...

Добавлено через 13 минут
p.s. ошибки многопоточности (точнее способов её применения)
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
06.06.2020, 20:07  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
без accumulate
и с accumulate
C++
1
2
3
    auto res=[]( int &sum, std::future<int> &a) -> int {sum += a.get(); return sum;};
    int sum = std::accumulate(futures.begin(),futures.end(),0,res);     //!! accumulate WORKING   
    cout << "all threads returned sum of squares: " << sum << endl;
Добавлено через 41 минуту
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
std::async запускает задачу в пуле потоков.
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
std::vector<std::future<void>> futures;
вот интересное предположение мне кажется:
может future (как результат promise) на этапе fut.get() в C++ как раз и есть тот самый async await в Python или C# ??
ведь помню, что запускала на Py и хороший выигрыш во времени получала (по сравнению с vba)... может есть какое-то подобие этого await в C++ ?
а сам future так похож на функциональность await в Py, C#...
Техника написания аналога await/async из C# для C++
p.s.
не говорю, что сам async - плох, просто ещё не переделала всё тз на с++... но интересны корни и подобие с async await из др. языков

Добавлено через 16 минут
p.s.
или всё-таки их await - это может быть наш std::this_thread::yield() ?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
06.06.2020, 20:24
Цитата Сообщение от JeyCi Посмотреть сообщение
или всё-таки их await - это может быть наш std::this_thread::yield() ?
Вряд ли. yield просто переносит текущий поток в конец очереди планировщика. Иначе говоря, отдаёт остаток своего кванта времени другим потокам.
1
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
06.06.2020, 22:10  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Иначе говоря, отдаёт остаток своего кванта времени другим потокам.
тоже неплохо, когда потоку уже делать нечего...
Добавлено через 1 час 26 минут
===
Python link:
пример по линку ниже
Потоки — это пять секретарей, у каждого из которых по одной задаче, но только одному из них разрешено работать в определенный момент времени. Для того, чтобы секретари работали в потоковом режиме, необходимо устройство, которое контролирует их работу, но ничего не понимает в самих задачах. Поскольку устройство не понимает характер задач, оно постоянно переключалось бы между пятью секретарями, даже если трое из них сидят, ничего не делая. Около 57% (чуть меньше, чем 3/5) переключения контекста были бы напрасны. Несмотря на то, что переключение контекста процессора является невероятно быстрым, оно все равно отнимает время и ресурсы процессора.

threads for Cores
Например, если у вас есть строка кода, которая запрашивает что-либо с сервера, то это означает, что ваша программа не делает ничего во время ожидания ответа. В некоторых случаях это допустимо, но во многих — нет. Одним из решений этой проблемы являются потоки (threads).
p.s.
в python
Ключевое слово await показывает, что вы ожидаете завершения сопрограммы.
а асинхронность добавляется за счёт aiohttp.get(url) и
Ключевое слово async идет до def, чтобы показать, что метод является асинхронным.
Хотя асинхронное программирование и позволяет обойти проблемные места потоков, оно было разработано для совершенно другой цели — для переключения контекста процессора.
Асинхронное программирование — это потоковая обработка программного обеспечения / пользовательского пространства, где приложение, а не процессор, управляет потоками и переключением контекста. В асинхронном программировании контекст переключается только в заданных точках переключения, а не с периодичностью, определенной CPU.
- вобщем логично
Цитата Сообщение от DrOffset Посмотреть сообщение
смотрите на уровень абстракции.
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
07.06.2020, 07:43  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
В асинхронном программировании контекст переключается только в заданных точках переключения, а не с периодичностью, определенной CPU.
WinAPI возможности:
Using Fibers (пример работает). Глава 12. Волокна
следует помнить, — в потоке может быть одно или несколько волокон
Using the Thread Pool Functions (пример не работает?)
User-Mode Scheduling
UMS threads differ from fibers in that each UMS thread has its own thread context instead of sharing the thread context of a single thread.
The ability to switch between threads in user mode makes UMS more efficient than thread pools for managing large numbers of short-duration work items that require few system calls.
Добавлено через 4 минуты
Async / await with fibers

Добавлено через 1 минуту
C++ Windows / POSIX Fiber Library - lib example

Добавлено через 22 минуты
вобщем новая Задача (для саморазвития): переключать контексты не на уровне ядра...
как переключаютя контексты на уровне ядра oleg-m1973 отразил в своём блоге (параллельно)...
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
07.06.2020, 16:20  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
Using Fibers (пример работает
не очень работает...
но работает здесь на кибере
Fibers offer much better performance than threads
wiki Fiber:
Fibers describe essentially the same concept as coroutines. The distinction, if there is any, is that coroutines are a language-level construct, a form of control flow, while fibers are a systems-level construct, viewed as threads that happen to not run concurrently. It is contentious which of the two concepts has priority: fibers may be viewed as an implementation of coroutines,[1] or as a substrate on which to implement coroutines
... вобщем в boost'e можно найти...
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
07.06.2020, 22:43  [ТС]
ВЫВОД по Concurrency:
Конкурентность выполняется std::async ...
Concurrent queue – C++11
Concurrent object wrapper – C++11 – Part I
Concurrent object wrapper – C++11 – Part II
никакой экзотики мне пока не надо...
разве что c++v20, вероятно, Using C++ Coroutines with Boost C++ Libraries...
-----
писать удобные Wrappers - чтобы сделать код reusable... >>> уже послужит пользой нормальной Архитектуре!.. и, полагаю, полезной целью на начальном этапе знакомства с языком... имхо... и дальнейшей читабельности и сопровождаемости (!!) кода...
===
там же есть пример Simple observer pattern – C++11... если всё-таки потокам (в многопоточности) когда-нибудь понадобиться уведомлять др др о каком-либо событии -- можно (?) попробовать рассмотреть этот вариант...
0
07.06.2020, 22:45

Не по теме:

JeyCi, тебе не надоело?

0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
09.06.2020, 19:16  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
может future (как результат promise) на этапе fut.get() в C++ как раз и есть тот самый async await в Python или C# ??
оказалось банально просто: (boost)
хоть futures & promises и могут передавать данные из одного потока в др. без необходимости использовать синхронизацию (в них это уже, видимо, заложено), но метод get() фьюча - блокирующий метод, которому надо ожидать др. поток...
при этом
The Windows Runtime has a relatively simple async model in the sense that, like everything else in the Windows Runtime, it’s focused on allowing components to expose async methods and making it simple for apps to call those async methods. It doesn’t in itself provide a concurrency runtime or even anything in the way of building blocks for producing or consuming async methods. Instead, all of that is left to the individual language projections.
и в то же время
когда начались поставки Visual Studio 2015. В этом издании компилятор Visual C++ включает экспериментальный параметр /await, который разблокирует реализацию сопрограмм, напрямую поддерживаемых компилятором. Больше никаких выкрутасов, макросов и прочей магии. Это настоящая вещь, пусть даже экспериментальная и пока не санкционированная комитетом по C++. И это не просто синтаксический сахар в блоке предварительной обработки в компиляторе, как ключевое слово yield и async-методы в C#. Реализация в C++ включает глубокие изменения, внесенные инженерами в блок окончательной обработки в компиляторе
ВЫВОД:
Win Runtime - очень простенький, асинхи только если на уровне языка реализовать...
однажды новый Compiler дал возможность делать нормальные await'ы -- что и даёт теперь возможность писать нормальные корутины на C++ (благодаря появлению так называемых возобновляемых функций (resumable functions). - насколько поняла ), а не синтаксический сахар на C#...
НО раньше это добрО тоже как-то разрабатывалось ручками...... и без слова await (для которого нужен VS compiler - точнее его MASM [ml.exe], отвечающий за ассемблер)...
в Boost в принципе есть !! lock-free queues неблокирующей природы - для реализации producer'a и consumer'a, полагаю, как вариант (чтобы не сооружать atomic), но будут ли эти producer и consumer неблокирующими на этапе равнозначном future.get() по смыслу, -- ещё надо подумать?? (ведь писали же люди как-то раньше без нового VS компилятора?)

Добавлено через 3 минуты
P.S.
Корутины - по сути кооперативная многозадачность...
===========
Добавлено через 57 минут
Цитата Сообщение от JeyCi Посмотреть сообщение
(ведь писали же люди как-то раньше без нового VS компилятора?)
а вот, наверно, и ответ - как вариант?? неблокирующий...
? а можно и по-старинке - на callback'ах... (видела где-то на stackoverflow)
Использование коллбеков
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Использование коллбеков
//Где callback - это функция, которая будет вызвана после окончания асинхронной записи. 
//В качестве коллбека можно использовать лямбда-функцию, например, в синтаксисе С++
  
                                        
Socket src, dst;                        
byte buffer[1024];                      
void copy() {                           
  async_read(src, buffer, on_read);      
}                                       
void on_read(int n) {                   
  if (n <= 0) return;                   
  async_write(dst, buffer, n, copy);    
}

Использование сопрограмм
C++
1
2
3
4
5
6
7
8
9
10
  // Использование сопрограмм
  
  void copy(Socket src, Socket dst) {
    byte buffer[1024];
    for (;;) {
      int n = await async_read(src, buffer);
      if (n <= 0) return;
      await async_write(dst, buffer, n);
      }
    }

хотя в одном из предыдущих линков:
While there are a variety of ways to handle async completion, there are only two that I recommend: the async.get method, which performs a blocking wait, and the co_await async expression, which performs a cooperative wait in the context of a coroutine. Neither is better than the other as they simply serve different purposes.
- осталось разобраться с purposes чтобы чётко определиться с тз...
а Архитектуру - лучше классами -- потом чуть что рефакторить проще... (ещё полистать, как компилятор обрабатывает наследование)

Добавлено через 36 минут
Цитата Сообщение от JeyCi Посмотреть сообщение
- осталось разобраться с purpose
? всё-таки мой ВЫВОД:
надо блокировать - чтобы вернуть значение окончания подгрузки... но т.к. оно мне по сути не надо (т.к. записывается в файл(ы)) - то просто счётчик handler'ов на promices организовать - и т.к. сами txt/json файлы небольшие 1-100кб -- то уже на этапе promise последний +1 в принципе = окончание подгрузки... хм, хотя - окончание будет, когда окончит асинхронно грузится самый большой в пуле потоков?!.. всё равно ведь 1-100кб - немного...но вопрос с какого шага вытаскивать handler остаётся -- с шага promise или лучше с шага fut.get ?)..
p.s.
вобщем на файлах из сети это похоже бессмысленный вопрос - т.к. connection 1 ?
а файлы с HDD - по 1-100кб и так быстро прочитаются - даже в количестве ~ 20000...
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
10.06.2020, 07:59  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
просто счётчик handler'ов на promices организовать
а можно и handler'ы на файлы мониторить, сравнивая с количеством handler'ов на на promises ...
Перенаправление вывода при запуске процесса
всем спасибо!... пошла изучать язык
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
11.06.2020, 19:23  [ТС]
хоть Pipes и работают с, например, файлами... CoPipe :: Ultimate++...
но идея с handlers в общем и целом ничего... можно по Событию закрытия файла - сбрасывать handlersCount -1... (пока не дойдём до нуля открытых для записи файлов)... чтобы блокировать только счётчик, а не сам future .get()... при подгрузке из сети... хотя блокировать на этапе SaveToFile тоже, наверно, придётся - т.к. hdd-пространство общее... имхо... ок, будем как-то выкручиваться?
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
13.06.2020, 14:59  [ТС]
очень помогает книга — Стивен С. Дьюхерст, C++. Священные знания...
началА с главы 23 - чтобы нормально вписаться в either std or upp namespace
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
16.06.2020, 09:47  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
async completion
Input/output completion port
...жаль, что на win32API - он мне пока не нравится...
здесь много инфо (даже упражнения в конце))

Добавлено через 12 минут
и лист функций - -( включая •WriteFile)
The following functions can be used to start I/O operations that complete by using I/O completion ports.
Добавлено через 25 минут
P.S.
WinAPI IOCP Programming: Scalable File I/O
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
18.06.2020, 22:31  [ТС]
Последний вопрос, который остался, видимо:
если в main() я запускаю app.Run где App app, a App:TopWindow... т.е. по сути - мой app - это наследник от базового класса моей IDE (который в свою очередь даёт возможность запустить мой GUI)... свой класс App я закодила, как мне удобно (кнопочки, листбокс etc)... НО мне в нём надо использовать экземпляры другого(!) класса - возможно ли это или я должна что-то от чего-то наследовать в таком случае?.. мне думается, что по примеру отсюда - это возможно (без ненужного наследования).............
P.S.
и опять останется только вопрос потоков - если GUI (мой класс App) в своём потоке, отдельном от main()... а Download мне надо отдельным потоком от GUI, в последний только уведомить об окончании подгрузки... ну или отдельным потоком ПрогрессБар отражать... то тут и надо, наверно, коллбэками настроить общение между потоками одного приложения - пример... и не путать с потоками для Loop (в U++ за это отвечает CoWork родной класс)... вобщем Multithreading бывает разной - как минимум, эти два случая уметь реализовать:
- взаимодействие др. потоков с GUI;
- синхронизация и intercommunication (если надо) потоков в рамках распараллеливания алгоритма или мультизадачности...
в Ultimate++ примере по линку есть коммент в IDE reference:
// This example shows older way how to do multithreded GUI using PostCallback to communicate
// between worker thread and main GUI thread.
// While PostCallback is still useful in certain circumstances, new applications are
// perhaps better off using GuiLock and Call, as demostrated in GuiLock reference example
но тоже стоит аккуратно использовать Call
Warning: Call temporarily unlocks GuiLock (if locked) so that the main thread can run on GUI, this is possible source of race-conditions (GuiLock is relocked after call completes). Be prepared that some other code can run on GUI between call to Call and cb being executed!

вопрос, наверно, звучит, как: "если есть класс GUI и класс Downloader - Можно ли 2 этих класса прогонять в своих потоках - и что для этого надо?"... sorry что такой расплывчатый вопрос -- но в примерах такую многогранную архитектуру обычно не отражают (чтобы и GUI и Dowloader и класс формирования линков и классы для Output от абстрактного условно GetResult)...
спрашиваю, чтобы не написать себе сразу в коде проблем... какие подводные камни в такой многопоточности могут появиться ?.. помимо уже озвученной важности синхронизации и не-попадания в deadlocks и race-conditions...
вобщем, как обеспечить взаимодействие main() и класса GUI- где какой код делать?.. - наверно, тоже вопрос архитектуры для меня, как человека знакомого только с vba, и незнакомого с ООП и с разработкой графического интерфейса программы...

Добавлено через 11 минут
вообще кажется, что в main'e можно только app.Run и больше ничего... а всю суть работы засунуть в методы этого класса App:TopWindow (который и есть GUI) ??.. а из него вызывать др. классы или пользоваться их экземплярами... имхо...
а то уже в процедурной манере набросала код - работает , пока GUI зависает
-- надо разбросать по классам и обеспечить использование классов друг в друге?

(т.е. всё переделать... но пока хоть так работает на библиотеках C++ - то, что на vba сломалось для win10)
0
 Аватар для Recrut_rf
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,475
18.06.2020, 23:16
JeyCi, вопрос тупой конечно же, но всё же - а где всё это делается? Я имею ввиду - какие библиотеки используются. В Qt, к примеру, всё это (не могу с абсолютной уверенностью утверждать, потому как ничего подобного не делал) делается без особых проблем, да и примеры найти не проблема.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.06.2020, 23:16

В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу
Добрый день. При запуске программы выскакивает вот такая вот ошибка. В чем может быть проблема и как ее исправить?

архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников
сабж. кто чем может помочь юному,непонемающему в этой области человеку.желательно книгами.спасибо.

Ошибка "в указанном dsn архитектура драйвера и архитектура приложения"
Вот такая ошибка при нажатии на кнопку &quot;Проверить соединение&quot; Я прочитал, что это возможно из за того, что моя система 64, а...

Архитектура бд
Я начинающий php-разраб. Пишу свой проект для своего города. Но встал вопрос о архитектуре. Пользователь создает свою страницу с...

Архитектура БД
Доброго времени суток.Задание написать АИС Учёт абонентов телефонной сети предприятия. Краткое описание предметной области: В состав...


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

Или воспользуйтесь поиском по форуму:
180
Ответ Создать тему
Новые блоги и статьи
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru