• Недостатки PostgreSQL?

    @Vitsliputsli
    Ерлан Ибраев, спасибо.
    Кодировка вещь структурная, не очень понимаю, как можно одновременно в разных кодировках хранить?
    Интересный момент, вроде не было таких проблем с proxySQL. Может действительно проблема в jdbc.
    По поводу типизации, как уже писал, согласен абсолютно, хрень полная.
  • Недостатки PostgreSQL?

    @Vitsliputsli
    Ерлан Ибраев,
    1) кодировки - это структурные изменения, а это всегда и везде боль, если мы говорим о нагруженной системе.
    2) не понимаю, зачем держать открытым соединение и не использовать его? Наоборот, всегда закрываешь соединение, если оно не исопльзуется, если бережешь ресурсы.
    3) Есть такое, некая динамическая типизация. Согласен, польза очень сомнительная, а проблем от нее огребаешь много, пока не привыкнешь всегда о ней помнить.
    И это не все проблемы, но проблем хватает и в других СУБД, по-сути всегда приходится мириться с чем-то, ради чего-то. MySQL очень быстрая СУБД, это отличный выбор для нагруженных систем (если говорить о Percona), с оговоркой, что вы используете СУБД как базу данных, если нужно чтобы СУБД варила кофе, это точно не про MySQL.
  • Бизнес и продажа фичей важнее качества кодовой базы?

    @Vitsliputsli
    Рональд Макдональд, топ-менджмент не решает вопросы рефакторинга. Как вы себе представляете, сидит коммерческий директор и рассуждает о процедурном подходе и ООП в коде? Ну если только в компании из 2 человек. Разработчики (речь про тимлидов и архитекторов), как и любое другое подразделение, должны уметь разговаривать с людьми и доказывать необходимость вещей, которые считают важными. А заявления "это не мы, это нас злой бизнес заставил" - детский сад. Бизнес не проревьют ваш код и не заявит, что все нужно переписать на говнокод, разработчик это делает сам, сознательно.
    Менеджмент от бизнеса всем не заправляет, у него своя зона ответственности, у технарей своя. Сроки и доставка функционала - это ответственность и тех, и других. Другое дело, что менеджеры от бизнеса умеют добиваться своих целей, а технари нет и ноют, что их заставили.
    В итоге, если разработчики компетентны, то у них нет оправдания "нас заставили". Если они также умеют разговаривать, то и с бизнесом находят общий язык. Другое дело, что компетентность техническая в IT очень низкая в большинстве случаев, тем более, если работадатель нанимает сотрудников за гроши. А не умеют разговаривать еще большее кол-во.
  • Бизнес и продажа фичей важнее качества кодовой базы?

    @Vitsliputsli
    Akina,

    Менеджмент и продажа приносят прибыль.
    От разработки - одни убытки.
    Задача бизнеса - увеличение прибыли и снижение расходов-убытков.
    Поэтому менеджмент в шоколаде, а программисты ... ну ... в общем, не в фаворе.

    Ага, а для работника самый важный человек - бухгалтер, т.к. он деньги платит.
    А на производстве самый важный человек - вахтер, не пустит никого и предприятие не будет работать.
    Считать руководство и владельцев бизнеса людьми больными идиотизмом наверное приятно, но вряд ли они бы чего-то добились, если бы были такими дураками.
    Даже если говорить о стартапах, то некоторые компании вполне могут обойтись без разработки, но тем не менее с самого начала набирают штат, т.к. умеют считать прибыль от автоматизации.

    krakaka,
    я не управленец, но возможно в менеджменте есть какие-то практики ведения продукта с учетом именно технической стороны?

    Да, очень простая практика - нужно набирать профессионалов, но они стоят дорого, и не каждый себе может это позволить. Профессионал не будет оправдываться, "что злая тетя-менеджер от бизнеса заставила его писать говно-код". Профессионалы умеют разговаривать на человечьем языке, а не только языке машин, потому умеют договариваться с другими людьми. Хотя и профессионалы тоже люди, и не со всеми могут договориться, тогда они просто уходят из такой компании.
    Кодовая база - это ответственность разработчиков, а не менеджеров от бизнеса, как бы разработчики не ныли, что они не хотели это писать, но их заставили.
  • Как не выводить пустое меню?

    @Vitsliputsli
    gian_tiaga, Дмитрий Зорин, если используете empty, нет смысла писать еще и isset, т.к. empty уже включает в себя isset.
  • Работает ли logrotate без cron?

    @Vitsliputsli
    JuniorAdmin, Vitaly Karasik в своем ответе описал варианты.
  • Работает ли logrotate без cron?

    @Vitsliputsli
    JuniorAdmin, если вы не хотите использовать cron, то как вы хотите запускать logrotate?

    другие статьи в интернете делают logrotate.d/ в этом каталоге и у них якобы все работает

    Что конкретно делают? Быть может вы про запуск вручную? Покажите команды.
  • Работает ли 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х про динамическую речи не шло, но это и не про это, это про безопасность типов в памяти, уже в который раз пишу об этом. Если вы не понимаете, что это значит, так спросите: "о чем ты, вообще?". Но нет, "цитаты, которые лишь подтверждают то что я пишу", что именно подтверждает? Конкретно, можно? Пока вы заявили только, что Лисков со товарищи не фига не понимают, и путают статическую и сильную типизацию. Ну-ну... Куда уж ей...