Windows стоит немало, дополнительно по-умолчанию показывает рекламу в старт меню (к счастью, хотя бы отключаемую), а также собирает различную информацию. Кроме того, качество и стабильность (имхо) снизились со времен Win7.
Я пользовался Win10 начиная с ее появления в 2015 году (лицензия, не сборка какая-нибудь). И там была недоделка на недоделке, частично не локализованный интерфейс, UI/UX разных приложений разный. Это точно коммерческий продукт от компании с опытом в 30 лет, самая популярная ОС в мире или наколенная поделка от энтузиастов?
Недавно играл в первого ведьмака. Ок оставляет все сохранения, не перезаписывает их. Ещё там много автосейвов. К концу игры я с удивлением обнаружил, что папка сохранений занимает более 10 гб.
Что значит 8 и 4 инструкции за такт? Количество инструкций (точнее, uOps) за такт в идеальном случае равно длине конвейера (если нет stall'ов). Согласно wikichip у Ice Lake (у того же Tiger нет ещё информации) это 14-19 стадий конвейера.
По-идее это уже существует в Ryzen 3xxx (видимо, и более новых). Процессор каким-то образом калибруется, в нем определяется самое производительное ядро, а также самые производительные ядра в чиплете (CCX). И эта информация может сообщаться ОС, и Windows умеет использовать информацию для планирования scheduling'а.
Советую переписывать это не на MFC, а на Qt, раз вы решили использовать C++. Напоминаю, что современный Qt — это 5.х :). Кстати, там есть т.н. Qt QML — декларативный язык разметки интерфейса, который позволяет рисовать очень красивый GUI. Применяется все это чаще всего в различных встраиваемых системах, автомобилях, киосках итп, и, кажется, ваш проект весьма похож на то, что делают на QML.
Ещё рассмотрите, пожалуйста, возможность кроссплатформенности, в частности, полдержку Linux. Не стоит завязываться на винду и устаревшие виндовые технологии. С Qt это не так уж и сложно.
Возможно, я не очень понятно выразил мысль. Нигде VisibleProducts не используется как есть, везде интерфейс. Соответственно, заменить нужно только в одном месте — в фабрике или в настройке IoC контейнера. Ну, быть может, при попытке это реализовать, я бы понял, что тут что-то не так.
Можно пойти дальше, и оперировать разными типами. В одном месте Product, в другом месте WarehouseProduct итп итд, чтобы компилятор следил.
Сразу почему-то пришла идея через цепочку фильтров. В общем, нужно сделать набор композабельных друг с другом фильтров и фабрику, собирающую фильтры под наши нужды. Я бы тут начал топить за ФП и легкость композиции всего со всем, если бы хорошо его знал :). Картинки под спойлером, уж простите за псевдографику
Допустим, у нас есть сайт с товарами. У нас есть метод Product::getProducts — возвращает массив товаров.
Заголовок спойлера
Products Store
|
Products
class ProductsSelector : IProductsSource
{
public ProductsSelector(IProductsSource) { /* ... */ }
}
...
class PublicProductsViewer
{
public PublicProductsViewer(IProductsSource) { /* ... */ }
}
А чтобы централизованно иметь возможность настроить этот самый source примени какую-нибудь фабрику или IoC контейнер...
Затем к нам пришел менеджер и сказал: хотим сделать акции на сайте… и сказал что нужны еще статьи, к которым прикреплены товары.
Заголовок спойлера
Products Store
|_________________________
| | |
Products By Action By Article
к нам пришел менеджер и говорит — мы хотим иметь возможность отключать товары на сайте
Заголовок спойлера
Products Store
|
Visible Products
|_________________________
| | |
Products By Action By Article
Окей, добавляем еще один Source и перенастраиваем фабрику.
хотим показывать товары в складской программе.
Заголовок спойлера
Products Store
|
Visible Products
|_________________________
| | |
Products By Action By Article
Окей, наш WarehouseViewer будет в качестве IProductSource использовать ProductsStore, в котором есть все продукты
На шарпе это, наверное, можно сделать более лаконично с каким-нибудь LINQ.
Хотя, конечно, вы правы. Всегда можно ошибится, о чем-то недодуматься, не предусмотреть какой-то сценарий. И вероятность того, что даже в самой, казалось бы, продуманной архитектуре окажется невозможно без адских костылей внедррить очередную фичу, есть.
Я пришел к этому же, но не знал, как это называется. Как-то я пытался каталогиризировать научные статьи и просто сохраненные закладки, пришел к выводу, что папки (aka структура "дерево") не справляется, и нужен граф.
После нескольких итераций идеи, пришел к выводу, что узлами графа должны быть не статьи, а вообще, что угодно — заметки, файлы, ссылки, а ребра выражают отношения между сущностями — цитирования, ассоциации, упоминания итп итд. И при этом графическое отображение графа было принципиальным моментом, чтобы задействовать зрительную память для поиска и просто анализа.
MindMap'ы пробовал — не зашло по причине древовидности. The Brain не зашел, потому что он хоть и граф, но он представляет выделенную вершину как корень дерева, опять-таки...
Несколько раз я пытался сесть и написать себе такой софт, но каждый раз отвлекался/забивал/попадал под паралич перфекциониста/итп итд. Сейчас нашел несколько вариантов: Roam Research, tiddly roam, obsidian, foam (плагин к VSCode)… Но пока они не удовлетворили полностью, потому что концентрируются на классическом Zettelkasten методе с заметками, а реализовать мою интерпретацию с возможностью использовать это еще и как референс менеджер и хранение закладок, на них натянуть можно (путем создания файликов со ссылками), но неудобно. Плюс нет возможности задавать тип отношения между сущностями (только описывать в тексте заметок).
В общем, желание написать свой велосипед осталось. Быть может, я когда его напишу...
Зато вы можете иметь несколько независимых интерфейсов с методами по-умолчанию или трейтов, которые реализуют поведение, и имплементировать их одновременно. И при этом быть уверенными, что с множественным наследованием проблем не будет — компилятор не позволит
Это можно сделать с помощью интерфейсов или трейтов. Более того, так можно делать несколько отношений "является" без типичных проблем множественного наследования.
Помимо научной стороны, меня интересует ещё кризис Open Source. Как заметили, обучение требует огромных данных и огромных вычислительных ресурсов. Есть энтузиасты, развивающие Open Source проекты, но трудно представить энтузиастов, нудно размечающих датасет. Крупные компании иногда участвуют в разработке опен сурс проектов или выкладывают свои проекты в опен сурс, когда считают, что это выгодно, например, другие могут помочь развивать проект, или привлечь к нему внимание. Но я пока не могу представить, чтоб кто-то хотел выкладывать огромные датасеты, на сбор кассовых ушли огромные деньги в открытый доступ, и какую это принесет пользу компании. И кто смог бы воспользоваться этими датасетами, если тупиковая требуются огромные вычислительные ресурсы.
Спасибо за наводку на Roam. Я давно хотел организовать все (ну, как минимум, всякие научные статьи) в виде графа, но не нашел готовых решений. Предпринимал несколько попыток написать свой велосипед.
Сам Roam не понравился, и денег хочет, и все в облаке, и не совсем то, что я себе представлял, но зато дал ключевые слова для поиска альтернатив, втч Open Source.
Ещё в школе заметил, что если контрольная/олимпиада/экзамен встряли в тупике, то лучше всего просто отпроситься, неспешно дойти до известного пункта назначения, развернуться и так же неспешно вернуться в класс. После этого чаще всего решение приходило через некоторое время само.
Правда, что-то в последнее время это так хорошо ну работает...
Windows стоит немало, дополнительно по-умолчанию показывает рекламу в старт меню (к счастью, хотя бы отключаемую), а также собирает различную информацию. Кроме того, качество и стабильность (имхо) снизились со времен Win7.
Я пользовался Win10 начиная с ее появления в 2015 году (лицензия, не сборка какая-нибудь). И там была недоделка на недоделке, частично не локализованный интерфейс, UI/UX разных приложений разный. Это точно коммерческий продукт от компании с опытом в 30 лет, самая популярная ОС в мире или наколенная поделка от энтузиастов?
Недавно играл в первого ведьмака. Ок оставляет все сохранения, не перезаписывает их. Ещё там много автосейвов. К концу игры я с удивлением обнаружил, что папка сохранений занимает более 10 гб.
Что значит 8 и 4 инструкции за такт? Количество инструкций (точнее, uOps) за такт в идеальном случае равно длине конвейера (если нет stall'ов). Согласно wikichip у Ice Lake (у того же Tiger нет ещё информации) это 14-19 стадий конвейера.
По-идее это уже существует в Ryzen 3xxx (видимо, и более новых). Процессор каким-то образом калибруется, в нем определяется самое производительное ядро, а также самые производительные ядра в чиплете (CCX). И эта информация может сообщаться ОС, и Windows умеет использовать информацию для планирования scheduling'а.
Скрин из Ryzen-master в котором отмечены эти ядра
Упс, когда я смотрел последний раз был 5.х.
Советую переписывать это не на MFC, а на Qt, раз вы решили использовать C++. Напоминаю, что современный Qt — это 5.х :). Кстати, там есть т.н. Qt QML — декларативный язык разметки интерфейса, который позволяет рисовать очень красивый GUI. Применяется все это чаще всего в различных встраиваемых системах, автомобилях, киосках итп, и, кажется, ваш проект весьма похож на то, что делают на QML.
Ещё рассмотрите, пожалуйста, возможность кроссплатформенности, в частности, полдержку Linux. Не стоит завязываться на винду и устаревшие виндовые технологии. С Qt это не так уж и сложно.
Кажется, вы описываете завтипы, которых нет в Rust. А Rust умеет выкидывать проверки при обращении к элементами массива?
О да, это примерно то, что я пытался изобразить выше, только ушел в какую-то другую степь в примере имплементации.
Возможно, я не очень понятно выразил мысль. Нигде VisibleProducts не используется как есть, везде интерфейс. Соответственно, заменить нужно только в одном месте — в фабрике или в настройке IoC контейнера. Ну, быть может, при попытке это реализовать, я бы понял, что тут что-то не так.
Можно пойти дальше, и оперировать разными типами. В одном месте Product, в другом месте WarehouseProduct итп итд, чтобы компилятор следил.
Не спорю
Сразу почему-то пришла идея через цепочку фильтров. В общем, нужно сделать набор композабельных друг с другом фильтров и фабрику, собирающую фильтры под наши нужды. Я бы тут начал топить за ФП и легкость композиции всего со всем, если бы хорошо его знал :). Картинки под спойлером, уж простите за псевдографику
А чтобы централизованно иметь возможность настроить этот самый source примени какую-нибудь фабрику или IoC контейнер...
Окей, добавляем еще один Source и перенастраиваем фабрику.
Окей, наш
WarehouseViewerбудет в качествеIProductSourceиспользоватьProductsStore, в котором есть все продуктыНа шарпе это, наверное, можно сделать более лаконично с каким-нибудь LINQ.
Хотя, конечно, вы правы. Всегда можно ошибится, о чем-то недодуматься, не предусмотреть какой-то сценарий. И вероятность того, что даже в самой, казалось бы, продуманной архитектуре окажется невозможно без адских костылей внедррить очередную фичу, есть.
В системе типов есть Protocols, позволяя совмещать дактайпинг и статическую типизацию
Очень похоже на OpenGL с фиксированным конвейером. Но зачем?
(Да, я понимаю, что это перевод, так, риторический вопрос)
Я пришел к этому же, но не знал, как это называется. Как-то я пытался каталогиризировать научные статьи и просто сохраненные закладки, пришел к выводу, что папки (aka структура "дерево") не справляется, и нужен граф.
После нескольких итераций идеи, пришел к выводу, что узлами графа должны быть не статьи, а вообще, что угодно — заметки, файлы, ссылки, а ребра выражают отношения между сущностями — цитирования, ассоциации, упоминания итп итд. И при этом графическое отображение графа было принципиальным моментом, чтобы задействовать зрительную память для поиска и просто анализа.
MindMap'ы пробовал — не зашло по причине древовидности. The Brain не зашел, потому что он хоть и граф, но он представляет выделенную вершину как корень дерева, опять-таки...
Несколько раз я пытался сесть и написать себе такой софт, но каждый раз отвлекался/забивал/попадал под паралич перфекциониста/итп итд. Сейчас нашел несколько вариантов: Roam Research, tiddly roam, obsidian, foam (плагин к VSCode)… Но пока они не удовлетворили полностью, потому что концентрируются на классическом Zettelkasten методе с заметками, а реализовать мою интерпретацию с возможностью использовать это еще и как референс менеджер и хранение закладок, на них натянуть можно (путем создания файликов со ссылками), но неудобно. Плюс нет возможности задавать тип отношения между сущностями (только описывать в тексте заметок).
В общем, желание написать свой велосипед осталось. Быть может, я когда его напишу...
Зато вы можете иметь несколько независимых интерфейсов с методами по-умолчанию или трейтов, которые реализуют поведение, и имплементировать их одновременно. И при этом быть уверенными, что с множественным наследованием проблем не будет — компилятор не позволит
Это можно сделать с помощью интерфейсов или трейтов. Более того, так можно делать несколько отношений "является" без типичных проблем множественного наследования.
Помимо научной стороны, меня интересует ещё кризис Open Source. Как заметили, обучение требует огромных данных и огромных вычислительных ресурсов. Есть энтузиасты, развивающие Open Source проекты, но трудно представить энтузиастов, нудно размечающих датасет. Крупные компании иногда участвуют в разработке опен сурс проектов или выкладывают свои проекты в опен сурс, когда считают, что это выгодно, например, другие могут помочь развивать проект, или привлечь к нему внимание. Но я пока не могу представить, чтоб кто-то хотел выкладывать огромные датасеты, на сбор кассовых ушли огромные деньги в открытый доступ, и какую это принесет пользу компании. И кто смог бы воспользоваться этими датасетами, если тупиковая требуются огромные вычислительные ресурсы.
Простите, но MPC — далеко не что-то новое, направление ТАУ, развивающееся с 80х: https://en.m.wikipedia.org/wiki/Model_predictive_control
UPD
Скорее всего, я неправильно распарсил фразу, прошу прощения
Есть рекомендации по выполнению разминки?
Спасибо за наводку на Roam. Я давно хотел организовать все (ну, как минимум, всякие научные статьи) в виде графа, но не нашел готовых решений. Предпринимал несколько попыток написать свой велосипед.
Сам Roam не понравился, и денег хочет, и все в облаке, и не совсем то, что я себе представлял, но зато дал ключевые слова для поиска альтернатив, втч Open Source.
Ещё в школе заметил, что если контрольная/олимпиада/экзамен встряли в тупике, то лучше всего просто отпроситься, неспешно дойти до известного пункта назначения, развернуться и так же неспешно вернуться в класс. После этого чаще всего решение приходило через некоторое время само.
Правда, что-то в последнее время это так хорошо ну работает...