Задать вопрос
  • Возможны ли коллизии при использовании rename?

    @Vitsliputsli
    zkrvndm, кейс:
    1 пользователь открыл файл для записи, у него есть дескриптор и на имя ему уже пофиг.
    2 пользователь переименовал этот файл.
    1 пользователь начинает писать.
    2 пользователь открывает файл и тоже начинает писать.
    В итоге все пишут в один файл.
    Вы можете блокировать файл для записи, но разница будет только в том, что 2 лишь подождет снятие блокировки.

    На всякий случай, есть простые СУБД типа sqllite, которые не требуют отдельного разворачивания инстаса, т.е. примерно то, что вы и пытаетесь сделать.
  • Grub установлен не правильно, не видит своего конфига?

    @Vitsliputsli
    Как переустанавливаете (команды)? Какая таблица разделов на диске gpt или mbr?
  • Возможны ли коллизии при использовании rename?

    @Vitsliputsli
    Запись логов обычно идет без блокировок, по понятным причинам. Она действительно выровнена, т.е. если запись меньше блока (обычно 16k), то проблем нет. Если больше, то возможна "каша".
    Rename, конечно, атомарный, но только вот в открытый файл мы пишем по файловому дискриптору, а не имени. Т.е. переименование не гарантирует, что кто-то не продолжит писать в этот файл.
  • Почему не работают констатны в ISPmanager?

    @Vitsliputsli
    Скорее всего пытались определить ее через другие несуществующие константы. В любом случае, читайте лог ошибок.
  • Как проверить, что прислан валидный отпечаток FingerprintJS?

    @Vitsliputsli
    Александр Аксентьев, думаю они так делают, чтобы различать типы фингерпринтов по типу собранных данных, быть может даже формируют связи при частичных изменениях. А если такие тонкости не нужны, то просто хеш и валидировать структуру не нужно, т.к. смысла в этом уже нет.
    Вопрос к Надим Закиров, какова цель валидации? И, кстати, GUID тоже бывает разный, 4 версия - сплошной рандом, кроме нескольких бит, собственно версию обозначающих. Тут вопрос не в формате, а что и для чего проверяем.
    1) гарантировать валидность невозможно. даже если это будет строка, или набор данных, в них тоже легко поменять что-либо.
    2) проверять нужный ли формат хеша или другой нет смысла из-за п.1
    3) хочется усложнить немного подмену - введите в запрос signature, считайте еще и хеш с солью по всему запросу, тогда взломщику понадобится лезть в код и разбираться как генерируется signature.
  • Могут ли буть уровни изоляции у распределенных транзакций? И если да, то каким образом их определить?

    @Vitsliputsli
    Sergey Myasoedov, очень хорошо проблематику описал mayton2019.
    Т.е. даже если у вас кластер, но транзакция выполняется всегда строго на одной ноде, назвать это распределенной транзакцией нельзя. С другой стороны, в колоночных СУБД распределение данных по нодам не обязательно полное и один запрос будет выполняться на нескольких нодах, но там и от консистентности одно название.
    Если же говорить про highload, то в нем вопрос не особо актуален, при высокой нагрузке требуется максимум производительности системы, поэтому лучше вовсе не использовать транзакции, как и любые иные блокировки. А если уж очень надо, то они должны быть очень короткими и быстрыми.
    Если же брать ваш кейс про микросервисы, подразумевая, что транзакция это сущность бизнесовая, а не в СУБД. То тут уже полностью программная реализация, как напишите так и будет, и борьба с аномалиями только на стороне кода приложения. Скажем, если у вас геораспределенная система, то скорее всего вы не можете ждать, пока данные в разных точках мира будут согласованы, и приходится жертвовать консистентостью, делать ее отложенной. Вообще в таких системах даже подразумевается, что консистентность может отсутствовать в определенный момент времени, но в конечном итоге все подсистемы придут в состояние согласованности.
    В общем, если у вас нагруженная система, то классические и универсальные решения не подходят, вам нужны специализированные решения и жертвы.
  • Как сменить кодировку MySQL?

    @Vitsliputsli
    pixal, попробуйте варианты с изменением кодировки, в том числе для 1 столбца. Если вообще ничего не поможет, тогда колхоз, сделайте обработку строк получаемых из БД, выделите диапазон в latin_swedan_ci (она однобайтовая) и перезаписывайте его кириллицей. И наоборот при записи.
  • Как сменить кодировку MySQL?

    @Vitsliputsli
    База создается в кодировке latin_swedan_ci

    Зачем? Если вам нужна кириллица.
  • Как безопасно раздать пользователям веб-ресурс из частной сети?

    @Vitsliputsli
    Drno, я бы написал, что автор в вопросе поднял отдельный шлюз специально для vpn, поэтому про шлюз в интернет речи не идет, можно конечно и на шлюзе в интернет это сделать, но тут уж просто точно никак не получится. Хотя лучше просто пошлю вас взаимно.
  • Почему использование оператора '??' убирает ошибку об неопределенной переменной?

    @Vitsliputsli
    Александр Антонов, ну нет, разница очень большая, тогда примерно понятен посыл про типизацию, ts совсем другой язык, там нет неявной типизации, в php даже с использованием явной типизации все равно остается много неявных преобразований.
  • Почему использование оператора '??' убирает ошибку об неопределенной переменной?

    @Vitsliputsli
    Александр Антонов,
    ситуация отличаетлся тем что ключи массива потом обычно не меняют в отличие от называния переменной при рефакторинге, хотя пример конечно натянутый, я этот оператор по сути ассоциировал с ?. в js

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

    это вообще само по себе странное занятие после типизированных языков где переменной не может просто так не быть

    Нетипизированные языки - это языки ассемблеров. А если уж сравнивать php и js, по "типизированности", то второй менее типизирован, т.к. типов в нем меньше (нет int, нет ассоциативных массивов). А если речь про явную типизацию, или про строгость сравнений, то опять же все мимо js.
    Не говоря уже о том, что проверка определена и инициализирована переменная вообще имеет отдаленную связь с типами.

    В общем, вы просто так привыкли, т.к. другого не видели.
  • Как правильно организовать подтверждение действия в PHP?

    @Vitsliputsli
    И не забудьте про race condition, когда 1 пользователь нажал сохранить, убедился что запись отличается от существующих, затем 2 пользователь создает аналогичную запись, 1 пользователь сохраняет свою. В итоге, у вас 2 одинаковые записи.
  • Как с помощью eval создавать переменные на ходу?

    @Vitsliputsli
    Zorgios,

    визуализация имеющегося кода для удобного редактирования через графический интерфейс

    сгенерируйте полный код и тогда уже его исполняйте, это будет гораздо проще и писать, и тестировать. Когда начнете оперировать блоками if вам все равно придется генерировать и исполнять большие куски кода, там уже не получится оперировать такими простыми продукциями.
    А раз визуализация имеющегося кода, значит и загружать в визуальный интерфейс нужно готовый код.
  • В чем разница между запуском питоновского скрипта от имени пользователя и через nohup?

    @Vitsliputsli
    shurshur,

    nohup делает почти то же самое, что и & после команды

    Правильнее сказать, что nohup делает совсем другое, чем &.
    & запускает выполнение в фоне.
    А nohup перенаправляет вывод программы, и да, вывод с таким же успехом можно перенаправить самому.
    А для чего понятно, чтобы при закрытии пользователем терминала программа не упала из-за потери интерфейса вывода.
  • Как git изменяет содержимое файла?

    @Vitsliputsli
    Lynn «Кофеман», правильно на счет неверного изначального утверждения. Но, и утверждение, что закоммитив 8мб файл 100 раз у вас будет реп на 800мб тоже неверное.
  • Как git изменяет содержимое файла?

    @Vitsliputsli
    jcmvbkbc, спорю с этим:

    "Полные копии всех состояний не хранятся."
    По умолчанию хранятся.

    Вот подопытный файл размером почти 8M.
    Вот файл блоба с его первоначальным состоянием размером 4М.
    Вот ещё один файл блоба, из нового коммита, с добавленной одной строчкой, почти такого же размера -- 4M.

    4М это меньше, чем 8М, а значит уже не полная копия.

    Мало того, даже по вашей ссылке написано:
    Первоначальный формат для сохранения объектов в Git называется «рыхлым» форматом (loose format). Однако, время от времени Git упаковывает несколько таких объектов в один pack-файл для сохранения места на диске и повышения эффективности. Это происходит, когда «рыхлых» объектов становится слишком много

    Т.е. даже эти куски по 4М будут сжаты (и git об этом не нужно специально просить), и будет как в моем 30M репе на 4000 коммитов, который в git занимает 35M. Т.е. то что мы наблюдаем в вашем примере, лишь "кеширование" для удобства работы с горячими данными.
  • Почему не видно переменную при импорте файла?

    @Vitsliputsli
    Откройте в браузере код страницы и посмотрите, что там получилось в переменной cards
  • Почему не видно переменную при импорте файла?

    @Vitsliputsli
    Так он так и делает, какая разница как выводить слово script, через echo или как php шаблон html.
  • Как git изменяет содержимое файла?

    @Vitsliputsli
    Lynn «Кофеман», вполне возможно, не скажу. Но, точно "Полные копии всех состояний не хранятся". Несмотря на ерничание jcmvbkbc, который вдруг забыл русский язык, когда не смог ответить.
  • Как git изменяет содержимое файла?

    @Vitsliputsli
    jcmvbkbc, исключение, потому, что например мой реп в 30Мб на почти 4000 коммитов в git занимает 35Мб, и разумеется я ничего специально не упаковывал.