Поэтому нельзя сказать, что «большинство изначально использовало такой стиль», если в 16-ти из 22-х крупных проектов фигурные скобки после класса писались на следующей строке. Большинство крупных проектов не равно большинству людей — тех, кто вообще писал код на PHP в тот момент.
Дополнительно, вы путаете статистическую выборку из 22-х баз кода с голосованием. Голосование — это когда отдельные люди высказывают мнение. Статистическая выборка — это когда у людей мнение не спрашивают, а просто анализируют что-то уже произошедшее.
На момент появления PSR-2 эти 22 проекта занимали крупную нишу во всех ±600 миллионах сайтов под PHP. Однако, если брать отдельных людей, которые в тот момент писали на PHP, их будет больше, чем количество людей, которые трудились над этими 22-мя проектами.
Ну, вы согласны, что стиль был взят из ограниченого количества проектов? Всенародного голосования не было. Учитывалась относительно небольшая база кода и мнение относительно небольшого количества разработчиков.
Вы писали, что «большинство изначально использовало такой стиль». Я с этим не согласен. Половина использовала один стиль, другая половина – другой. 50–100 разработчиков в крупных проектах — это не большинство программистов на тот момент.
Я со своей колокольни вижу, что половина людей такой стиль использовало, а другая половина — нет (мне даже чаще встречался код, где скобки были на той же строке). А со своей колокольни я смотрю где-то с 2002-го года. Текущий стиль летом 2012-го (вместе с PSR-2) пришёл из проектов со знаменитыми именами. В этих проектах, в общем-то, было небольшое количество разработчиков (во всяком случае, точно было небольшое количество разработчиков, которые диктовали стиль кода всем остальным). По сути, текущий вариант пришёл из ограниченного количества проектов, которые были «на слуху». Всенародного голосования не было (за PSR-2 голосовало 18 человек: 13 — за, 4 — против, один — воздержался). Его и не могло быть, потому что FIG нужно было набрать авторитет за счёт причастности к крупным проектам. FIG в тот момент не было популярным. Всенародное голосование оно в тот момент не смогло бы устроить.
Если бы была возможность выяснить, как пишет большинство разработчкив, ещё неизвестно, что было бы в стандарте, потому что я чаще видел код, в котором фигурные скобки были на той же строке. Ну, просто, такой чаще встречался, чем код, где скобки шли на новой строке. Может быть, мне просто чаще такой код попадался, а на самом деле больше было кода, где скобки шли с новой строки. Лично я видел такую картину.
Как раз с единообразием есть кейс: Фигурные скобки в классах и функциях. До того, как в PHP появились анонимные классы и функции, фигурные скобки можно было нормально писать на следующей строке во всех ситуациях. Теперь же получается, что в определении класса в одной ситуации нужно писать их на той же строке, а в другой — на новой строке. Единообразие в подходе потрялось.
С одной стороны, люди понимают, что если эти скобки писать в анонимных классах и функциях с новой строки, уродуется код. Но вместо того, чтобы сделать единый подход, поменяв вообще стиль для любых классов и функций, сделали патч, который меняет подход в отдельных случаях, хотя можно было одним изменением решить эту проблему системно.
Если кто-то предлагает базовые вещи менять в стандарте, его отфутболивают (меня лично не отфутболивали, я просто уже долго наблюдаю за тем, как происходят обсуждения в FIG).
На дворе 2017-ый год и довольно значительная часть сообщества PHP пытается использовать
PSR: PHP standard recommendation, цель которых — дать возможность заменять отдельные части фреймворков.
Александр, я думаю, скорее всё дело в том, что вы участвуете в FIG, и у вас такое мнение из-за того, что этот котёл является частью вашей жизни.
Насколько я вижу из своего личного общения и из мыслей людей (а я всегда очень много и внимательно читаю чужое мнение на различных околопхпэшных ресурсах), люди начинают уставать от PSR из-за того, что стандарты PSR определяются один раз, и они развивают промышленность только в первое время. Однако, из-за подхода: «мы не будем ничего менять, потому что мы пять лет назад проголосовали за такой вариант (не будем вообще больше голосовать на эту тему)» — через какое-то время PSR начинает тормозить всё, а не помогать строить светлое будущее.
PSR, как бы, первое время помогает стать лучше, а потом, когда в PHP появляются какие-то изменения, PSR превращается в гирю на ноге, вместо того, чтобы быть двигателем.
Может это и не существенно, но основной репозиторий Linux находится в git.kernel.org. Для Bash это git.savannah.gnu.org. Для Qt — code.qt.io. Для GCC — gcc.gnu.org/git/. Для GNU Octave — hg.savannah.gnu.org/hgweb/octave. Для PHP — git.php.net. Для Perl — perl5.git.perl.org. (Где-то могу ошибаться в конкретных адресах, но, как минимум, домены правильные.)
Некоторые из этих проектов позволяют вделать вклад в код и с помощью GitHub, но основная площадка разработки у них — не GitHub. Так что, если будут какие-то проблемы с GitHub, эти проекты не умрут. Да и родились они не на GitHub, в общем-то.
Кстати, у PHP не GPL-лицензия, а PHP License, которая унаследована от BSD, так что он в этом списке лишний.
По поводу шорт-тегов — признаю, как-то пропустил этот момент когда они перестали быть злом
Мне кажется вы не до конца правильно понимаете ситуацию. Шорт-теги остались злом. Но конкретно тег <?= к этому злу не имеет отношения, так как конфигурационная опция, связанная с шорт-тегами, на его работоспособность не влияет после версии 5.4.
Интересная опечатка получается. Дело в том, что если написать > в тексте, то он превращается в символ > средствами HTML. И чтобы реально написать >, нужно вводить такой код: &gt. Этот код на автопилоте обычно не вводится, потому что он требует дополнительных осмысленных телодвижений. То есть, в этот момент нужно реально верить, что команды в mongo начинаются с амперсанда, чтобы осознанно это вставлять в текст. :)
> вместо простого знака «>». Не очень читаемо, на мой взгляд.
Странно, что вы пишете амперсанд — и в коде и в тексте. В монго операторы со знака доллара начинаются.
А так, логика формата операторов вполне понятна. Чтобы не спутать оператор с названием поля, он начинается со специального знака. Символ >, кстати, вполне может быть названием поля (так что его нельзя использовать в качестве оператора) — в названии поля можно использовать любые символы из UTF-8 (кроме точки в любой части строки или знака доллара в начале строки). И это вполне читаемо, потому что все операторы созданы по одному и тому же принципу: знак доллара + текст, по которому часто (не всегда, но часто) и без документации понятно, что происходит.
Ну, это-то понятно. Я вообще вручную и обдуманно всё и стараюсь вырезать. Как бы, если я начинаю понимать, что какой-то сайт мне в качестве third-party не нужен на странице, я делаю настройки. Под одну гребёнку я конечно же всё не чешу, иначе некоторые сайты начинают непредсказуемо работать.
В идеале, вообще, я себе потихоньку собираю сервер-шлюз, который будет делать анализ трафика со всех устройств в сети и будет зарубать ресурсы, которые я забанил. Только времени всё не хватает на то, чтобы «в локальный продакшн» это запустить. Я уже экспериментировал с mitmproxy — мне нравится идея, что я на все локальные устройства могу поставить свой корневой сертификат и слушать их трафик. Если развить эту идею, то я смогу централизованно отрубать много лишнего. Правда я mitm делал пока только в режиме прокси — это не помогает контролировать вообще весь трафик. Надеюсь, руки дойдут и я всё же сделаю именно шлюз, а не прокси.
А это поможет одновременно повлиять на настройки в Google.AdSense и на остальных рекламных площадках (включая те, которые появятся в будущем)? Тем более, с расширением adNauseam я даже не узнаю, какая рекламная площадка у меня прогрузилась, потому что рекламы в браузере не будет видно — я даже не пойму, на какой сайт мне зайти, чтобы сделать тюнинг трекинга.
И опять же, настройки по ссылке, которую вы дали — это как бы проявление доброй воли Яндекса. Он вполне может завтра передумать. К тому же, нет никакой гарантии, что у Яндекса в логах не остаются списки страниц, которые посещал пользователь. Яндекс просто предлагает не учитывать эти свои логи, когда показывает рекламу. Нигде не написано, что он перестанет сохранять эти логи и использовать в каких-то своих коммерческих интересах. Написано только, что он не будет учитывать это в тот момент, когда будет показывать рекламу.
Блокировщики рекламы обычно срезают рекламные площадки так, что к ним даже запроса не делается. И если на сайте Habrahabr не загрузится код с Yandex.Direct, у Яндекса не будет информации о том, что пользователь посещал определённую страницу на сайте Habrahabr, и он не сможет отслеживать пользователя. Но в случае с adNauseam получается, что код с Яндекса всё-таки загрузится (чтобы adNauseam смог получить список ссылок, по которым нужно кликать), и рекламная площадка всё так же будет следить за перемещениями пользователя по Интернету. Ценность сомнительная.
Я почитал ту статью внимательно и нашёл в ней такой текст:
The good news is that the malware, dubbed “Backdoor.MAC.Eleanor” by the researchers, is not available in Apple’s official App Store. Instead, the app has been advertised for download on third-party sites; for instance, a copy was available on the site MacUpdate until it was removed on Tuesday.
Прямым текстом написано, что программа была доступна на сторонних сайтах. Более того, во всей статье нет ни одного упоминания того, что эта программа когда-нибудь вообще была опубликована в Mac App Store. Там есть и ссылка на исследование этой программы в Bitdefender LABS. В нём тоже нет упоминаний про размещение программы в App Store.
Как раз конкретизировали, что площадь равна 10 квадратных сантиметров. Если добиваться правдоподобности, то нужно начать с того, что ни один из видов кувшинок не может стабильно раз в день удваивать своё количество. :)
То есть, на второй день их было две, так? А через 48 суток — это 49-й день. Просто начальный момент времени, первый элемент — это тоже часть прогрессии, так как прогрессия от него зависит. Мне это кажется справедливым.
На момент появления PSR-2 эти 22 проекта занимали крупную нишу во всех ±600 миллионах сайтов под PHP. Однако, если брать отдельных людей, которые в тот момент писали на PHP, их будет больше, чем количество людей, которые трудились над этими 22-мя проектами.
Понимаете мысль?
Вы писали, что «большинство изначально использовало такой стиль». Я с этим не согласен. Половина использовала один стиль, другая половина – другой. 50–100 разработчиков в крупных проектах — это не большинство программистов на тот момент.
Если бы была возможность выяснить, как пишет большинство разработчкив, ещё неизвестно, что было бы в стандарте, потому что я чаще видел код, в котором фигурные скобки были на той же строке. Ну, просто, такой чаще встречался, чем код, где скобки шли на новой строке. Может быть, мне просто чаще такой код попадался, а на самом деле больше было кода, где скобки шли с новой строки. Лично я видел такую картину.
Как раз с единообразием есть кейс: Фигурные скобки в классах и функциях. До того, как в PHP появились анонимные классы и функции, фигурные скобки можно было нормально писать на следующей строке во всех ситуациях. Теперь же получается, что в определении класса в одной ситуации нужно писать их на той же строке, а в другой — на новой строке. Единообразие в подходе потрялось.
С одной стороны, люди понимают, что если эти скобки писать в анонимных классах и функциях с новой строки, уродуется код. Но вместо того, чтобы сделать единый подход, поменяв вообще стиль для любых классов и функций, сделали патч, который меняет подход в отдельных случаях, хотя можно было одним изменением решить эту проблему системно.
Если кто-то предлагает базовые вещи менять в стандарте, его отфутболивают (меня лично не отфутболивали, я просто уже долго наблюдаю за тем, как происходят обсуждения в FIG).
Александр, я думаю, скорее всё дело в том, что вы участвуете в FIG, и у вас такое мнение из-за того, что этот котёл является частью вашей жизни.
Насколько я вижу из своего личного общения и из мыслей людей (а я всегда очень много и внимательно читаю чужое мнение на различных околопхпэшных ресурсах), люди начинают уставать от PSR из-за того, что стандарты PSR определяются один раз, и они развивают промышленность только в первое время. Однако, из-за подхода: «мы не будем ничего менять, потому что мы пять лет назад проголосовали за такой вариант (не будем вообще больше голосовать на эту тему)» — через какое-то время PSR начинает тормозить всё, а не помогать строить светлое будущее.
PSR, как бы, первое время помогает стать лучше, а потом, когда в PHP появляются какие-то изменения, PSR превращается в гирю на ноге, вместо того, чтобы быть двигателем.
Некоторые из этих проектов позволяют вделать вклад в код и с помощью GitHub, но основная площадка разработки у них — не GitHub. Так что, если будут какие-то проблемы с GitHub, эти проекты не умрут. Да и родились они не на GitHub, в общем-то.
Кстати, у PHP не GPL-лицензия, а PHP License, которая унаследована от BSD, так что он в этом списке лишний.
Мне кажется вы не до конца правильно понимаете ситуацию. Шорт-теги остались злом. Но конкретно тег
<?=
к этому злу не имеет отношения, так как конфигурационная опция, связанная с шорт-тегами, на его работоспособность не влияет после версии 5.4.&gt
. Этот код на автопилоте обычно не вводится, потому что он требует дополнительных осмысленных телодвижений. То есть, в этот момент нужно реально верить, что команды в mongo начинаются с амперсанда, чтобы осознанно это вставлять в текст. :)Странно, что вы пишете амперсанд — и в коде и в тексте. В монго операторы со знака доллара начинаются.
А так, логика формата операторов вполне понятна. Чтобы не спутать оператор с названием поля, он начинается со специального знака. Символ
>
, кстати, вполне может быть названием поля (так что его нельзя использовать в качестве оператора) — в названии поля можно использовать любые символы из UTF-8 (кроме точки в любой части строки или знака доллара в начале строки). И это вполне читаемо, потому что все операторы созданы по одному и тому же принципу: знак доллара + текст, по которому часто (не всегда, но часто) и без документации понятно, что происходит.Классический рояль в кустах. :)
В идеале, вообще, я себе потихоньку собираю сервер-шлюз, который будет делать анализ трафика со всех устройств в сети и будет зарубать ресурсы, которые я забанил. Только времени всё не хватает на то, чтобы «в локальный продакшн» это запустить. Я уже экспериментировал с mitmproxy — мне нравится идея, что я на все локальные устройства могу поставить свой корневой сертификат и слушать их трафик. Если развить эту идею, то я смогу централизованно отрубать много лишнего. Правда я mitm делал пока только в режиме прокси — это не помогает контролировать вообще весь трафик. Надеюсь, руки дойдут и я всё же сделаю именно шлюз, а не прокси.
И опять же, настройки по ссылке, которую вы дали — это как бы проявление доброй воли Яндекса. Он вполне может завтра передумать. К тому же, нет никакой гарантии, что у Яндекса в логах не остаются списки страниц, которые посещал пользователь. Яндекс просто предлагает не учитывать эти свои логи, когда показывает рекламу. Нигде не написано, что он перестанет сохранять эти логи и использовать в каких-то своих коммерческих интересах. Написано только, что он не будет учитывать это в тот момент, когда будет показывать рекламу.
Я почитал ту статью внимательно и нашёл в ней такой текст:
Прямым текстом написано, что программа была доступна на сторонних сайтах. Более того, во всей статье нет ни одного упоминания того, что эта программа когда-нибудь вообще была опубликована в Mac App Store. Там есть и ссылка на исследование этой программы в Bitdefender LABS. В нём тоже нет упоминаний про размещение программы в App Store.
То есть, на второй день их было две, так? А через 48 суток — это 49-й день. Просто начальный момент времени, первый элемент — это тоже часть прогрессии, так как прогрессия от него зависит. Мне это кажется справедливым.