А чем было страшно? Каким именно боком могло выйти? Это влияло на стабильность/безопасность или?
Тут тонкий момент — в большинстве случаев лучше умереть получив неожиданные данные, но часто их наоборот лучше привести и не морочить себе голову. Ответьте плиз, мне это важно.
То что в Вашем комментарии написано — нарушение более чем одного правила нормального общения в сети. Отсюда и непонимание окружающими того что Вы хотели сказать.
Ну в целом да. Плохо что нет type-hints для скаляров… С тем что мне бы стоило пройтись на депрекейтед тоже согласен… @ тоже зло… С мегабайтными проверками типов и вообще данных на входе не очень согласен, это более прожориво… хотя тоже имеет право на жизнь.
====
п.6 — вообще без комментариев. Слишком уж частный случай. Я указал свою ошибку, и мне в нее макнули «а я таких ошибок не совершаю». Информативно :)
===
> Нет, не бывает. Вы просто плохо разбираетесь в коде или особенностях языка.
Один сказал «не бывает» — без объяснений (см. выше). Я на страницу ответ накатал. Теперь следующий пишет тоже самое и опять без аргументов… Я в прошлой жизни много грешил?)
Извините, но понимание ВСЕГО что работает возможно только в оооооочень маленьких проектах.
На выходных написал одну небольшую библиотеку:
5 интерфейсов с описанием (около 20кб текста_комментариев/«кода»)
9 абстрактных классов (12кб «кода» из которых реально исполнимого 1-2кб)
5 реальных классов общим весом в 30кб, на 50% это рефакторинг старого кода, 50% свежак.
1 небольшой класс для тестов + 15 кб тестов (25 тестов).
=======
Это только ОДНА библиотечка.
Таких библиотек в продакшене иногда бывает полтора десятка.
Плюс столько же кода с бизнеслогикой…
И половина из этого кода писана 3-5 лет назад.
========
Вы знаете, я в свое время тоже любил спорить на тему «шашечки или ехать»....)))
Как раз таки при правильном проектировании совмещение разных подсистем вдруг выдает тебе неожиданные возможности, и не всегда это плохо. Иногда ты продумывал какие-то дефолты по принципу «думаю так будет лучше, но пока не знаю где это пригодиться. А потом естественно забыл об этом. Ибо в голове много чего другого было… А потом десяток таких умолчаний создало отдельный функционал. Правильный)))))
========
Банальный пример: пишешь интерфейсы и абстрактные классы, „заглушки“… у самых базовых вещей прописываешь некую дефолтную логику. Просто чтобы меньше было нереализованных „типовых“ действий… Логика подразумевает, что все эти методы будут переопрделенны в будущем… но если какие-то классы будут совместимы с нашим интерфейсом лишь частично, то „заглушка“ подтянет остаток функционала. Может даже и ненужно будет бизнеслогику править, если она не все методы использует. Потом у нас набирается таких классов-заглушек десяток. Ты уже и забыл о них. Над ними еще десяток классов наросло.
И тут ты часть интерфейсов реализуешь враперами с не очень то совместимых систем (Ну скажем АПИ биллинга смс-центра не совсем похож на АПИ базы данных… но сходство есть — фактически это несколько CRUD-интерфейсов у которых не реализовано Update. Переносишь часть модулей с другой системы, согласуешь интерфейсы, пишешь враперы и собираешься дописывать недостающий функционал… а он опа — оказывается и не нужен — всё и так работает :) Нет, ты помнишь, что заглушку на count ты сделал через read. Но вот почему во view не выводится та часть интерфейса которая по логике и не должна выводиться (к примеру удаление уже отправленных смс или их редактирование)…
А оказывается ты при проектировании „на всякий случай“ функционал который реально нужен на уровне ActiveRecord реализовал еще на уровне построителя запросов, на самом низкоуровневом CRUD. А я то был уверен (и не зря), что это все делается ActivRecord.
=============
И это я еще не затронул командную работу, когда ты вообще только интерфейсы пишешь да задачи раздаешь, а кода в глаза не видел.
******************************************************
Я собственно к чему тему то начал? Я то как раз наоборот при каждой неожиданности провожу расследование.
Именно на случай таких вот „а вдруг“ неожиданный самореализовавшийся код не предусмотрит какие-то защиты…
******************************************************
Там не все файлы нужны. Там в коде все более менее понятно. Если я правильно помню там бинарные деревья для индекса. НО суть то не в том. Под нее есть вроде какой-то инструмент для редактирования словарей. Но не делать же для каждого языка самому словари :) Наверняка они уже есть…
pietrovich, в принципе незачем, разве что как часть каких-то других фильтров. Я ведь пример привел без регулярки. Просто когда писал изначально не задумывался так далеко, а как до реализации дошло — сразу стало понятно, что и замены в принципе хватит.
Но вообще разные ситуации могут быть. Вдруг он будет через редактор вводить так-же и жаваскрипт, а в скрипте будет неразрывный пробел.
Ну или по хорошему в зависимости от контекста пробелов может быть несколько, и это может выводится как несколько пробелов или как один. Тут тоже без регулярки никак.
Ну я к тому, что неразрывный не равен обычному пробелу, и как следствие ведет себя чуток иначе.
Но если хочется таки его заменить на пробел, то самое простое — там где вы получаете результат, поставить регулярку заменяющую неразрывный пробел обычным.
Хотя вообще думаю не обязательно и регулярку.
К примеру вот так сделать с каждой переменной: $text=str_ireplace('& nbsp;',' ', $_GET['text']);
Гарантированная скорость доставки это миф.
Видел как у мобильных операторов в их собственных случаях авторизации на их же телефоны смс приходили с большими задержками.
Конечно выбрав «правильного» оператора можно сократить вероятность задержек до минимума, но они все равно будут случаться.
Не всегда.
Реальный пример из переписки:
«Мендель, возьми в розетке лучше. У меня старая закупка, у меня вход выше. В розницу я и так продам. Ну не могу я в минус продать. Начальство не поймет. Бери в розетке, я тебе лучше на чем-то другом скидку дам.»
Нечто подобное бывало не один раз.
Хотелось бы оперется на какие-то цифры, а не так вот «мне кажется».
0.5 и 0.52 по моему мнению отличаются очень заметно, особенно если вычесть постоянную составляющую, ну скажем 0.45 — так уже будет 0.05 и 0.07 что уже не так пугает… в общем абсолютные цифры не так страшны, важна структура зависимости. Вот тут я начинаю плавать :)