Задать вопрос
  • Работает ли logrotate без cron?

    @Vitsliputsli
    JuniorAdmin, logrotate это не демон, его что-то должно запускать, если не cron, то "добавьте туда, куда посчитаете нужным", т.е. в другой планировщик.
    Напишите, что хотите сделать, а не как хотите, тогда быть может станет проще помочь.
  • Как сравнить строки?

    @Vitsliputsli
    Narbek, если забыть про нормализацию, то проблема в том, что в базу пишется абы что, если при чтении требуется строго определенный формат, то пишите только в этом строго определенном формате и не будет подобных проблем.
  • Transactional messaging. Какие существуют реализации транзакционных очередей сообщений?

    @Vitsliputsli
    Почему отложенная согласованность? Вернее, где вы ее применяете? Транзакция выполняется последовательно, синхронно, никакой отложенности здесь не должно быть. Если речь про что-то вроде DWH, тогда понятно.
    Polling publisher наиболее распространенное решение, по-моему, надежное, и более простое по сравнению Transaction log tailing (быть может потому, что я видел только реализации по 1 сценарию).
    Будет ли медленным Polling publisher? Смотря, что для вас медленно, в принципе стандартные потери на СУБД, пересылку по-сети и прочее.
    Насчет публикации прямо из СУБД, не думаю, что это хорошее решение, если у вас нагруженная система, СУБД всегда узкое место, не нужно заставлять ее делать что-то еще, кроме того что она и так делает хорошо.
    Насчет удаления из outbox, то мне кажется в варианте, когда вы забираете данные из журнала, нет смысла создавать outbox. Забирайте прямо из основной талицы, ориентирусь на какой-либо параметр: id, время обновления. Но нужно смотреть применимость в конкретной ситуации. Не знаю как работать с журналом, но думаю там есть встроенные идентификаторы транзакций, какой-нибудь GTID, и можно ориентироваться на него.
  • Почему get_object_vars() возвращает только НЕ типизированные свойства?

    @Vitsliputsli
    Сергей Кореневский, вы экономите не там где нужно. Чистота кода здесь и рядом не лежала, наоборот любые неявные вещи ухудшают код. Дефолтные значения используются в подобных случаях не от того что программистам было лень инициировать переменные, а потому что при статическом типе переменной, которая просто указывает на ячейку памяти не получится иначе, другое дело при более сложной системе типов, что собственно в пыхе и сделали.
    Заявить, что здесь в бизнес-логике мусор навален, зато в другом месте триумф лени, не пришлось указывать часть значений - это фиаско.
  • Цикл обрывается при получении одного из ответов 500 по апи, как это пропускать и идти дальше?

    @Vitsliputsli
    Причем здесь 500 ответы от API, если, судя по ошибке и коду, у вас не работает форк процесса, соответственно новые не создаются, соответственно некому что-либо отправлять?
  • Как спроектировать БД для обслуживания запросов пользователей?

    @Vitsliputsli
    Ромзес Панагиотис, логически, сущности эти разные, пусть они и схожи в данный момент. Технически, зачем вам IsCurrent, по которому ещё и индекс будете строить, не проще ли сразу разделить?
  • Где здесь можно применить наследование в Java?

    @Vitsliputsli
    Негде его применять. Примененное в примере - это логическая ошибка. Создать потомков по типам можно, но конкретно в этом примере не нужно, т. к. это ничего не даст.
  • Как спроектировать БД для обслуживания запросов пользователей?

    @Vitsliputsli
    Все зависит от того как вы будете использовать эти данные. Не зная этого, можно лишь гадать.
    В общем случае, конфигурация и заявки на её изменение сущности разные и хранить их следует отдельно. Но если ваша конфигурация на самом деле просто заапрувленная заявка, то смысла нет. Смотрите как будете формировать select, исходя из них формируйте наиболее эффективную структуру.
  • Создать несколько таблиц или попробовать унифицировать?

    @Vitsliputsli
    Богдан Герасименко, если у вас тысячи записей, а вы выбираете 10 штук для работы. Если значения конфигов ваших api изменяются приложениями. В подобных случаях использование БД удобно, в вашем случае не очень понимаю причины переноса их в БД.
  • Создать несколько таблиц или попробовать унифицировать?

    @Vitsliputsli
    Сколько этих API? Это к тому, а зачем их хранить в БД?
  • Как правильно отключить часть кода?

    @Vitsliputsli
    zaart, да, лучше. Ну еще, если есть деление на продакшен и тестовое окружение, то secret вынести в конфиг продакшена.
  • С чего начать изучение языка?

    @Vitsliputsli
    Дмитрий Беляев,
    различных класификаций систем типов много, каждая из них ставит одни системы типов в сильную позицию, а другие в слабую

    А все дело в том, что явная типизация будет более сильной чем неявная, статическая более сильная чем динамическая, soundness более сильная чем completeness, и т.д.

    Я реально не сразу понял, о чем вы, просто потому, что не делает так никто, кроме вас. Сильная/слабая всюду идет как отдельная классификация, кто-то говорит о безопасности использования памяти (о чем я писал на примере Си), кто-то считает "слабым" и автоматическое преобразование типов (не знаю почему, потому и пытаюсь выведать), но никто не использует их просто как слова сравнения.
    И приведенные цитаты совсем не об этом, там где-то используется сравнение? Нет. Про соответствие типов написано, про data area даже, stronger than - нет. Любая классификация, которую можно встретить, говорит, что язык имеет сильную, либо слабую типизацию. Да, можно сказать, что у этого более слабая чем у другого, но никто не говорит, что у Си сильная типизация, потому как он статически и явно типизирован.
    В общем, как уже было сказано, в эти слова каждый вкладывает свое значение, что приводит к бессмысленности их употребления.
  • С чего начать изучение языка?

    @Vitsliputsli
    Дмитрий Беляев, так вы и не спорите, бросаетесь ничего незначащими фразами, с намёками, что постигли все тайны, а аргументировать не можете. У вас что-то профессиональное? Нужно пускать пыль в глаза, стараться не говорить конкретики, чтобы не поймали на незнании?
    Разумеется, в 70х про динамическую речи не шло, но это и не про это, это про безопасность типов в памяти, уже в который раз пишу об этом. Если вы не понимаете, что это значит, так спросите: "о чем ты, вообще?". Но нет, "цитаты, которые лишь подтверждают то что я пишу", что именно подтверждает? Конкретно, можно? Пока вы заявили только, что Лисков со товарищи не фига не понимают, и путают статическую и сильную типизацию. Ну-ну... Куда уж ей...
  • Как правильно отключить часть кода?

    @Vitsliputsli
    zaart, $_POST['g-recaptcha-response'] вы напрямую вставляете в GET запрос, вероятно стоит валидировать эти данные перед вставкой. Или лучше использовать post запрос, для таких действий логически он больше подходит, да и secret светить в строке запроса тоже не очень хорошо.
  • С чего начать изучение языка?

    @Vitsliputsli
    Дмитрий Беляев, о том и речь, что когда говорим слабая/сильная, уже неизвестно, что конкретно имеется ввиду, а когда заявляем, что это "комплекс классификаций", очевидно, что это уже совсем какие-то субъективные измышления.
    Неявная типизация здесь совсем не при чем, т.к. проверки типов при операциях и выбор типа исходя из значений - это разные вещи. Разница принципиальная, неявная - это когда что-то делается неявно, а здесь наоборот отсутствуют дополнительные проверки, что ослабляет контроль над типами со стороны языка. Т.е. речь про безопасность типов в памяти.
    Исторически:
    In 1974, Liskov and S. Zilles defined a strongly-typed language as one in which "whenever an object is passed from a calling function to a called function, its type must be compatible with the type declared in the called function."[3] In 1977, K. Jackson wrote, "In a strongly typed language each data area will have a distinct type and each process will state its communication requirements in terms of these types."

    То что описываете вы, это полнота языка по Тьюрингу, прямой связи с типизацией здесь нет, просто потому, что язык вообще может не иметь типизации.
  • С чего начать изучение языка?

    @Vitsliputsli
    Дмитрий Беляев, собственно, выше уже написал, могу процитировать Вики:
    Languages are often colloquially referred to as strongly typed or weakly typed. In fact, there is no universally accepted definition of what these terms mean. In general, there are more precise terms to represent the differences between type systems that lead people to call them "strong" or "weak".

    Поэтому "на самом деле" всеми признанного определения этой классификации нет. На мой взгляд, самое адекватное определение для сильной/слабой - это насколько сильно/слабо выражены типы в языке, т.е. насколько много проверок этих типов существует при осуществлении операций. Если вы можете обратиться к переменной одного типа, как к переменной другого типа, и компилятор/интерпретатор на это никак не прореагирует - это слабая типизация (здесь речь не про неявные преобразование типов, а именно про отсутствие контроля типов при обращении к памяти со стороны языка). Называть неявное преобразование типов слабой типизацией на мой взгляд странно, даже семантически причем здесь слово "слабая" неизвестно.
  • Как правильно отключить часть кода?

    @Vitsliputsli
    zaart, может я не понимаю, в чем проблема... Напишите перед вашим
    if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])) (isset, кстати, здесь не нужен)
    что-то вроде:
    if ($config->get('recaptcha.enable') === true) {
    $config - это объект Конфигурация, если его нет, то нужно создать соответствующий класс, который будет парсить конфиг-файл, и обеспечивать доступ к его свойствам по get-методу.
  • Как правильно отключить часть кода?

    @Vitsliputsli
    Антон Р., это неявное поведение, потом пойди догадайся как приложение будет себя вести исходя из ip или других факторов.

    zaart, зачем 2 формы? Одна, но с условием, опираясь на конфиг.
  • С чего начать изучение языка?

    @Vitsliputsli
    Дмитрий Беляев, динамическая/статическая это одно, явная/не явная другое, а сильная/слабая третье. К примеру, Си имеет статическую слабую типизацию. Слабая она не потому что явная или статическая, а потому, что контроль типов слабый, и программист сам должен отслеживать отдельные моменты: где строка, а где число.
  • Как преобразовать "[a,b,c]" в [a,b,c]?

    @Vitsliputsli
    nnikolyaa, тем, что позволяет выполнять любой код, и если выполняемая строка приходит извне, нужно жёстко её контролировать.