Обновить
0

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

2
Подписчики
Отправить сообщение

Прямо как с JS-фреймворками :)


Падонки in da flash :D

Разница есть при таком вызове, это не совсем синтаксический сахар.

class Point {
    public float $x = 0.0;
    public float $y = 0.0;

    public function __construct(float $x, float $y) {
        $this->x = $x;
        $this->y = $y;
    }
}

class Point {
    public function __construct(
        public float $x = 0.0,
        public float $y = 0.0,
    ) {}
}

Меня удивляет, что разработчики даже добавили ReflectionProperty::isPromoted() для «сахарных» свойств, но при этом вышеописанный квирк вообще нигде не упоминается, а это ещё даст о себе знать во всяких тестах и DTOшках.
А что будет происходить с таким классом при вызове ReflectionClass::newInstanceWithoutConstructor? Свойства, объявленные в конструкторе, вообще не появятся?

Таки да, получим «Fatal error: Uncaught Error: Typed property Point::$x must not be accessed before initialization». Прелестно.
Если кто не в курсе что такое вообще Microsoft Bob:

Nextcloud. Папки/теги, можно расшарить папку наружу, запаролить, карусельки там всякие, превьюшки, в общем вполне себе функциональное self-hosted решение.

Тут где-то недавно был совершенно мусорный пост аля "10 причин использовать линукс в 2020" — так вот это действительно причина.

Здесь же на хабре, кажется, где-то была статья про алгоритмы ресемплинга изображений, где в качестве тестового изображения использовали картинку с zone plate. Разные алгоритмы ресемплинга приводили к таким же «фрактальным» артефактам из-за алиасинга. Что-то вроде такого:

image
По-моему именно «проприетарный клиент» его и угробил, чуваки постоянно вставляли палки в колёса QiP и Миранде, разгоняя пользователей. А в 2018 году mail.ru решили повторить подвиг и спугнуть последних двух человек.
Это всё нигде не работает, потому что из «удобно для конечного пользователя» и «секьюрно» приходится выбирать что-то одно. У тех, кому действительно нужен такой уровень безопасности, установлен не телеграм (пускай даже зарегистрированный на номер бомжа Ивана), а завалящий jabber-клиент, который ещё и запускается через ввод кода в звонилке.
Как по мне, уж лучше пускай студент Вася возьмёт фреймворк TurboSQL 9000 и слепит что-то на нём, чем синьор Алексей Георгиевич, который 20 лет сидит на проекте, пишет что-то подобное, и не видит в этом проблем:

select @result = isnull(CAST(@res as nvarchar(max)),'')
if CHARINDEX ('<status>Error</status>', @result) > 0 or CHARINDEX ('<status>OK</status>', @result) = 0 ...
Epic имеют возможность давить на рынок, чем активно и пользуются на PC. У них есть большой кусок средств производства, они могут создать льготные условия для разработчиков и условия размещения «эксклюзивно» в своём магазине, а потерю доли прибыли от такой «эксклюзивности» компенсировать разработчику из той кучи денег, которая сыплется им с Fortnite.

В долгосрочной перспективе это приведёт к тому, что эксклюзивные игры в EGS будут стоить дороже, чем могли бы. Как это сейчас происходит на консолях — версии игр для PS стоят дороже версий для PC, альтернативы-то нет, купят.
Ну, оно работает. Как PoC конечно неплохо, но пока не более — дескрипторы вместо имён файлов, тормоза.
решают разработчики, к кому прислушиваться

Это уже давно не так, после повсеместного введения "code of conduct" в проектах, где больше пары десятков контрибьюторов.

Плейбуки вроде бы должны декларативно описывать желаемое конечное состояние системы, а в 90% там «bashsible» (почему бы и нет, раз и так работает), который хорошо если два раза подряд можно запустить без проблем.
В питоне так

class C:
    def __init__(self):
        self._x = None

    def getx(self):
        return self._x

    def setx(self, value):
        self._x = value

    def delx(self):
        del self._x

    x = property(getx, setx, delx, "I'm the 'x' property.")

или декоратором

class C:
    def __init__(self):
        self._x = None

    @property
    def x(self):
        """I'm the 'x' property."""
        return self._x

    @x.setter
    def x(self, value):
        self._x = value

    @x.deleter
    def x(self):
        del self._x

«private public» это что-то за гранью.
Ну что за дичь опять?

    public:private int $id;
    public:protected string $name;

    public private(set) int $id;
    public protected(set) string $name;

Информация

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