class A {
static $i;
public static function i(){
return self::$i? self::$i: self::$i = new static;
}
function say(){ echo get_class($this) . "\n"; }
}
class B extends A{}
class C extends A{}
B::i()->say();
C::i()->say();
выдаст
B
B
но
class A {
public static function i(){
static $i;
return $i? $i: $i = new static;
}
function say(){ echo get_class($this) . "\n"; }
}
class B extends A{}
class C extends A{}
B::i()->say();
C::i()->say();
выдаст
B
C
Кто расскажет почему?
Создается впечатление, что статические методы, вместо наследования, тупо копируются.
если я купил легально легальный диск в соотв. регионе, то какая разница, каким плеером я его смотрю?
На сколько я понял — незаконно воспроизведение лицензионных дисков на несертифицированных проигровтелях, которые не внесли отчислений в DVD CCA.
Т.е. мало купить лицензионный диск, надо еще иметь лицензионный плеер.
Не во всех, например:
php -r 'var_dump(false || "Hello");'
bool(true)
На мой взгляд — это крайне неявное поведение. А неявное поведение — прямая дорога к ошибкам. Чем меньше неявного поведения, тем сложнее ошибиться. Статья то как раз и про это.
а вместо странной булевой операции x = yy || zz
я бы использовал симантически более правильный и такой же компактный тернарный оператор: x = (yy?:zz)
в Perl (как и во многих других языках) X && Y, в случае если X — false, возвратит не просто false (не выполняя Y), а возвратит сам X
Может быть я что-то не понимаю, но почему в результате булевой операции возвращается небулево значение? Вы не могли бы объяснить, зачем так сделано? Я еще понимаю такое поведение в строготипизируемых языках, но тут то такие фокусы не должны срабатывать.
Подобные проблемы обычно решаются интеграционным тестированием. Добавил фичу со старыми методами — тесты развалились — надо идти править.
Автоматическая замена в моем понимании скорее зло — вместе с переименованием методов изменяется и логика, и код, расчитанный на старую логику, разломается, даже если сделает новые вызовы.
А мне нравился бар в хроме. Маленькая кнопочка, в которой есть пробки и погода. И я даже обрадовался, когда увидел, что теперь будет две кнопочки вместо одной. Но почему этого расширения нет в маркете хрома? И чем занимается инсталлятор, который мне предлагают скачать? У меня на маке даже солидные программы себе такого не позволяют. Почему для установки хрома админские права не нужны (надо просто перетащить иконку в программы), а для установки расширения к нему нужны (нужно вводить пароль)? Выглядит как попытка встроить мне в систему троян. Нет спасибо.
Если вы будите злоупотреблять убийством запросов — убьете таблицы. Апдейты хоть и происходят в транзакциях, но были случаи, когда таблицы ломались.
Вообще мне кажется, что автоматизация убийства запросов — не самый верный путь развития любого сервиса. И надо искать ошибки в сервесе, а не купировать их подобным варварским способом
Вы платите, но не факт, что государство не платит. Другое дело, что деньги разворовывают по дороге, что не мешает государству заявлять свои права.
К тому же меня бесплатно учили, поэтому лично мне нельзя самоубиваться)
С точки зрения государства — он вообще скотина редкая.
А подвижки с возвратом денег за образование в таких случаях уже набирают обороты. Мне кажется я слышал про подобные законопроекты.
Наверно потому что государство вкладывало в человека деньги, учила в школе и институте (выдавало на обучение деньги). И если этот человек совершит самоубийство, то деньги не вернутся в виде налогов.
Я думаю, не нормальная. Они же там не с логарифмичесими линейками сидят? Надо строить опытные образцы в диких колличествахю. Чтоб получить искомое. потом 1000 человеко-часов — это работа 100 человек втечение 10 часов. Я бы оценил работу над таким прототипом как минимум в 100тыс. человеко-часов
Конечно же я не сомневаюсь в том, что основные урлы уже вдоль и поперек перелопачены на предмет уязвимостей.
Я считаю, что выплевывать наружу трейсы — это нарушение безопасности.
Трейсы в паблик — это раскрывать часть архитектуры и давать потенциальным взломщикам пищу для размышлений. Лучше не провоцировать.
это не просто моник, а почти док станция. у меня туда воткнута клавиатура, ethernet, внешняя звуковуха и usb шнурок для телефона. Как маковод — очень советую. Прихожу домой — втыкаю кабель от монитора и питание — все поднимается
выдаст
но
выдаст
Кто расскажет почему?
Создается впечатление, что статические методы, вместо наследования, тупо копируются.
На сколько я понял — незаконно воспроизведение лицензионных дисков на несертифицированных проигровтелях, которые не внесли отчислений в DVD CCA.
Т.е. мало купить лицензионный диск, надо еще иметь лицензионный плеер.
php -r 'var_dump(false || "Hello");' bool(true)На мой взгляд — это крайне неявное поведение. А неявное поведение — прямая дорога к ошибкам. Чем меньше неявного поведения, тем сложнее ошибиться. Статья то как раз и про это.
а вместо странной булевой операции
x = yy || zzя бы использовал симантически более правильный и такой же компактный тернарный оператор:
x = (yy?:zz)Может быть я что-то не понимаю, но почему в результате булевой операции возвращается небулево значение? Вы не могли бы объяснить, зачем так сделано? Я еще понимаю такое поведение в строготипизируемых языках, но тут то такие фокусы не должны срабатывать.
Автоматическая замена в моем понимании скорее зло — вместе с переименованием методов изменяется и логика, и код, расчитанный на старую логику, разломается, даже если сделает новые вызовы.
Жду, когда уж возьмутся за мерзкий автосалон bently, который занимается дискриминацией меня по финансовому признаку
</сарказм>
Вообще мне кажется, что автоматизация убийства запросов — не самый верный путь развития любого сервиса. И надо искать ошибки в сервесе, а не купировать их подобным варварским способом
К тому же меня бесплатно учили, поэтому лично мне нельзя самоубиваться)
А подвижки с возвратом денег за образование в таких случаях уже набирают обороты. Мне кажется я слышал про подобные законопроекты.
Я считаю, что выплевывать наружу трейсы — это нарушение безопасности.
Трейсы в паблик — это раскрывать часть архитектуры и давать потенциальным взломщикам пищу для размышлений. Лучше не провоцировать.