• SELECT * vs SELECT COUNT(*) vs ... - что быстрее?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Как всегда - дурацкий вопрос, да еще и по-дурацки сформулированный, порождает кучу дурацких ответов.

    ЕСЛИ не читать тело вопроса, а отвечать на вопрос из заголовка (а это ключевой момент для Q&A сайта, поскольку тупые поисковики приводят именно по заголовкам. И администрация должна следить за релевантностью оных и вычищать вопросы, которые автор не в состоянии сформулировать), то ответ однозначный - за выборку ЗАПИСЕЙ только для того, чтобы ПОСЧИТАТЬ их, дают пожизненный эцих с гвоздями. Считать должна база!

    ЕСЛИ отвечать на вопрос вне контекста вставки, а только глядя на запросы, то ответ - ОДИНАКОВО. В обоих случаях никакого подсчета нет а есть только выборка по ключу.

    ЕСЛИ вникать в контекст задачи чуть глубже, то появляются варианты ускорить МНОЖЕСТВЕННУЮ проверку, такие как prepared statements (тот редкий случай, когда их фича с множественным исполнением может выстрелить).

    ЕСЛИ вникать в задачу окончательно, то правильным будет ответ @zeromodule. Причем вставку надо либо делать множественную, по тысяче записей, либо заворачивать в транзакцию - поскольку ОБНОВЛЕНИЕ ИНДЕКСА при таком количестве вставок начнет тормозить работу куда сильнее, чем нищасные селекты, столь пугающие аффтара. И опять же использовпать prepared statements.
    Ответ написан
    Комментировать
  • Как сделать определение города пользователя?

    @2vtlk
    Почему никто не говорит, что в чисто статике это не сделать? Необходим любой серверный язык для определения ip пользователя. И потом запрос в API любого гео-сервиса, который возвращает город.
    Ответ написан
    Комментировать
  • Не могу разобраться с active record. Как получить данные из двух таблиц?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В базе данных у вас заданы связи между таблицами (внешние ключи или foreign keys). Их может и не быть но предположим что они есть. Тогда логично предположить, раз наши объекты в рамках ActiveRecord имеют ту же структуру, у них так же есть ссылки на другие объекты. Обычно их описывают вручную или хотя бы говорят какое поле на какое ссылается.

    Например в случае статей у объекта Article есть поле user (или author, как кто назовет). При обращении к этому полю AR вызывает запрос в базу данных с where id = user_id, получае результат и возвращает объект User связанный с нашим Article-ом.

    Так же данные уже могли быть получены, скажем если выборка статей была сделана с JOIN-ами. Тогда при обращении к полю users оно просто возьмет данные и вернет объект.

    У User же будет пропертя articles и при обращении к ней нам вернется массив всех статей. По той же схеме, с отдельным запросом если данных еще нет.

    В случае с например тегами, у нас прописано что с объектом Tag отношение многие-ко-многим. То есть используется промежуточная таблица. В рамках иерархии объектов эта промежуточная таблица игнорируется, но суть все так же - обращаемся к ствойству - отдаем связанные объекты.
    Ответ написан
    2 комментария
  • Временные таблицы "mysql" что и зачем?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Temporary tables применяются при написании хранимых процедур со сложной логикой, либо при решении других специфических задач, когда в рамках одной сессии необходимо хранить большой объем обработанных данных, не передавая его за пределы sql.
    В общем случае они Вам не нужны.
    Ответ написан
    Комментировать
  • Почему psr-1 говорит использовать такую конструкцию?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Потому что с <? много проблем. Рендринг XML документов (да, бывает и такое), еще какие-нибудь вещи, конфликты и т.д. По этой причине по умолчанию оно выключено в php.ini. И по этой причине в стандарте прописано вообще не использовать оный тег.
    Ответ написан
    Комментировать
  • Удляете ли вы в PHP внимание warning'ам?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    Суть ворнинга в примере Вашем в том, что возможно Вы ожидаете, что в get будут данные, но их может и не быть, или они будут переданы неправильные, тогда вся логика программы пойдет не туда, могут быть ошибки и серьезные последствия, именно поэтому php как бы намекает нам на это. А еще господин @fesor всё правильно сказал.
    Ответ написан
    5 комментариев
  • Удляете ли вы в PHP внимание warning'ам?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    А вы как думаете? Варнинги допустимы, но крайне не желательны. На то они и варнинги, иначе бы просто смысла в них небыло. Есть варнинги показывающие, что были использованы устаревшие средства языка, которых в новой версии уже может и не быть. Или какой-то метод устаревший, и при обновлении библиотек/php ваш код просто сломается.

    Проблемы же "лишнего кода" решаются обертками и слоями абстракций:
    // метод класса Request
    function get($name, $defaultValue = null) {
        if (!isset($_GET[$name])) return $defaultValue;
        return $_GET[$name];
    }
    
    $isAjax = 1 == $request->get('ajax', 0);


    Попробуйте symfony/httpkernel в качестве обертки и уровня обстракции для обработки запросов.
    Ответ написан
    Комментировать
  • Какой размер у файла?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    тот что меньше - физический размер файла. Вот только есть еще такая штука как размер класстера. То есть это минимальная еденица объема, и размер будет всегда кратен размеру класстера. То есть если у вас размер класстера 32кб, то даже если реальный размер файла один байт, он всеравно будет занимать на диске 32 кб.
    Ответ написан
    2 комментария
  • Как ограничить потребление CPU конкретным процессом в Linux?

    sim3x
    @sim3x
    Из встроенных лучшим будет ограничение приоритета процесса
    man nice

    из устанавливаемых можно использовать cpulimit
    www.lifelinux.com/how-to-limit-cpu-usage-per-proce...
    Ответ написан
    1 комментарий
  • Как узнать реальные цены на создание сайта?

    viktorvsk
    @viktorvsk
    А если заказчик пока сам ни в зуб ногой чего там будет в итоге, но цену хочет знать сейчас?

    Не перестает умилять :)

    Если проекты типичные (одностраничники, простенькие интернет-магазины, блоги, форумы...) и тривиальные, то часто можно найти исполнителя, который возьмется сделать заказ за фиксированную сумму, оговоренную сначала. Но надо помнить, что после того, как окончательная цена известна, исполнителя волнует не качество, а способ уложиться в бюджет по времени и ресурсам.

    Совет, которому явно не последует 99% заказчиков: если сами не располагаете большим опытом в управлении веб-проектами, но хотите сделать серьезный продукт (ориентировочно, планируете потратить на все-про-все не менее 5000 $, например), то самый дешевый способ это:
    1) Очень четко уяснить идею. Прописать в уме и на бумаге всевозможные сценарии. Придумать "персонажей" и юзерстори. Поделиться с друзьями и найти первую сотню изъянов, недочетов и не соответствий в задумке.
    2) После того, как идея более-менее оформлена и вы смогли донести ее суть до нескольких человек, нужно попробовать составить "блочное" тз (например, пользователи могут регистрироваться. через соцсети. только контакт и ФБ. Пользователи могут приглашать других пользователей. Пользователь может загрузить 10 картинок. Следующие - платно". Такое ТЗ тоже можно попробовать составить самому и с друзьями.
    3) После этого нужно найти человека, у которого есть более-менее нормальный опыт в разработке или управлении подобных систем и заплатить ему, например, четверть бюджета, что вы хотели вложить изначально, когда искали отклики подешевле на фрилансе, что бы он помог вам грамотно составить функциональное ТЗ.
    4) После этого с функциональным ТЗ нужно определиться со стеком технологий. Тут можно найти разных исполнителей и попросить их аргументировать, какие технологии лучше использовать и почему.
    5) Опросить этих исполнителей о примерном времени, которое может потребоваться на реализацию каждого блока (не функции). Посмотреть, есть ли серьезные различия в оценке в разных командах и стеках.
    6) Самое сложное - из тех, кто дал самые адекватные оценки (скорей всего, совершенно не самые минимальные), выбрать тех, к кому просто больше доверия.
    7) То время в часах, которое они укажут умножить на 2 и ориентироваться на эту сумму (про себя). Так же быть готовым к х3-х5 сумме.
    8) Задачу лучше всего разбить на мелкие независимые этапы, что бы лучше понимать, укладываются ли исполнители в сроки и что б всегда безболезненно для обоих сторон можно было прекратить работу.

    Иначе (если взять тех, кто обещает быстрее, дешевле и готов работать за заранее оговоренную сумму, а не time + materials) будет очередная Сиднейская опера

    Конечно, если бюджет на приложение 500 долларов на приложение, то единственный вариант - найти леприкона с горшком на фрилансе, отдать ему сразу все деньги, и молиться.
    P.S. Средняя цена приложения на западе (среднего, но законченного) - $100 K
    Ответ написан
    2 комментария
  • Кто знает как реализован авто бэкап на Proxmox?

    opium
    @opium
    Просто люблю качественно работать
    rsync tar lzop если про openvz
    ну а так снапшот лвм или qcow контенера
    Ответ написан
    1 комментарий
  • Как заставить фрилансеров постоянно сотрудничать с компанией?

    sim3x
    @sim3x
    Как заставить скупых работодателей писать нормальное ТЗ и выделять бюджеты под это ТЗ?
    Ответ написан
    Комментировать
  • Где взять автокликер в linux?

    Slipeer
    @Slipeer
    Навскидку: xdotool
    И статья на русском с примером использования: habrahabr.ru/post/214779
    Ответ написан
    Комментировать
  • Как в Symfony удобнее всего переключаться между средами?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Собственно...
    / - prod
    /app_dev.php/ - dev


    То есть для dev энвайрмента то что вы видите app_dev.php это как бы нормально. Это же только для дебага.

    Что до статики - не понял о чем вы. Просто вам нужно в Resources это все перенести и позволить asseticу делать за вас это дело.
    Ответ написан
  • Kohana vs Yii vs ...? Какой фреймворк способен максимально эффективно использовать ресурсы сервера?

    @faost
    Вы не о том думаете. Нужно решать поставленную задачу, а не рассуждать "вот когда придет 100500 юзеров..."

    Ищем класс сначала в апликэйшен потом в сустем, потом по подпапкам и т.д.


    Современные php-приложения используют composer и у него есть встроенное решение этой проблемы.

    kohana врядли хороший выбор, берите быстро развивающиеся фреймворки с большим коммьюнити: symfony, laravel, yii 2.
    Ответ написан
    Комментировать
  • Почему одни поля формы в Symfony2 выставляются в required="required" а другие нет?

    pavel_salauyou
    @pavel_salauyou
    Symfony2 & Angular разработчик
    просто в билдере укажите вручную какие поля должны быть обязательными

    $builder
        ->add('phone', 'text', ['required' => true]) // и т.д.
        ->add('first_name')
        ->add('last_name')
        ->add('save', 'submit');
    Ответ написан
    2 комментария
  • Как загрузить файл symfony2?

    @VanbOK
    Symfony2/PHP developer
    Вот тут описано как сделать при помощи Doctrine
    symfony.com/doc/current/cookbook/doctrine/file_upl...
    Ответ написан
    Комментировать
  • Symfony2 - как проверить, является ли объект определенной сущностью?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если у вас класс находится под namespace Entity, то он и должен быть Entity, если это не так, то нужно вынести эти классы из этого неймспейса.

    Entity в контексте Symfony - это обычный класс (не берем в расчет то, что при выборке из базы она оборачивается в proxy). Если вам нужно проверить является ли переменная инстансом класса, то используйте instanceof.

    p.s. хранить UploadedFile в Entity не лучшее решение.
    Ответ написан
    Комментировать
  • Недорогие SSL-сертификаты?

    nochkin
    @nochkin
    У startssl как раз есть сертификат типа *.domain.com, я сам таким пользуюсь. Процесс получения точно такой же.
    Еще у них очень быстрая и адекватная поддержка. Если что-то не получается, то можно у них напрямую спросить. Хотя, получение wildcard сертификата у них прошла без проблем.
    Могу предположить что изначально файл на запрос сертификата (csr) был на конкретный поддомейн и поэтому сертификат соответствовал ему.
    Ответ написан
    8 комментариев
  • Падает сервис MySQL

    fear86
    @fear86
    Developer
    Обычно логи мускула тут /var/log/mysql но где именно они, написано в /etc/mysql/my.conf
    Ответ написан
    Комментировать