Задать вопрос
  • Планирую перейти с 1С на Golang на сколько реально в 42 года?

    @Vitsliputsli
    Roman Kitaev, все верно, Go проще чем Си, и изучать его, зная другой язык на хорошем уровне гораздо проще. Но 1С это не другой язык, это не python, 1С - это больше работа с базой данных, с неким визуальным оформлением. Об этом Игорь наверное и пишет, что уже имея хорошую базу - да, перейти легко, но 1С не даст такой базы, т.к. это специализированный язык, а не язык программирования общего назначения.
  • Достаточна ли защита сайта php?

    @Vitsliputsli
    WapSter, а что имеется ввиду под встроенной защитой от sql-инъекций в ORM? То что они используют подготовленные запросы, так им там ничего и не надо встраивать, или что-то другое?
  • MVC (PHP): правильно ли понимаю слои?

    @Vitsliputsli
    Михаил, не получаем, mvc не запрещает, но и не заставляет вас так делать.
    Равно как и Active Record не заставляет вас использовать его модели, как ваши бизнесовые модели.
    А мечты, что мы тут напишем бизнесовую модельку, а потом по щелчку будем сохранять в любой классической реляционной СУБД, а может и в NoSQL, а может в колоночной, не работают, если вам нужна нормальная производительность. Структура БД строится исходя из работы с данными в конкретной СУБД, даже для одних и тех же данных в классической она будет одна, в колоночной другая, и в любом случае не имеет прямой зависимости от бизнесовых моделей.
  • MVC (PHP): правильно ли понимаю слои?

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

    3 незамысловатых элемента: Контроллер, Модель, Представление, не так уж и сложно реализовать на практике, в этом нет никакой проблемы.
  • Как архитектурно лучше решить такую задачу (с точки зрения ооп)?

    @Vitsliputsli
    Подскажите пожалуйста, какие есть архитектурные решения?

    Решения чего? Задачи ведь нет. Есть уже написанное решение неизвестной задачи.
    К примеру, если нужно состыковать 2 объекта использующие разные интерфейсы, то можно воспользоваться паттерном адаптер. Быть может у вас такая задача, а может и нет.
  • Перенес проект c Git неправильно, как исправить?

    @Vitsliputsli
    AlexanDev,
    вот это я понимаю ответ.... столько букв, а полезной информации 0!

    все зависит от тебя, также как и при сохранении информации, когда ты "делал бекап" на флешечку, столько было телодвижений, а результат нулевой. И после того, как не смог даже бекап нормально сделать, теперь требуешь, чтобы кто-то за тебя все починил?
    Начни с основ компьютерной грамотности, как делают бекап, зачем их делают несколько, почему флешечка не гарантия сохранения всех данных, что значит слово распределенная для системы git. И глядишь, в будущем результат будет отличным от нулевого.
  • Перенес проект c Git неправильно, как исправить?

    @Vitsliputsli
    Нет там никакой магии, все лежит в git директории. Вероятно что-то потерялось по дороге. Нужно проверять, что живо, и пытаться вытягивать, что есть.
    Если не только git но и файлы скопированы, как минимум 1 версия из последних у вас есть.
  • Как прочитать определенную строку в файле?

    @Vitsliputsli
    FanatPHP, да, забыл про переносы, нужно усложнять условие для sed, и выигрыш уже не такой большой. Поправил ответ.
  • Как отклонить соединение при 10 и более запросов TTL 58?

    @Vitsliputsli
    Ответ про модуль ttl уже дан, но не стоит расчитывать, что ttl всегда 58. Пока это один и тот же атакующий, то понятно, но завтра будет другой, у которого на пути к вам будет еще один маршрутизатор и ttl будет меньше.
  • Как получать response при выполнении запросов через curl, если CURLOPT_RETURNTRANSFER может быть отключен?

    @Vitsliputsli
    Универсальность враг специализации. Нужно понимать как и каким образом будет работать прослойка.
    Тем не менее:
    1) используйте всегда CURLOPT_RETURNTRANSFER, если файлы большие - пишите в локальный файл.
    2) перехватывайте вывод в браузер, не очень хорошо, да обрабатывать буфер нужно на ходу, если файлы большие
  • Как в Agile решается проблема, когда на последних спринтах приходит требование, ради которого придется все переделывать?

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

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

    @Vitsliputsli
    Сергей Ерин, а также, можно поразмыслить, почему метод в модели называется getDropDownData (уже какая-то смесь model и view, а вы ее еще хотели усугубить). Почему модель называется Search, если мы в ней ничего не ищем, а берем все скопом, и вообще она занимается пользователями. Что за подозрительный distinct в запросе, неужели id не уникальны? Почему массив с пользователями называется query? Зачем вообще этот foreach, вроде в yii был специальный метод для этих целей.
  • Почему выдает ошибку bash: npm: command not found?

    @Vitsliputsli
    Mitch Conner, ну т.е. не bash ошибку пишет, а npm, тогда да. Значит автор лукавит насчёт bash.
  • Как в crontab ubuntu перезапускать сервис?

    @Vitsliputsli
    А зачем его перезапускать? Пусть работает постоянно.
  • Где ошибка скрипта?

    @Vitsliputsli
    Случайно закинул в ответы, переношу сюда:

    Хотел написать, что должны быть более точные требования, чем "нужного и ненужного".
    Но увидев использование shuf (даже не знал, что такое есть), понял, что это какая-то шутка.

    Roman Bolshukhin,

    shuf - рандомный поиск. Применимо, допустим, при условии, если сериал впервые скачан и не имеет целевой папки, то скрипт в след раз с вероятностью, не будет на него обращать внимание, а рандомно будет обращаться к другому.

    Шутки здесь нет никакой.

    Да я уже посмотрел, что это, Но, эээ... вы пишете код с расчетом, что что-то получится случайно? рандомно?
  • Как дополнить метод в дочернем классе?

    @Vitsliputsli
    FanatPHP, в ООП про наследование забыть не получится, главное помнить, что это должны быть родственные вещи, и этого достаточно.
  • Деградация передачи данных через php stream_socket_server и неблокируемый режим?

    @Vitsliputsli
    Нет там отличия кода, только настройки. Не понимаю чем нам поможет so_reuseport в пробоеме с лимитом файловых дескрипторов.
  • Взаимосвязанные сайты?

    @Vitsliputsli
    cheburek_ilon, обычная классическая БД, почему 1.1.1 непонятно, все это делается внешними ключами.
    У XDCR преимущества, что не столкнетесь с сложностями master-master СУБД репликации, гибко можете настраивать, чем и как обмениваетесь, но все это потребует написания кода. С одной стороны это не так сложно, но и не так просто - если опыта в разработке мало, то не стоит браться за эту задачу, проще будет взять готовое решение вроде master-master СУБД репликации, но там есть свои сложности и достаточно серьезные, почему многие и внедряют XDCR.
    XDCR подразумевает обмен данными между ДЦ через приложения по отдельному каналу, например http. Как правило формируется очередь (в базе или в брокере) и на основе ее формируется пакеты обновления для другого ДЦ. Воркеры берут пакеты из очереди и отправляют в другие ДЦ (1 поток - 1 воркер). Пакет - это не обязательно 1 запись в таблицы, если записи в разных таблицах связаны, то их нужно передавать в одном пакете (это не значит, что связанные по внешним ключам нужно передавать в одном пакете, смотрите по ситуации). Если происходит ошибка в обмене, вся очередь для сбойного ДЦ останавливается до момента устранения ошибки (если поделили очередь на независимые потоки, то можно останавливать только сбойный поток).
    При 2-3 ДЦ достаточно простой схемы "все обмениваются со всеми". Одним из важных моментов - это разделение транзакций по потокам, чтобы если транзакция обрабатывается на 1ом ДЦ, то все что с ней связано далее, тоже обрабатывалось на 1ом ДЦ (чтобы апдейты одной и той же записи не прилетели на разные ДЦ). У вас это пользователи, которых вы в любом случае будете привязывать к определенному ДЦ. Не нужно их привязывать навсегда, только в рамках текущей сессии.