Обновить
4

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

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

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.
У меня установлен и пятый и шестой Qt. Я пробовал шестой. QtCreator и CLion по дефолту используют cmake при создании нового проекта. И если первой ссылки не достаточно: www.qt.io/blog/qt-6-build-system
CMake is the build system for Qt 6

The CMake build system is now the default one

p.s. Я не утверждаю, что qmake нельзя. Я утверждаю, что Qt переходит на cmake вместо qmake

Информация

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