Deutsch

Какие виды "маячков" бывают?

925  
7495 коренной житель14.04.25 18:42
7495
NEW 14.04.25 18:42 

Вот раньше я даже себе представить не мог, что Искусственный Интеллект будет мне программы писать!


Время идёт, ИИ пишет, а задачки практически те же: https://foren.germany.ru/programmer/f/39124479.html


batch это для виндовс, допустим файлы огромные и не видно работает моя программка или уже "зависла"...


Как это отслеживать, какие маячки бывают? На ум приходит только: "каждые 10тыщ в отдельный файл строку"




Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#1 
AlexNek патриот14.04.25 19:01
AlexNek
NEW 14.04.25 19:01 
в ответ 7495 14.04.25 18:42

непонятен вопрос смущ

В классе обычно не больше 200-300 строк и то уже нужно смотреть почему. Если больше то уже точно нужно рефакторить. ИИ тоже с этим хорошо справляется

Трасе или логирование часто может помочь.

#2 
7495 коренной житель14.04.25 19:14
7495
NEW 14.04.25 19:14 
в ответ AlexNek 14.04.25 19:01
непонятен вопрос


Я же говорю, не хочу возиться с компиляциями С++, Сшарпа и тому подобное, для питона нужен ноутбук.


ЯваСкрипт - не умеет писать текстовые файлы. А вот batch (файл .бат) тыкнул и всё работает...


Теперь вопрос такой, если ФАЙЛ с ТЕКСТОМ, который я обрабатываю настолько большой, (гигабайты),


что не вижу работает программка или уже зависла, можно прерывать, дробить на более мелкие файлы.


Можно например по вентилятору компьютера слушать, если усиленно жужжит, значит ещё работает..

Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#3 
AlexNek патриот14.04.25 21:00
AlexNek
NEW 14.04.25 21:00 
в ответ 7495 14.04.25 19:14
А вот batch (файл .бат) тыкнул и всё работает

никогда не писал проги в таком виде - это чистое садомазо спок


ФАЙЛ с ТЕКСТОМ, который я обрабатываю настолько большой, (гигабайты),

Можно делать вывод на консоль через определенное количество строк, просто ".", а если выводить символ "в начало строки", то можно и прогресс бар консольный сделать

#4 
AlexNek патриот14.04.25 21:17
AlexNek
NEW 14.04.25 21:17 
в ответ 7495 14.04.25 19:14
для питона нужен ноутбук.

чё за фигня? Для питона нужно не больше чем для создания бат файлов. Редактор и командная строка

#5 
alex445 патриот14.04.25 21:32
NEW 14.04.25 21:32 
в ответ 7495 14.04.25 19:14
ЯваСкрипт - не умеет писать текстовые файлы

пипец, как скриптизёры вообще живут?!

#6 
alex445 патриот14.04.25 21:37
NEW 14.04.25 21:37 
в ответ 7495 14.04.25 19:14

Спроси своего ИИ, как сделать оповещение о прогрессе работы программы на своём языке.


Для консоли уже подсказали. Если файл пакетами читаешь (чтобы сразу весь в память не грузить, если он действительно несколько гигабайт занимает), то на каждый пакет можешь в консоль что-то вывести.


Про пакетное чтение файлов тоже можешь ИИ спросить. Он ядрёный, он смогёт.

#7 
7495 коренной житель14.04.25 22:18
7495
NEW 14.04.25 22:18 
в ответ AlexNek 14.04.25 21:17
Редактор и командная строка


Каждый работает, как ему удобней... вот ты пришёл из мира Линукса, тебе удобней командная строка.

МНЕ командная строка НЕ НУЖНА, я хочу просто два клика по файлу, рядом появляется другой файл.


Пример задачки, (я сижу на виндовс). Я закидываю в ппапку с сотнями файлов маленький .бат, два клика


у меня появляется текстовой файл - со списком названий всех файлов и папок в этой папке. Понятно?


Никаких эксешников .ЕХЕ, никаких командных строк или сред обработки типа питон юпитер ноутбук или Ноде.йс

если других вариантов нет, значит будем делать так, кроме входяшего и выходяшего файла, будет третий файл,

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

Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#8 
alex445 патриот14.04.25 22:21
NEW 14.04.25 22:21 
в ответ 7495 14.04.25 22:18, Последний раз изменено 14.04.25 22:22 (alex445)

А обновлять этображение этого третьего файла будет четвёртый файл?

#9 
7495 коренной житель14.04.25 22:28
7495
NEW 14.04.25 22:28 
в ответ alex445 14.04.25 22:21

Зачем? Там же просто строки дописывает, файл скопировать, в другом месте посмотреть.


Программулька.бат

Вход.тхт

Выход.тхт

Строки-прогресса.тхт


по идее выход растёт, строки-прогресса растут, даже открывать не надо, просто мушкой навёл, свойства посмотрел...

Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#10 
AlexNek патриот14.04.25 22:34
AlexNek
NEW 14.04.25 22:34 
в ответ 7495 14.04.25 22:18
вот ты пришёл из мира Линукса, тебе удобней командная строка

Нет я сижу на винде и мне удобнее UI

Но вы путаете среду выполнения со средой разработки.

Батник вы же не создаёте мышкой ну и надеюсь отладку не кликами делаете. Запуск проги на питоне можно делать также через батник, так что не изменится ничего

Для питона не нужна никакая IDE, хотя с ней гораздо удобнее, откройте для себя https://code.visualstudio.com/

#11 
alex445 патриот15.04.25 00:53
NEW 15.04.25 00:53 
в ответ 7495 14.04.25 22:28

Ну тогда ещё проще держать открытым диспетчер задачь, где следить за занятостью процессора твоим процессом.

#12 
Free-man прохожий2 дня назад, 21:17
Free-man
2 дня назад, 21:17 
в ответ alex445 15.04.25 00:53

Может кто в анализе навести на мысль ?

SectionBuffer pmt_buf;
for (const auto& pkt2 : packets) {
if (pkt2.size() != 188) continue;
uint16_t pid2 = ((pkt2[1] & 0x1F) << 8) | pkt2[2];
if (pid2 != pmt_pid) continue;
std::cout << "DEBUG: PMT candidate PID found: " << pid2 << std::endl;
bool unit_start2 = pkt2[1] & 0x40;
int pointer_field2 = pkt2[4];
int payload_offset2 = 4 + (unit_start2 ? 1 + pointer_field2 : 0);
if (payload_offset2 >= 188) continue;
pmt_buf.push(&pkt2[payload_offset2], 188 - payload_offset2, unit_start2);
std::cout << "DEBUG: PMT buffer size: " << pmt_buf.data.size() << std::endl;
if (pmt_buf.complete) {
std::cout << "DEBUG: PMT section COLLECTED!" << std::endl;
int expected_len2 = pmt_buf.expected_len;
if (pmt_buf.data.size() < expected_len2) break;
uint8_t version = (pmt_buf.data[5] >> 1) & 0x1F;
std::cout << "INFO: PMT pnr:" << pnr << " version:" << int(version) << std::endl;
int section_len2 = ((pmt_buf.data[1] & 0x0F) << 8) | pmt_buf.data[2];
int pcr_pid = ((pmt_buf.data[8] & 0x1F) << 8) | pmt_buf.data[9];
std::cout << "INFO: PCR pid:" << pcr_pid << std::endl;
int prog_info_len = ((pmt_buf.data[10] & 0x0F) << 8) | pmt_buf.data[11];
int idx = 12 + prog_info_len;
int section_len = ((pmt_buf.data[1] & 0x0F) << 8) | pmt_buf.data[2];
while (idx < section_len - 1 - 4) {
uint8_t stream_type = pmt_buf.data[idx];
uint16_t elem_pid = ((pmt_buf.data[idx + 1] & 0x1F) << 8) | pmt_buf.data[idx + 2];
// VIDEO
if (stream_type == 0x1B) {
std::cout << "INFO: VIDEO pid:" << elem_pid << " type:0x" << std::hex << int(stream_type) << std::dec << std::endl;
}
// AUDIO
else if (stream_type == 0x03 || stream_type == 0x04 || stream_type == 0x0F || stream_type == 0x81) {
std::cout << "INFO: AUDIO pid:" << elem_pid << " type:0x" << std::hex << int(stream_type) << std::dec << std::endl;
}
// TTX
else if (stream_type == 0x06) {
std::cout << "INFO: TTX pid:" << elem_pid << " type:0x" << std::hex << int(stream_type) << std::dec << std::endl;
}
// Другие PID
else {
std::cout << "INFO: PID:" << elem_pid << " type:0x" << std::hex << int(stream_type) << std::dec << std::endl;
}
// Descriptors
int es_desc_len = ((pmt_buf.data[idx + 3] & 0x0F) << 8) | pmt_buf.data[idx + 4];
int d = idx + 5;
while (d + 2 < idx + 5 + es_desc_len && d + 1 < int(pmt_buf.data.size())) {
uint8_t tag = pmt_buf.data[d];
uint8_t len = pmt_buf.data[d + 1];
if (tag == 0x0A && len >= 3) {
std::string lang(reinterpret_cast<const char*>(&pmt_buf.data[d+2]), 3);
std::cout << "INFO: AUDIO lang:" << lang << std::endl;
}
d += 2 + len;
}
idx += 5 + es_desc_len;
}
break;
}
}
}
}


#13 
AlexNek патриотВчера, 11:18
AlexNek
Вчера, 11:18 
в ответ Free-man 2 дня назад, 21:17

ну хоть бы проблему описали а то даже и помощник не знает что сказать.


Этот фрагмент кода анализирует пакеты MPEG-TS (Transport Stream) для извлечения и анализа раздела PMT (Program Map Table). Это делается путем сбора пакетов PMT из вектора пакетов, сборки секции и извлечения деталей, таких как типы видео/аудио потоков, PID и язык.


В логике нет ничего ужасного, но стоит обратить внимание на несколько тонких моментов и потенциальных подводных камней.


Код успешно фильтрует пакеты TS, восстанавливает секцию PMT и извлекает информацию о потоке и дескрипторе. Логика разбора выглядит нормальной, а отладочные сообщения могут быть полезны.

#14 
alex445 патриотВчера, 11:34
NEW Вчера, 11:34 
в ответ AlexNek Вчера, 11:18

Хренасе ты умный! шок

#15 
AlexNek патриотВчера, 14:06
AlexNek
NEW Вчера, 14:06 
в ответ alex445 Вчера, 11:34

А причём тут я ?шок Пустой линии недостаточно, нужно всё в апострофы брать?

Перегнал текст с одного места в другое и задал наводящие вопросы.

Кто же в здравом уме будет с неформатированным кодом разбираться.


#16