Как стать автором
Обновить
4
0

Пользователь

Отправить сообщение

frameSize = (400, 400)

Как Вам такой вариант без дополнительных переменных и магических чисел? Дополнительная переменная в данном случае уместна только в том случае, когда она используется более одного раза, или, например, попадает в скоуп извне. Ну или всё равно на используемую память приложением. Иначе переменная должна своим именем говорить, что в ней.

наличие переменной лучше

Что Вы можете сказать о переменной down_width, не зная контекста? И лучше ли в данном случае? Лично мне данное имя в контексте последующего кода говорит о том, что ресайз на увеличение не должен происходить, и задумка именно на уменьшение размера картинки (и стоило бы добавить проверку, так ли это на самом деле, если я, к примеру, хочу транслировать видео 320х240).

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

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

# Закроем все окна и все сокеты

Зачем? Разве из следующих двух строк это не очевидно? Такой комментарий только захламляет код, его "чуточку сложнее" воспринимать.

Комментарий, дублирующий документацию сторонних библиотек (как работа логгера): зачем? В крайнем случае - ссылка на документацию, и то навряд ли нужно, ибо обычный программист работающий со сторонними библиотеками в курсе, что почти в 99.99% случаев у библиотек адекватная документация и если что-то не понятно - то нужно искать объяснения использования именно там, а не у Вас в коде.

# Настройки для отображения видео

А вот это - случай поинтереснее. Если бы так случилось, что программисту дают впервые смотреть этот код и он не знает что он должен делать - тут комментарий оправдан, потому что именование переменных немного странное. Что значит down_points ? Что это за нижние точки? Зачем две переменные down_width и down_height, если они используются только единожды? Задел на будущее? Почему они используются в cv2.resize, ресайз не предусматривает увеличение, только уменьшение? Но, опять же, тут лучше не комментировать, а просто переназвать переменные, которые будут отражать суть для чего они были инициализированы.

Вам нравится программировать на языке, созданном в 1970-е, он наполняет вас чувством глубокого удовлетворения, когда можно сделать буквально что угодно – и оно заработает?

Справедливости ради стоит заметить, что можно использовать язык, созданный в 2006-ом:

https://github.com/Rust-for-Linux/linux

https://github.com/fishinabarrel/linux-kernel-module-rust

А Visual Studio из коробки? Извините за сарказм. Просто amarao, скорее всего, имел ввиду, что в linux ничего предварительно-дополнительно ставить не нужно и вся забота ложиться на пакетный менеджер.

Крошка сын к отцу пришел, и спросила кроха: - Что такое хорошо и что такое плохо?

Каким должен быть хороший язык? Возможно ли, что везение зависит не только от стратегических ошибок, а, например, еще и от парадигмы, ниши, екосистемы?

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

@mvs если хочется еще по заморачиваться и челленджей для такой задачи, то подумайте о том, что будет, когда обновлять курсы надо не через HTTP. Допустим, из файла. Тогда RatesUpdater станет HttpRatesUpdater унаследованным от RatesUpdaterInterface. По факту же главное передать валидный ДТО в сервис. А откуда это ДТО пришло - всё равно.

yield - это ключевое слово в php, которое работает почти как return, но в отличии от return может приостановить выполнение функции, а не полностью остановить её. И говорит нам о том, что мы имеем дело с генератором (\Generator). Пример:

function getValues(): \Generator
{
	yield 1;
	yield 2;
	yield 3;
}

function getValuesArray(): array
{
	return [1, 2, 3];
}

foreach(getValues() as $int) {}
foreach(getValuesArray() as $int) {}

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

P.S. В этом видео то же, что и в цикле статей. Но формат может будет понятней =)

Скорее всего что знал, но так исторически сложилось, что именно первый "псевдокод" (для еще не созданной машины) написала Ада Лавлейс.

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

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

у меня немного не складывается с

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

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

Если будет возможность, поделитесь потом мнением, очень интересно.

Таймер временно отключен! Сегодня залью новый :-)

просто сообщения не видно =)

Можно не сохранять в файл:

$class = new class implements SomeInterface {
    public function hello(string $name): string
    {
        return sprintf('Hello, %s!', $name);
    }
};
echo (new $class())->hello('World');

Видимо suse зря недооценивают.

Смотря кто недооценивает =) Я очень даже ценю. Уже года три как сижу на suse и горя не знаю. Ну если честно, то проблемы иногда бывают (типа звук в гугл митс не работает через блютуз гарнитуру), но это такой пустяк на фоне того, что я имею rolling release =) И DE в suse - свободный выбор, можно KDE, Gnome, Xfce и другие (практически все). Как по мне - KDE работает отлично.

84MiB за полторы сутки. openSUSE Tumbleweed, KDE Plasma 5.23, KDE 5.89

Почему странно? Например, любой компилятор/интерпретатор - вполне себе довольно требовательный читатель, который потом правильно сообщит процессору что надо делать. Гораздо удобней, если код понимает не только компилятор/интерпретатор, а и программист (не обязательно автор), который с этим кодом в данный момент работает.

наследование необходимо для чисто технического момента, как чтение полей, и ничего более.

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

А зачем?

А затем, что я, например, сам предпочитаю выбирать, где и как размещать классы (я буду следовать PSR-4, этого должно быть достаточно). Вы же диктуете правила, которые можно обойти интерфейсами. А зачем мне тогда такой пакет, а не симфони темплейтинг например? (который уже deprecated, кстати) Хотя это риторический вопрос, мне не нужно шаблонизировать темы под вп =)

У вас есть конкретные предложения по этому поводу?

нет.

Посоветую посмотреть на https://github.com/symfony/templating и так же прогнать проект с помощью https://github.com/squizlabs/PHP_CodeSniffer (Вы уж извините, но нейминг и форматирование ужасны и сложно читаемы). Так же почитайте PSR-12, BlockA_C - не очень валидное название класса. Ну и MVC - это не про наследование модели и контроллера от одного класса. Так же попробуйте учесть варианты, что блоки не обязательно должны быть в одном каталоге (их теоретически может быть много и они могут быть связаны). В целом - идея может и взлетит, но сейчас это не похоже на пакет, которым можно пользоваться.

Обе ваши ссылки — они про первое, а не про второе

Вообще-то там есть про всё.
Повторю еще раз: я не утверждаю, что qmake куда-то делся и qmake нельзя. Можно, пользуйтесь на здоровье.
Ну и про замечания о «не нужно»: если бы было не нужно — то не было бы указано, что «There is no immediate need to port your project to CMake.». Т.е. перевожу дословно: нет необходимости портироватся незамедлительно. Но сама необходимость есть, но необязательная. По этому и есть qmake. Пока что. Вот через года 3-4 встретимся тут снова и посмотрим. А сейчас я не вижу смысла спорить.
Ну и еще один линк. Пусть полежит
Команда признаёт, что эволюция qmake зашла в тупик и замена его было лишь вопросом времени.

Но Вы то знаете лучше, видимо.
По моему, Вы просто путаете понятия версий и системы сборки. А так же просто не открывали те два линка что я постил выше (оба с официального сайта Qt, попрошу заметить). Где английским по белому написано, что дефолтная система сборки — cmake. Даже написано, что в шестой версии что бы собрать проект с qmake — надо указать аргумент --qmake, иначе будет использована дефолтная (угадаете какая?).
Вы же мне предлагаете заняться полной дичью и удалить компонент фреймворка (который, по факту мной не используется): у меня всё прекрасно собирается и с cmake
Скрытый текст
19:41:33: Running steps for project SomeQtProject...
19:41:33: Starting: "/usr/bin/cmake" --build . --target all
[0/2 ?/sec] Re-checking globbed directories...
[1/6 2.5/sec] Automatic MOC and UIC for target SomeQtProject
[2/6 5.0/sec] Generating ~/projects/tmp/SomeQtProject/SomeQtProject_en_US.ts
Scanning directory '~/projects/tmp/SomeQtProject'...
Updating '../../SomeQtProject/SomeQtProject_en_US.ts'...
Found 3 source text(s) (0 new and 3 already existing)
[3/6 0.8/sec] Building CXX object CMakeFiles/SomeQtProject.dir/SomeQtProject_autogen/mocs_compilation.cpp.o
[4/6 1.0/sec] Building CXX object CMakeFiles/SomeQtProject.dir/main.cpp.o
[5/6 1.1/sec] Building CXX object CMakeFiles/SomeQtProject.dir/include/Window/mainwindow.cpp.o
[6/6 1.1/sec] Linking CXX executable SomeQtProject
19:41:38: The process "/usr/bin/cmake" exited normally.
19:41:38: Elapsed time: 00:06.

Возможно где-то в недрах QtCreator и используется qmake (в cmake передается QT_QMAKE_EXECUTABLE, я не знаю зачем, я в основном использую CLion, там это не указывается и тоже собирается отлично), но так или иначе — я использую cmake, и документация Qt тоже говорит о том, что надо использовать cmake вместо qmake.
И между прочим в Kits у меня везде cmake а версии вынесены отдельно. Есть даже вкладка для настройки cmake, но нет для qmake.
Скрытый текст
image

И вообще, мне не комфортно вести с Вами диалог. За сим откланяюсь и отвечать больше не буду. Все претензии по поводу cmake и просьбой «удалить qmake» — обращайтесь к парням из qt.io.

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность