• Неожиданно правильное поведение программ

    Mendel
    @Mendel Автор вопроса
    Ну да, нелокализуемые глюки это весомый аргумент.
  • Неожиданно правильное поведение программ

    Mendel
    @Mendel Автор вопроса
    А чем было страшно? Каким именно боком могло выйти? Это влияло на стабильность/безопасность или?
    Тут тонкий момент — в большинстве случаев лучше умереть получив неожиданные данные, но часто их наоборот лучше привести и не морочить себе голову. Ответьте плиз, мне это важно.
  • Неожиданно правильное поведение программ

    Mendel
    @Mendel Автор вопроса
    То что в Вашем комментарии написано — нарушение более чем одного правила нормального общения в сети. Отсюда и непонимание окружающими того что Вы хотели сказать.
  • Неожиданно правильное поведение программ

    Mendel
    @Mendel Автор вопроса
    Ну в целом да. Плохо что нет type-hints для скаляров… С тем что мне бы стоило пройтись на депрекейтед тоже согласен… @ тоже зло… С мегабайтными проверками типов и вообще данных на входе не очень согласен, это более прожориво… хотя тоже имеет право на жизнь.
    ====
    п.6 — вообще без комментариев. Слишком уж частный случай. Я указал свою ошибку, и мне в нее макнули «а я таких ошибок не совершаю». Информативно :)
    ===
    > Нет, не бывает. Вы просто плохо разбираетесь в коде или особенностях языка.
    Один сказал «не бывает» — без объяснений (см. выше). Я на страницу ответ накатал. Теперь следующий пишет тоже самое и опять без аргументов… Я в прошлой жизни много грешил?)
  • Неожиданно правильное поведение программ

    Mendel
    @Mendel Автор вопроса
    Извините, но понимание ВСЕГО что работает возможно только в оооооочень маленьких проектах.
    На выходных написал одну небольшую библиотеку:
    5 интерфейсов с описанием (около 20кб текста_комментариев/«кода»)
    9 абстрактных классов (12кб «кода» из которых реально исполнимого 1-2кб)
    5 реальных классов общим весом в 30кб, на 50% это рефакторинг старого кода, 50% свежак.
    1 небольшой класс для тестов + 15 кб тестов (25 тестов).
    =======
    Это только ОДНА библиотечка.
    Таких библиотек в продакшене иногда бывает полтора десятка.
    Плюс столько же кода с бизнеслогикой…
    И половина из этого кода писана 3-5 лет назад.
    ========
    Вы знаете, я в свое время тоже любил спорить на тему «шашечки или ехать»....)))
    Как раз таки при правильном проектировании совмещение разных подсистем вдруг выдает тебе неожиданные возможности, и не всегда это плохо. Иногда ты продумывал какие-то дефолты по принципу «думаю так будет лучше, но пока не знаю где это пригодиться. А потом естественно забыл об этом. Ибо в голове много чего другого было… А потом десяток таких умолчаний создало отдельный функционал. Правильный)))))
    ========
    Банальный пример: пишешь интерфейсы и абстрактные классы, „заглушки“… у самых базовых вещей прописываешь некую дефолтную логику. Просто чтобы меньше было нереализованных „типовых“ действий… Логика подразумевает, что все эти методы будут переопрделенны в будущем… но если какие-то классы будут совместимы с нашим интерфейсом лишь частично, то „заглушка“ подтянет остаток функционала. Может даже и ненужно будет бизнеслогику править, если она не все методы использует. Потом у нас набирается таких классов-заглушек десяток. Ты уже и забыл о них. Над ними еще десяток классов наросло.
    И тут ты часть интерфейсов реализуешь враперами с не очень то совместимых систем (Ну скажем АПИ биллинга смс-центра не совсем похож на АПИ базы данных… но сходство есть — фактически это несколько CRUD-интерфейсов у которых не реализовано Update. Переносишь часть модулей с другой системы, согласуешь интерфейсы, пишешь враперы и собираешься дописывать недостающий функционал… а он опа — оказывается и не нужен — всё и так работает :) Нет, ты помнишь, что заглушку на count ты сделал через read. Но вот почему во view не выводится та часть интерфейса которая по логике и не должна выводиться (к примеру удаление уже отправленных смс или их редактирование)…
    А оказывается ты при проектировании „на всякий случай“ функционал который реально нужен на уровне ActiveRecord реализовал еще на уровне построителя запросов, на самом низкоуровневом CRUD. А я то был уверен (и не зря), что это все делается ActivRecord.
    =============
    И это я еще не затронул командную работу, когда ты вообще только интерфейсы пишешь да задачи раздаешь, а кода в глаза не видел.

    ******************************************************
    Я собственно к чему тему то начал? Я то как раз наоборот при каждой неожиданности провожу расследование.
    Именно на случай таких вот „а вдруг“ неожиданный самореализовавшийся код не предусмотрит какие-то защиты…
    ******************************************************
  • Словари phpmorphy?

    Mendel
    @Mendel Автор вопроса
    Там не все файлы нужны. Там в коде все более менее понятно. Если я правильно помню там бинарные деревья для индекса. НО суть то не в том. Под нее есть вроде какой-то инструмент для редактирования словарей. Но не делать же для каждого языка самому словари :) Наверняка они уже есть…
  • Словари phpmorphy?

    Mendel
    @Mendel Автор вопроса
    Ну родные здесь лежат: phpmorphy.sourceforge.net/dokuwiki/download
    Не думаю что морфологические словари еще куда-то подойдут кроме как для морфологии :)
  • Исправить CLEditor?

    pietrovich, в принципе незачем, разве что как часть каких-то других фильтров. Я ведь пример привел без регулярки. Просто когда писал изначально не задумывался так далеко, а как до реализации дошло — сразу стало понятно, что и замены в принципе хватит.
    Но вообще разные ситуации могут быть. Вдруг он будет через редактор вводить так-же и жаваскрипт, а в скрипте будет неразрывный пробел.
    Ну или по хорошему в зависимости от контекста пробелов может быть несколько, и это может выводится как несколько пробелов или как один. Тут тоже без регулярки никак.
  • Исправить CLEditor?

    Ну я к тому, что неразрывный не равен обычному пробелу, и как следствие ведет себя чуток иначе.
    Но если хочется таки его заменить на пробел, то самое простое — там где вы получаете результат, поставить регулярку заменяющую неразрывный пробел обычным.
    Хотя вообще думаю не обязательно и регулярку.
    К примеру вот так сделать с каждой переменной:
    $text=str_ireplace('& nbsp;',' ', $_GET['text']);
  • Каким способом настроить оповещение по смс?

    Гарантированная скорость доставки это миф.
    Видел как у мобильных операторов в их собственных случаях авторизации на их же телефоны смс приходили с большими задержками.
    Конечно выбрав «правильного» оператора можно сократить вероятность задержек до минимума, но они все равно будут случаться.
  • Стоит ли приобретать сервера (платформы) в интернет-магазинах?

    Не всегда.
    Реальный пример из переписки:
    «Мендель, возьми в розетке лучше. У меня старая закупка, у меня вход выше. В розницу я и так продам. Ну не могу я в минус продать. Начальство не поймет. Бери в розетке, я тебе лучше на чем-то другом скидку дам.»
    Нечто подобное бывало не один раз.
  • Как вычислить размер минимальной выборки для анализа влияния фактора на CTR рекламы?

    Mendel
    @Mendel Автор вопроса
    Хотелось бы оперется на какие-то цифры, а не так вот «мне кажется».
    0.5 и 0.52 по моему мнению отличаются очень заметно, особенно если вычесть постоянную составляющую, ну скажем 0.45 — так уже будет 0.05 и 0.07 что уже не так пугает… в общем абсолютные цифры не так страшны, важна структура зависимости. Вот тут я начинаю плавать :)
  • Описание переменных используемых в шаблоне

    Да уж. К смарти равнодушных нет — кто-то считает его лучшим решением, кто-то худшим. :)
    Чисто религия…