All streams
Search
Write a publication
Pull to refresh
6
0.3
Send message

спросите chatGPT, как работать с whisper

Вообще-то там не на одну строчку, ну да ладно. Там говорится о распознавании речи, а, здесь, о распознавании текста (могу ошибаться, но, в данном случае, меня интересует последнее). Для распознавания речи есть неплохие оффлайн-модели Vosk ( https://alphacephei.com/vosk/models ), с тайм-кодами каждого слова и вероятностью его распознавания.

Представлен бесплатный сервис для транскрибации аудио и видосов в текст — TranscribeAI. Система вытащит текст из любого медиа, даже если там много помех.

На первый взгляд – очень круто! Но, не без недостатков.

Я, вот, только что загрузил туда видео: «Learn French - 500 phrases for conversations» на 2:31:26 часа – https://www.youtube.com/watch?v=qYh2Vyy3Q8c .

Буквально, вчера я распознал его французский текст, с помощью собственного скрипта на Питоне. Заметил, у себя, только несколько ошибок.

Сегодня проверил результат на вашем сервисе.

На самом деле, там не 500 французско-английских фраз, а по 1300 тех и других, т.е., всего – 2600 фраз.

Сервис мне выдал только 2046 фраз. Как я заметил, за счет потери французских предложений.

Если быть точным, фразы там периодически повторяются. Уникальных фраз в этом видео – 1080. Соответственно, пар будет – 2160. Т.е., выдано все равно меньше, даже если иметь в виду уникальность, что не факт. Например, самая первая французская фраза на видео: «Tout va bien à la maison.» – не распознана.

Чтобы проверить качество распознавания французских фраз, мне надо их сопоставить между собой, при этом, потери, во французской части, составляют, похоже, не менее 50%. Это – время, для быстрого ответа, данный вопрос, пока, опустим.

Поэтому, если улучшите, распознавание французского текста, то цены ему не будет. Я уже решил, было, написать здесь статью по своему питоновскому скрипту. Ваш сервис может ее обессмыслить… :)

Как я запускал стартап в Германии

Круто! Молодость и энергия – рулят! :)

Идея сервиса — создать веб‑платформу, где родители и дети могут временно обмениваться своими игрушками.

Я тоже думаю развить свой пет-проект ( https://habr.com/ru/articles/848836/ ) до уровня стартапа. Только, главная его идея – все бесплатно. Иначе говоря, создать бесплатную программу, разместить ее на бесплатном сайте и если она взлетит – попросить донатов. Иначе, как в анекдоте: «Если не догоню, то согреюсь!» :) .

Там идея простая, создана обучающая программа для изучения иностранных языков по методу: «запоминание руками + интерактивный звук + чтение по слогам + БКП («буквальный контекстный перевод», пример: https://habr.com/ru/articles/669178/comments/#comment_24460452 )». Также имеются демо-данные по четырем языкам, включая немецкий.

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

Поэтому, главное, сейчас, подготовка данных (компьютерных уроков). Их можно делать разными способами. Например, брать видео с англо-французскими фразами, распознавать текст (для этого я тестирую собственный скрипт на Питоне, который уже распознал первое видео, всего, с десятью ошибками), разделять английские и французские фразы, убирать повторы и получать, в итоге, французско-русские и англо-русские файлы данных, с озвучкой. Ну, или, попроще, но дороже, нанять носителя языка, который надиктует слова, фразы или текст. Но не так, как это сделано на одном оглайн-словаре, когда носительница языка начинала бодро произносить, условно говоря, каждую новую тысячу слов, но к концу списка уже начинала хрипеть. Ну, нельзя же так насиловать носительниц! Дали бы ей воды, что ли и дополнительный перерыв. Просто физически ощущается, что она за лишний десяток евро безжалостно эксплуатирует себя.

Кроме этого направления, я интересуюсь созданием двуязычных субтитров. По немецкому языку у меня тоже есть один ролик: «Генрике изучает гражданское строительство в Университете Баухаус в Веймаре» ( https://my.mail.ru/mail/emmerald/video/_myvideo/13.html )

Также, я заинтересовался идеей написания собственного самоучителя по французскому языку на французском языке (!) плюс видео к нему. Смотрите первый пример на эту тему:
001-ФранцузскийАлфавит.mp4 : https://disk.yandex.com/i/G4pJZ__AKhtHsw ,
001-ФранцузскийАлфавит.pdf : https://disk.yandex.com/i/DwEX79lOXZlJyw .

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

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

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

минималистичная модель эволюции

Интересная идея, вполне заслуживает своего развития.

С одной стороны, мы показываем, что мутации и естественный отбор могут из полного хаоса создать что-то упорядоченное. С другой стороны — мы при этом выступаем в роли Демиурга, которому приходится контролировать процесс и настраивать параметры.

Из этого можно извлечь философский подтекст. Во-первых, естественно, наличие «Высшего Заказчика» («Демиурга», по-вашему). Кто он или что из себя представляет – неважно. Главное, что есть Интерес, Желание, Цель и Возможности реализации некой Идеи.

Таковой Идеей может выступить концепция Развития, Разнообразия, Гармонии и Красоты. Или, что вы там еще подразумевали?

В качестве инструментов вы выбрали «мутации» и «естественный отбор», но при этом оставили право за «Исполнителем Заказа» «Высшего Заказчика» (которые могут быть в одном Лице) «контролировать процесс и настраивать параметры».

В общем, модель вполне практичная и способная реализовываться в разных вариациях (в компьютерном виде). Наверное, всё к тому и идет. Высшая цель существующего Разума – создать модель самого себя, а, может быть, даже превзойти себя, Когда возникнут возможности, то создать новые Миры и Вселенные, развивающиеся по выбранным, этим Разумом, законам развития.

Отсюда следует что? То, что первопричина нашего Мира – субъективна. Иначе, надо придумывать идеи «Большого Взрыва», «возникновения Всего из Ничего», вечные циклы, вроде, «Хаос – Самоорганизация – Саморазрушение», или, там, всё «Само – Само – Само» и т.п. Убедительно? Как, по мне, то так себе… :)

как запоминать слова без зубрежки

Мне нравится метод: «Запоминание руками + интерактивный звук» ( https://habr.com/ru/articles/848836/ ). Просто набираете слова либо фразы руками, слушая при этом их озвучку и одно это уже позволяет лучше запоминать как письменную, так и устную речь. При желании, фразу можно повторять вслух, прослушать еще раз, если не понял, включить видео-режим, если влом стучать по клавишам. Запомненные слова (с разделением по грамматическим категориям) можно проверить в режиме «Экзамен».

P.S. К предыдущей вашей статье, я эту ссылку уже давал, но, вы повторяетесь и я повторяюсь…

Сон и сознание
Очень много вопросов в изучении сна пока остаются без ответа.

Как я и предполагал, самые интересные вопросы оказались незатронутыми. Это:

  1. Сон и надсознание.

  2. Магия и хакеры сновидений.

Дело в том, что наше сознание ограничено не только нашим физическим телом, которое управляется автопилотом сознания – подсознанием. Кроме внутреннего, материального тела, мы имеем его энергетическое продолжение – внешнее, нематериальное, тонко-энергетическое «тело». В ближнем радиусе, это аура. Но существует и более слабое «биологическое» поле, которое может простираться на огромные расстояние (как радиоволны).

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

Всеми этими процессами управляет наше надсознание, причем, в основном, во время сна. Надсознание это тоже автопилот сознания, только не для внутреннего тела, а для внешнего.

Непосредственно, обычный человек не может управлять ни своим подсознанием, ни своим надсознанием. Однако, специалисты по эзотерическим практикам могут это делать. Для управления подсознанием они используют медитацию, самогипноз и йогу. А для управления своим надсознанием, в народе известна только (черная) магия Кастанеды и Странника. И ее развитие – в движении «хакеров сновидений», которое было распространено в «лихие 90-тые». Связано это было с безнадёгой тех времен, народ искал способы выживания, в том числе, в эзотерике. Однако, следует сказать, что это практика предназначена не для всех. Для этого надо было отречься от всех связей с внешним миром, стереть свою «личную историю», т.е., практически, исчезнуть навсегда из памяти близких и ближних. Кроме того, надо было реально совершить «сделку с Дьяволом», т.е., «продать ему душу». Сейчас это выглядит фантастикой, но из-за безвременья, после краха СССР, по этому пути пошли сотни тысяч людей, большинство из которых кончили очень плохо. Ибо, не в русской это ментальности – материальные блага ставить выше духовных.

Материалов на эту тему, в Интернете, тогда было очень много. Сейчас «поляну» явно зачистили, многого уже просто не найдешь.

Кроме чёрной магии, существует и белая магия или, другими словами, «магия любви». Это когда вы осознано даете установку своему надсознанию, например, помочь своему любимому человеку избавиться от неизлечимой болезни (которая может быть вызвана хищной паразитной формой жизни, инициируемой надматериальным способом, в том числе, в результате чьей-либо злой воли, использующей, скажем, биологическое оружие, либо, включая тайные медицинские эксперименты, в ущерб интересам людей). Избавиться от тонкоматериального хищника, пожирающего тело жертвы изнутри, можно только через свое надсознание, с помощью силы любви. Но, это, в принципе. В деталях вам эту технологию никто не расскажет.

Еще раз. Надсознание не только обеспечивает, во время сна, организм человека энергией извне, но и участвует в своих «тёрках» с внешним миром. Другими словами, человек, как бы, живет две жизни. Одна – обычная, осознанная. А вторая – сверхестественная, которую ведет его надсознание. При этом мы можем лишь изредка видеть осколки этой жизни во сне, не понимая, толком, что к чему.

Именно отсюда «растут ноги» у движения «хакеров сновидений». Чтобы «въехать в тему» можно ознакомится со знаменитой, в свое время, книгой Андрея Реутова: «Хакеры сновидений» ( https://mybook.ru/author/andrej-reutov/hakery-snovidenij-1/read/ или https://homeread.net/book/hakery-snovideniy-andrey-reutov ).

Вот его аннотация:

Роман Андрея Реутова открывает новую серию книг — «Хакеры сновидений». В основу сюжета вошли реальные события из истории российской группы исследователей, несколько десятилетий хранивших в тайне суть своих разысканий. Они называют себя Хакеры сновидений.

Также интересно узнать историю этого движения, в «лихие 90-тые», одним из столпов которых был Сергей Изриги ( https://dreamhackers.narod.ru/index1.htm https://mylektsii.su/11-97391.html ). Но, лучше искать первоисточники, современные материалы могут быть искажены…

У тебя противная манера общения. Типа хочешь мне доказать что я делаю фигню, а ты делаешь офигенные вещи. Надо теплее относиться к людям, которые тебе ничего плохого не сделали. И которые что-то делают, создают, и обращать внимание на плюсы.

Спасибо, конечно, за критику! Я, естественно, не святой, но, по-моему, ты немного передергиваешь. У меня нет желания никого обидеть, а если, не намерено, задел, то прошу прощения.

Как говорят американцы: «Ничего личного, только бизнес». И если посмотреть мои комментарии, то я всем пишу, примерно, одно и то же. Это, откровенно говоря, просто скрытая реклама моего творчества. Зачем это мне надо? Ну, явно, не ради того, чтобы заработать. Скорее, мне нужна конструктивная критика моей деятельности, чтобы лучше понимать, куда именно развиваться.

Очевидно, это может нравиться не многим, потому и минусуют нещадно. Ты, вот, откровенно, указал на мой недостаток – ценю. Наверное, лучше больше рекламировать себя в статьях, чем в комментариях.

А минусы потом между делом замечать.

Да я особых минусов у тебя не заметил. Если твой метод работает – развивай. Если я увижу что-то ценное для себя, то приму к сведению. Соответственно, я и свои наработки подаю в этом ключе. Сожалею, если становлюсь, при этом, непонятым.

у меня есть наработки с двуязычными субтитрами:
https://eng.apayrus.cc/zootopia/1

Сайт тяжело работает, что с вэпээном, что без. Ничего не смог толком посмотреть.

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

Ну, я делаю субтитры, безо всякого редактора, только собственные скрипты на Питоне и утилита ffmpeg. Для создания звуковых данных к своей обучающей программе использую еще звуковой редактор «Audacity». Потребности применять профессиональные редакторы для видео монтажа – нет. Если нужны точные тайм-коды для каждого слова, то лучше всего применять оффлайн модели Vosk ( https://alphacephei.com/vosk/models ), поскольку Интернет сервисы не дают нужной точности.

но такие материалы явно не для начинающих.

Для «начинающих» материалов, почему-то, всегда много, а, вот, для «кончающих» – почти нет… :)

К 2030 году только у студентов МГТУ, МФТИ и МГУ будет возможна карьера программиста.

Я, вот, стал программистом, как самоучка, благодаря специальности «математика», которую получил на мехмате МГУ, в 1990-м году, что кормило меня двадцать лет. И, если бы не развалили СССР, то имел бы все шансы на супер сногсшибательную карьеру. К сожалению, через год лафа начала постепенно заканчиваться, а потом пошли «лихие 90-тые».

Тем не менее, математика помогла мне выжить. Более того, я могу сказать, что мехмат МГУ дает ощущение, что ты можешь всё, т.е., работать где угодно, физиком-теоретиком, химиком, заниматься любой наукой либо программированием. В то время, ПК только-только появлялись (на мехмате мы работали с терминалами, подключенным к мэйнфрейму). Преддипломную практику я проходил в «Керосинке», т.е., Институте Нефти и Газа АН СССР. Тема моей дипломной работы была: «Оптимальное извлечение нефти из безнапорных скважин». Там я даже выступал с докладом на семинаре АН, после чего, мне предложили поступить туда в аспирантуру.

Программирование на мехмате преподавали, но плохо. Программистами математики становились не благодаря этому, а «вопреки». Кстати, одно время, моим научруком был тот же самый преподаватель, что и для Ильфака Гильфанова (который учился тогда на другом курсе), который знаменит («широко известен в узких кругах») своим «народным» дизассемблером «ИдаПро».

Таким образом, я хочу сказать, что лучше программирования может быть только математика. Во-первых, математика охотно возьмут как программиста, а, во-вторых, они, со своими способностями к математическому моделированию, могут спокойно изобретать исключительное оружие на «новых физических принципах». «Орешник» не даст соврать. Главное, чтобы они хорошо изучили «физику Луны», когда будут проектировать систему торможения для посадочного модуля «Луна-25», на спутнике Земли. Понимаю, торопились опередить индийцев, но, в таких случаях, спешка – вредна.

Короче говоря, с математическим багажом, шансов пропасть у вас будет меньше, даже если вы окажитесь в «лихих 90-тых», когда наука ушла в ноль…

Вы просто заучиваете в каждом уроке около 10 слов, потом читаете и переводите словосочетания и предложения с ними и интуитивно понимаете правило.

Ну, это интересно далеко не всем. Ваша система обучения не первая и, очевидно, не последняя. Будут еще десятки новых, поскольку старые – «не такие, как надо».

Могу рассказать, какая система обучения иностранному языку нравится лично мне.

  1. Ориентация на понимание живой речи носителей языка.

  2. Использование собственной программы «L'école», реализующей метод «запоминание руками + интерактивный звук + чтение по слогам + БКП («буквальный контекстный перевод», пример: https://habr.com/ru/articles/669178/comments/#comment_24460452 )» (см. мою статью: «Новая компьютерная программа для запоминания иностранных слов и фраз» – https://habr.com/ru/articles/848836/ ). Там приведены демо-данные по четырем иностранным языкам. Кроме того, готовлю дополнительные материалы для публикации.).

  3. Дополнительный подход – это использование двуязычных субтитров к оригинальным видео, лучше, в виде внешних файлов. Демонстрацию можно посмотреть на моих каналах:

https://www.youtube.com/@scholium9807
https://dzen.ru/id/66ef0791df72c165d37a34ea
https://my.mail.ru/mail/emmerald/video/_myvideo

Есть также мое описание процесса создания таких субтитров: «Создание двуязычных субтитров к видео, распознавание и перевод речи» – https://habr.com/ru/articles/862716/ .

  1. Кроме того, я заинтересовался идеей написания собственного самоучителя по французскому языку на французском языке (!) плюс видео к нему. Смотрите первый пример на эту тему:

001-ФранцузскийАлфавит.mp4 : https://disk.yandex.com/i/G4pJZ__AKhtHsw ,
001-ФранцузскийАлфавит.pdf : https://disk.yandex.com/i/DwEX79lOXZlJyw .

Как видите, подходы могут быть разными. Не собираюсь никому навязывать свою обучающую систему, но мне она нравится и это вполне достаточный повод для ее развития…

как сгенерировать датасет печатных букв с помощью .ttf файла и кода на Python

Идея, конечно, интересная, ее можно будет принять к сведению. Я тоже, сейчас, занимаюсь похожей темой, но меня интересует более полное решение следующей задачи: «Дана ссылка на канал с видео на Ютубе, нужно распознавать встроенные двуязычные субтитры на них, в данном случае, на французском и английском языках». На базе этих данных я буду готовить уроки для своей обучающей программы.

Хорошего и бесплатного решения, с помощью ИИ-сервисов, я не нашел, поэтому, пишу собственный скрипт на Питоне.

Здесь, я хочу обойтись без датасетов и обучения нейросетей. Все интересующие видео имеют фиксированные области для каждой строки с текстом и один и тот же шрифт, правда, разных размеров. Это позволяет выделить, построчно, весь текст, преобразовать его в бинарные матрицы и, затем, разделить символы по криволинейному контуру между ними. После чего, можно приступать к процедуре распознавания этих символов, на базе тех или иных метрик.

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

Нюансы здесь в том, что одному символу может соответствовать некоторое множество параметров, которые надо, вручную, прописывать в моей функции выбора. Со временем, подумаю, как этот процесс автоматизировать, а, пока, неплохо и так.

Соответственно, мне не нужно «зашумлять» исходные символы. Вполне хватает естественных дефектов. Изредка, встречаются артефакты, связанные с выбором порогового значения для лямбда-функции, участвующей в создании бинарных матриц.

Здравствуйте!

Здравствуйте!

Насколько вы уверены в том, что это «халтура»? На 60%? 95%? 100%?

У физиков-теоретиков есть фраза: «Всякая теория верна до тех пор, пока не будет опровергнута!». Проценты здесь не имеют особой роли. В свое время я собирался пойти учится на физика-теоретика, но, вместо этого, пошел на математика. Просто, я бы не стал посвящать свою научную карьеру развитию этой теории, поскольку не ощущаю в ней концептуальной красоты и гармонии. Можете списать это на субъективизм, мне безразлично. А вот, скажем, развитием концептуальной логики, хотя такой науки не существует, я бы занялся, если бы судьба не направила меня по другой колее.

Вы смешиваете метафизическую, нефальсифицируемую концепцию («грех») с биологической, потенциально проверяемой гипотезой («паразиты»).

Вообще-то, даже большой жизненный опыт не дает однозначного ответа о существовании либо не существовании, скажем так, «потустороннего» Мира. Более того, в трудных жизненных ситуациях, лично, мне была не раз оказана помощь, по принципу «рояля в кустах», т.е., почти на грани чуда. Были и другие моменты, которые намекают не только о существовании «ада на Земле», но и о связи собственных моральных принципов с успехами либо неуспехами в жизни. Все это прочитывается, в той или иной мере, на языке символов, которые окружают нас. А они наводят на глубокие размышление, в которых, концепция греха занимает не последние место. Причем, это не единственная вещь, на которую стоит обращать внимание в жизни.

Кстати, в своих недавних комментариях я касался вопроса создания «Научной Религии», на базе, уже упомянутой, Концептуальной Логики. Но это – отдельная тема.

Что касается, паразитных форм жизни, которые вызывают, скажем, онкологические заболевания, то здесь медицина мало что может сказать по существу. Они научились, в какой-то мере, бороться со следствием, но не знают причин, которые она ищет на материальном уровне, а они могут оказаться на духовном. И это не обязательно – расплата за грехи, даже, вообще, с этим не связано. Здесь, скорее, проблемы в работе подсознания и надсознания человека, причина которых может иметь надматериальный уровень.

Какова цель этой модели? Вы пытаетесь описать объективную реальность? Создать философскую систему для личного пользования? Написать художественное произведение?

Ну, во-первых, связать воедино разные понятия. Почему говорят, в одних случаях «Дух», а в других «Душа»? Каково место здесь Сознания и Подсознания? Что стало, в последнее время, особо актуальным в связи с развитием искусственного интеллекта и нейросетей. Существует ли Надсознание и как оно связано с человеком?

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

Мы связаны со своими родными и близкими через наше надсознание. Это позволяет, даже на расстоянии, чувствовать их проблемы, которые можно пытаться решать посредством «Магии Любви» или, другими словами, белой магии. В идеале, можно было бы помочь близким избавиться, таким образом, от неизлечимых болезней, природа которых надматериальна, Вопрос только в наличии достаточной духовной силы и умением ею правильно распоряжаться…

«Какое наблюдение или эксперимент могли бы доказать, что я неправ?»

Это все красиво, на абстрактном уровне, но малопрактично, на конкретном.

Например, мне кажется, что теория «Большого Взрыва» – это научная халтура. Как доказать, что я не прав? А, никак! Половину, если не больше, серьезных высказываний, в этом Мире, нельзя ни доказать, ни опровергнуть.

Или, возьмем, допустим, тему неизлечимых болезней. Почему они возникают, причем как-то выборочно, как бы, случайно?

– Наказание за грехи? Но, хорошие люди страдают, а плохие – здравствуют.
– Существование паразитных форм жизни, которые живут по своим законам? При этом интересы разных биологических уровней могут пересекаться, но побеждает тот, кто, локально, сильнее. Например, как у людей, хитрость и подлость могут победить, в конкретном случае, силу и честность.

Как, при этом можно что-то доказать либо опровергнуть, хотя бы в теории, если медицина, в этих вопросах, практически бессильна? Я могу выдвинуть свою собственную теорию на этот счет, но, что ее может, хотя бы в принципе, доказать либо опровергнуть?

Или, еще пример. Все мы наслышаны про понятия: «Душа», «Дух», «Сознание», «Подсознание», «Надсознание», «эмуляция сознания – ИИ и нейросети». Какова между ними связь? Я, вот, предлагаю, следующую:

Дух – это энергетика Души.
Душа – это контейнер трех сознаний: «Я-сознание», «Я-подсознание» и «Я-надсознание».
ИИ и нейросети – это грубая эмуляция сознания (по крайней мере, пока), типа, как трактор эмулирует силу человека, как вскапывателя своего огорода.

И, «Какое наблюдение или эксперимент могли бы доказать, что я неправ?»…

Зря. Учите дальше.

А когда программы писать? Вы их много написали? Меня мои программы кормили двадцать лет. И все проблемы решались на уровне здравого смысла, а не заучивания малополезных заклинаний.

Для сложных систем это очень важно

Классная у нас аргументация. У меня: «не кажется важным», у вас: «очень важно». Кто прав? Кто последний ответил? :)

Тут я ваще не понял контекста вопроса

Ну, примерно, как я «ваще» не понял контекста статьи. Вроде слова знакомые, у вас: «С++», «Система событий». У меня: «С++», «Менеджер событий», а понимаем мы совершенно непересекающиеся веши.

Главные вопросы: Для кого ваша статья написана? Какие задачи решает? Что можно «пощупать»? Не код, которого кругом много и в который вникаешь только тогда, когда видишь в нем смысл, даже если его пару килобайт всего. А смысла вникать в ваш код я не увидел. Как говорится: «Лучше один раз потрогать, чем сто раз увидеть».

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

Если я правильно понял, ваш код ориентирован на чистый С++, ориентированный только на консольный режим, поэтому никакой графики не продемонстрировано. Кому это надо – непонятно? И что это может добавить в WTL, я тоже не понял, тем более что, эта легкая библиотека классов решает все мыслимые задачи, которые могут стоять, допустим, лично передо мной.

Вообще, я бы порекомендовал показывать меньше кода в статье, в крайнем случае, забрасывать его под кат. И побольше давать картинок. Ну, и писать стандартные разделы: результаты, для кого предназначена, выводы и краткое введение в тему ибо то что вам очевидно, другим надо тратить несколько минут на вникание, а для этого не всегда виден смысл…

C++ Event System от идеи до реализации

Вот у меня есть (неопубликованная) программа «МедиаТекст» (см. скриншот: http://scholium.webservis.ru/Pics/MediaText.png ) на C++ / WTL (опенсорсный файл FFPlay.c, для поддержки медиа-файлов, переделан в классы С++). Она использует:

  1. Менеджер потоков

  2. Менеджер видов (дочерних окон)

  3. Менеджер событий

Думал, найти что-то полезное в ваших идеях, но не нашел. Это баг или фича?

Когда ты работаешь один, здравый смысл — это хороший ориентир. Но как только в проекте появляется команда, особенно разная по опыту, контексту и подходам — здравый смысл становится субъективным и конфликтующим. Вот тут и становятся полезны принципы вроде SOLID, DRY, KISS, GRASP — как общий язык, как инструмент договорённостей.

«Конфликтующими» будут и все перечисленные вами концепции. Ибо в них не более содержательных мыслей, чем в формулировке «здравый смысл». Все эти примеры, в виде «потоков сознания», ничего толком не объясняют и ни на что особо не мотивируют. Ну, зачем мне абстрактный код по веб-программированию, если он осмысленно не проецируется на более привычный мне С++? Почему нельзя демонстрировать концепции на реальных демонстрационных программах? Общих разговоров – сколько угодно, а конкретных – ноль. Вот и приходится изобретать практические концепции программирования самому, как я это делал в статье: «Модульное программирование в C++. Статические и динамические плагины» – https://habr.com/ru/articles/566864/ . Поскольку, материалы такого рода, с разбегу, не отыщешь.

Проблема даже не в абстрактных рассуждениях (для математика, окончившего мехмат МГУ, это не ограничение), а в их содержательной неопределенности, которую можно толковать как угодно. Другими словами, не чувствуется в них потенциальной силы. Что принуждает думать о собственных «велосипедах».

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

Это, действительно, актуально. Только, концепции программирования, которые на слуху, мало в чем помогают, ну, разве, в какой-то мере, ООП. Поэтому, задумываясь о следующих версиях своих пет-проектов, приходится придумывать что-то новое, либо, «переоткрывать Америку».

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

Мой пет-проект, на базе обучающей программы «L'ecole» ( https://habr.com/ru/articles/848836/ ), вполне может взлететь. Тем более, что для нее создана (неопубликованная) программ «МедиаТекст» (см. скриншот: http://scholium.webservis.ru/Pics/MediaText.png ), подготовки данных плюс заканчиваю скрип на Питоне, по распознаванию встроенных субтитров видео и т.п.

Только, вот, нужно ли здесь нанимать «команду разработки» – не уверен. Если хотят, пусть делают собственный форк по моему прототипу, но мне «команда» не нужна. Используемые программы относительно простые, проще их доводить до ума самому, чем объяснять, чего хочешь и как этого достичь. Главное, по моему мнению, это данные (уроки) к программе, здесь каждый может приложится, если ему не влом, как, скажем, ваяют свои варианты «карточек», для «Анки».

А по «стандартизации подходов разработки» можно было бы что-нибудь почитать, но ничего путного я не вижу.

MVC (Model–View–Controller) – это архитектурный шаблон, предложенный Тригве Ренскаугом в конце 1970., который разделяет код на три части: модель (данные и бизнес-логика), представление (UI) и контроллер (обработчик запросов).

Я бы выделил, для оконных приложений, на C++/WTL, другие принципы:

  1. Менеджер потоков.

  2. Менеджер видов (дочерних окон)

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

Посмотрим, чем SOLID может быть полезным для моих программ (пет-проектов на C++/WTL):

S - Класс должен иметь только одну причину для изменения.

Непонятная формулировка. Кем изменяется, своей программой или чужой?

O - Классы должны быть открыты для расширения, но закрыты для модификации.

То же самое. Для собственных пет-проектов это не актуально.

L - Подклассы контроллеров меняют поведение базового класса.

То же самое.

I - Клиенты не должны зависеть от интерфейсов, которые они не используют.

Согласен.

D - Модули высокого уровня не должны зависеть от модулей низкого уровня. Оба должны зависеть от абстракций.

Модули в С++ имеют неоднозначное толкование. Для классов может быть и так и не так.

В общем, SOLID мне не нужен. Более подходит метод «здравого смысла». Ну, если рассуждать, как в анекдоте: «– Ненавижу Карузо! – О-о-о! А где вы его слушали? – Да, мне Мойша по телефону напел!».

Пойдем дальше:

DRY (Don't Repeat Yourself)

Достаточно очевидно, как для метода «здравого смысла».

KISS (Keep It Simple, Stupid)

То же самое.

GRASP (General Responsibility Assignment Software Patterns) :

Information Expert : Ответственность должна назначаться классу, который имеет необходимую информацию для ее выполнения.

Достаточно очевидно.

Creator: Класс A должен создавать экземпляры класса B, если A содержит B, агрегирует B, или имеет данные для инициализации B.

То же самое.

Controller (Контроллер в смысле GRASP): Не-UI объект должен обрабатывать системные события и координировать работу.

Непонятно и не кажется важным.

Low Coupling (Слабая связанность): Классы должны иметь минимальную зависимость друг от друга.

High Cohesion (Высокая связность) Элементы класса должны работать вместе для достижения общей цели.

Слишком общие формулировки, чтобы иметь неочевидный смысл.

Polymorphism (Полиморфизм): Используйте полиморфные операции вместо условий типа.

Чистый ООП?

Pure Fabrication (Чистая выдумка): Создавайте искусственные классы для достижения низкой связанности и высокой связности.

Без проекции на программную реализацию конкретной модели, не имеет явного смысла.

Indirection (Перенаправление): Избегайте прямых связей между компонентами, используя промежуточные объекты.

То же самое.

Мне всегда было влом разбираться с новомодными принципами программирования. И вот появился повод, посмотреть на них хотя бы краем глаза. В итоге, остался при своем мнении: Самый надежный принцип: метод «здравого смысла». Пока он меня еще не подводил…

Нарушение принцыпа

Вообще-то, принцИпа.

Information

Rating
2,367-th
Registered
Activity