• Новые работодатели ценили, то что вы имеете опыт завершенных проектов?

    @Vitsliputsli
    Иван Шумов, но ктото же все-таки их брал, иначе откуда шикарная послужная. А раз так, значит ребята отлично устроились, раз работодатели терпели это мудацкое отношение, и вероятно, крутили работодателями как им нравилось и за большие деньги.
  • Взять рандомную строку с удалением?

    @Vitsliputsli
    ThunderCat, походу он не про дубли, он пытается решить состояние гонки. Отсюда и попытка атомарного чтения/удаления.

    Роман,
    Задача чтение без дублей.

    Не такая у вас задача. Почему бы ее не описать? А не предлагать сразу поправить решение, которое может быть не правильным.
    "Строк около 6ККК" - прям 6 миллиардов? На MySQL?! И вы при каждом запросе даете каждой строке рандомный номер?!

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

    @Vitsliputsli
    XiNull,
    MySQL-сервер находится на отдельной машине, это тоже задержка.
    Т.е. первый запрос не успевает сделать апдейт, чтобы залочить выполнение для второго запроса.

    update - это атомарная операция, ее нельзя не успеть сделать.
    Пробовал лочить через БД, т.е. вначале скрипта делаю проверку, в БД записываю 1, а в конце скрипта 0

    Вот, между проверкой и update, влезает проверка другого скрипта.
    Решение - либо select for update, либо update с проверкой, одним запросом.
    В идеале, вообще не лочить, но для этого нужно разбираться с бизнес-логикой.
  • Что наследуется в ООП? Как работает наследование?

    @Vitsliputsli
    wideShift,
    class Animal
    {
      public function eat()
      {
        echo 'кушаю...';
      }
    }
    
    class Dog extends Animal {}
    class Sheep extends Animal {}
    
    Class Humanoid
    {
        public function feed(Animal $animal)
    	{
    	    $animal->eat();
    	}
    }

    А вы сюда добавляете:
    class Cat extends Animal
    {
      private function eat()
      {
        echo 'кушаю...';
      }
    }

    Что будет? При попытке покормить кота все свалиться в ошибку во время выполнения.
    Не нужно пытаться найти здесь лазейки, эти ограничения сделаны специально для уменьшения кол-ва ошибок. Прочитайте про принцип Барбары Лисков, эти принципы родились из практики.
    Второй вариант, переопределение метода с тем же именем, но как public, возможно, хотя лучше дать ему другое имя. Ситуация вполне допустима, т.к. мы можем ничего не знать про внутреннее устройство родительского класса.
  • Как мне сделать из строки число?

    @Vitsliputsli
    Ипатьев, я так понимаю, имелось ввиду, что, если взять "12.34", то
    1) не убирая точку получим 12
    2) убирая точку получим 1234
    Андрей подразумевал, что вариант 1 предпочтительней.
  • Возможно ли сделать hack/чит не нарушая авторские права?

    @Vitsliputsli
    Вроде как это не сильно подходит под статьи:
    УК РФ Статья 272. Неправомерный доступ к компьютерной информации
    УК РФ Статья 273. Создание, использование и распространение вредоносных компьютерных программ
    Но вполне под пункт "д" лицензии:
    (д) подвергать инженерному анализу

    Кроме того, судья - человек и судит он исходя из ситуации, а в вашем случае очевиден умысел обмануть, этого может быть вполне достаточно.
  • Как избавиться от множественных if/switch при выборе класса?

    @Vitsliputsli
    Причем здесь псевдонимы, задавайте имена классов динамически.
    А в классах, ничего кроме констант? Может тогда убрать все эти классы?
  • Как появляется сетевой интерфейс и ip адрес на примере linux?

    @Vitsliputsli
    hint000,
    Если говорить про физический хост, то создать-то можно виртуальный интерфейс без физического, но это не будет иметь практического смысла.

    Не совсем так, практически любая машина, даже без физических сетевых интерфейсов, имеет виртуальный интерфейс loopback, который крайне важен.
    Плюс вариант, когда нужно обращаться с хоста на виртуальную машину, тоже может использоваться виртуальный интерфейс.
  • В чем смысл связи один к одному?

    @Vitsliputsli
    Не всегда бессмысленно. Иногда это разбиение большой таблицы на более мелкие, а значит более производительные. Не всегда запрос требует все столбцы, а значит мы можем оптимизировать работу, и вместо обращения к большой таблице, будет обращение к маленькой, что гораздо эффективнее.
    Далеко не каждая база имеет вертикальное партиционирование.
    Но в варианте создание внешних ключей в новой таблице, полученные преимущества можмем потерять из-за необходимости проверок ключей. Поэтому в этом варианте, скорее бессмыслено.
  • Можно ли сделать составной уникальный ключ "в обе стороны" (напр. 3 и 15 == 15 и 3)?

    @Vitsliputsli
    Роми, тогда вопросов нет, все норм. И, скорее всего, это уже не денормализация, это новая сущность, пусть и зависящая от других.
    Насчет составного ключа для проверки уникальности, смотрите по задаче. В зависимости от того, как будете добавлять данные, эта проверка может быть и не лишней.
  • Можно ли сделать составной уникальный ключ "в обе стороны" (напр. 3 и 15 == 15 и 3)?

    @Vitsliputsli
    Роми, если нужна сумма пары каждого значения с каждым, то агрегат или материализованное представление выглядят вполне логичным решением при большом кол-ве данных. Правда, при таких требоавниях, не вижу особого смысла в составном ключе с проверкой уникальности, достаточно один раз верно написать запрос подготовки агрегата или материализованного представления.
    А что за бизнес-задача такая? Если не секрет. Точно ли, ее можно решить только так?
  • Можно ли сделать составной уникальный ключ "в обе стороны" (напр. 3 и 15 == 15 и 3)?

    @Vitsliputsli
    Я понимаю, конечно, какой вопрос, такой ответ, но все же... Если это нужно сделать 1 раз, то к чему огород из составных ключей, и ссылок на старую таблицу? Если это нужно на постоянной основе, то что это вообще за жесть, откуда и зачем эта денормализация?
    Пока выглядит так, что автор пошёл впиливать очередной костыль, вместо того, чтобы исправить проблему.
  • Builder: нужна ли фабрика, или можно в билдере оставить метод?

    @Vitsliputsli
    А не проще ли, сделать в билдере дефолтные значения и просто не писать эти сеттеры?
  • Сложно ли подделать IP апдрес при запросе $_SERVER['REMOTE_ADDR']?

    @Vitsliputsli
    ChairfaceChippendale, слишком сложно и малоэффективно. Нужен подконтрольный маршрутизатор, нужен RIP, подменить сможешь только диапазон этой сети, без RIP только для подконтрольного маршрутизатора. Поэтому практически мало шансов с таким столкнуться.
  • Возможно ли копировать полностью всю ОС Ubuntu через ssh?

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

    @Vitsliputsli
    Надим Закиров, разработка ПО подразумевает универсальные продукты, которые если не сейчас, то все равно потенциально могут использоваться многими людьми. Чтото только для себя - это так, поиграться, проверить гипотезу, не более того.
  • Как объединить 2 записи в одну по признаку?

    @Vitsliputsli
    Для подобных задач используется pivot, реализован он может быть по-разному, нужно смотреть для конкретной версии конкретной СУБД. Но реализация pivot по-моему всегда подразумевает необходимость задать необходимые колонки. Т.к. кол-во сотрудников все-таки вещь не вечно 2, то либо динамический SQL, либо подумать, а действительно ли так нужно? Очень странное решение, быть может вы пытаетесь на стороне СУБД решить задачу, которую надо решать на стороне приложения.

    Тупо и костыльно можно сделать так:
    select 
        min(employee_id) employee_id_first, 
        max(employee_id) employee_id_second,
        office_id
    from t
    group by office_id

    Но, так делать нельзя, потому что завтра их может быть 3 или 1, ну и т.п.
  • Как объединить 2 записи в одну по признаку?

    @Vitsliputsli
    Объединить можно с помощью group by. Но нужно определиться, что подразумевается под first и second. По какому признаку вы в employee_id_first поместили 1, а в employee_id_second 2?
  • Какие существуют решения для синхронизации БД на фронте и бэкенде?

    @Vitsliputsli
    Надим Закиров, то что вы хотите невозможно, все валидации должны быть на беке, т.к. фронту доверять нельзя, поэтому в любом случае придется делать только там. Для бека верно, это ORM, бывают совершенно разные, начиная от ActiveRecord заканчивая Doctrine, и почти как вы хотели, почти все автоматически. Но такая автоматическая работа слабо ориентирована на тонкую настройку, а база штука капризная, поэтому на высоких нагрузках - не вариант.
  • Блокировка PHP flock создает последовательную очередь?

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