• set_time_limit не работает, скрипт отрабатывает бесконечно долго

    @edogs
    Скрипт именно работает бесконечно долго?
    Потому что
    Функция set_time_limit() и директива max_execution_time влияют на время выполнения только самого скрипта. Время затраченное на различные действия вне скрипта, такие как системные вызовы функции system(), потоковые операции, запросы к базам данных и т.п. не включаются в расчет времени выполнения скрипта.

    То есть если допустим у Вас граббер где 50 секунд file_get_contents отрабатывает, а потом 30 секунд запрос в базу идет и еще sleep-ом догоняетесь к примеру секунд на 40, то все эти 50-30-40 не в счет.

    И еще на всякий случай. set_time_limit Вы же один раз выполняете? Просто если он случайно в цикл попал и выполняется на каждой итерации, то эти выставляемые 10 секунд они отсчитываются с момента задания значения set_time_limit_ом
    Ответ написан
    1 комментарий
  • Лучший монитор для разработки (+ ноутбук)

    xel
    @xel
    front end developer
    Уже полтора года использую для веб-разработки Dell 2412M. Очень нравится что соотношение сторон 16:10 — эти 120 пикселей высоты ещё никогда не были лишними.
    Ноутбук почти всё время разработки находится в закрытом состоянии.
    Только на отдельных стадиях проекта — как то вёрстка или тестирование задействую дисплей ноутбука.

    Звук выведен на колонки совместимые с этой моделью монитора. (есть разъём питания)
    Для управления использую беспроводные logitech клаву и мышь, ресивер которых воткнут в хаб монитора.

    Собственно подключение ноутбука после поездки занимает секунд 15 — usb, звук, питание, hdmi. Ноут с SSD примерно за это же время успевает загрузится.
    Была идея купить 27-дюймовый монитор с 2560 точками по горизонтали, но многие приглянувшиеся модели не имеют hdmi входа (
    DisplayPort на моём ноутбуке непредусмотрен, а через переходник hdmi-dvi (как у меня подключен 2412M) разрешение выше 1920х1200 увы, недостижимо. Учитывайте этот нюанс.

    По поводу матрицы: разработка — не игры и не фильмы. И время отклика не так критично ;-) Для меня было важно отсутствие бликов — поэтому никакого глянца.
    Благо сейчас производители уже не заваливают рынок сплошным глянцем, и есть из чего выбрать.
    Ответ написан
  • Количество аргументов в методах. ООП?

    nazarpc
    @nazarpc
    Open Source enthusiast
    В большинстве — да, но есть методы, которые принимают 4-5 аргументов, и я не вижу в этом ничего плохого.
    Все подобные правила — на самом деле рекомендации, которым нельзя следовать отключая собственную логику и здравый смысл.
    Ответ написан
    Комментировать
  • Система управления проектами или «как хранить выполненную работу»?

    AgentSIB
    @AgentSIB
    Я сам попробовал много разных способов, даже в свое время покупал лицензию Jira + Stash. Требовалось хранилище репозиториев, вики для документации и что то issue-трекера. Остановился на gitlab. Очень классный инструмент. Есть простенький issue трекер, вики как на гитхабе (git), стена (что то вроде чата между разработчиками). Когда нужно работать в команде — открываю доступ к тому или иному репу. Права доступа настаиваются. Тоже параноик, поэтому настроил через https.
    Можете юзать на виртуалке, если не хотите удаленно. Переноситься все очень просто — возможность делать бекапы и восстанавливаться заложена в движке. Все остальное, что вы описали присутствует.

    Оф. сайт: gitlab.org/
    Демо: demo.gitlab.com/users/sign_in
    Бесплатный хостинг (можете попробовать с тестовым проектом поиграться): gitlab.com/users/sign_in
    Ответ написан
    1 комментарий
  • Какие android-планшеты закупить для разработки и тестирования игры?

    @Chii
    *nexus*
    Ответ написан
    Комментировать
  • Есть ли ресурсы по здоровью айтишников?

    @Solovej
    Я не я, есть я, при этом всегда им являюсь.
    http://www.persfit.com/ — Тут есть упражнения и показано как их выполнять.
    Ответ написан
    Комментировать
  • Есть ли ресурсы по здоровью айтишников?

    Vurtatoo
    @Vurtatoo
    Lead Software developer
    Именно для айтишников — не знаю. Айтишники разные бывают. Очень разные.
    Недавно решил заняться собой, начал бегать, ходить в зал и т.д… Быстро понял, что не могу делать что-то без полного понимания всех процессов и оптимального выполнения. Гуглил, много гуглил. Переработал в корне питание в итоге, разработал себе программу тренировок (как силовые так и кардио — бег). В общем вот хорошие, на мой взгляд, ресурсы:
    fitseven.ru/ — насколько я понял очень популярный ресурс, информация в виде статей.
    www.fitness96.ru/ — отличная энциклопедия упражнений, есть сортировка по группам мышц. Самое то для составления своей программы.
    sportswiki.ru/ — ОЧЕНЬ много информации, причем не виде статей (как на фитсевен), а именно в виде вики статей. Зачастую по каждому вопросу есть несколько альтернативных мнений, так что можно верить/не верить на свой вкус. Пожалуй самый полезный ресурс по силовому тренингу. Ресурс подается как энциклопедия бодибилдинга, но помимо этого там куча другой полезной информации.
    www.youtube.com/yougiftedrussia — Очень хороший канал на ютуб. Многие упражнения, особенно базовые, начать делать довольно сложно (правильно делать), там практически по любому можно найти хороший мануал. Не раз использовал.
    Ответ написан
    2 комментария
  • Обработка событий из встраимого в станицу HTML кода

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Вы пытаетесь привязать событие к эллементу, которого еще нету на странице. Варианта 2:
    1) использовать делегаты
    $('#container').on('click', '#start', callback);
    

    2) навешивать событие после вставки элемента в DOM (в success калбэке). Но это как по мне моветон.

    Результат должен выглядеть как-то так:
    $(function () {
        var $container = $('#container');
        $.post('/ajax/test', {}, function (data) {
            $container.html(twig({ ref: «begin_test» }).render(data));
        });
    
        $container.on('click', '#start', clickCallback);
    });
    
    Ответ написан
    1 комментарий
  • Сервис по массовому созданию картинок

    @Efsi
    Есть 100 ресторанов, я поем во всех, а заплачу только за самое вкусное блюдо.
    Поеду в 10 разных путешествий, оплачу самое понравившееся.
    Трахну 3 шлюхи, заплачу самой старательной.

    Умные вы все такие.
    Ответ написан
    1 комментарий
  • Сервис по массовому созданию картинок

    @Chii
    Все дизайнеры сервиса, которым интересен мой заказ могут его выполнять. А я буду оплачивать, только те которые мне нравятся.

    В цивилизованных странах так дела не делаются =(
    Ответ написан
    Комментировать
  • Как стать тренером

    IvanFF
    @IvanFF
    Как зеленый может учить других зеленых стать красным?
    Ответ написан
    1 комментарий
  • border-collapse: separate или как побороть двойную линию между ячейками?

    Stdit
    @Stdit
    jsfiddle.net/6AHnH/1/
    В хроме и фф работает, в ие проверить пока не могу, но точно не будет работать в ие6.
    Ответ написан
    1 комментарий
  • Битовое отрицание в JS

    Weageoo
    @Weageoo
    Всё просто: побитовые операторы в js работают только со знаковыми (signed) целыми (integer) длиной в 32 бита (оператор >>> работает с unsigned). Иными словами, побитовые операторы интерпретируют операнды как последовательность из 32 битов.

    Т.о., при выполнении ~3 число 3 представляется в виде 0000 0000 0000 0000 0000 0000 0000 0011, результат, понятное дело 1111 1111 1111 1111 1111 1111 1111 1100 — это -4. Если крайний левый (знаковый) бит равен 0 — число положительное, если равен 1 — число отрицательное. Максимальное знаковое целое, которое уместится в 32 бита — это 0111 1111 1111 1111 1111 1111 1111 1111, или 2147483647 (по основанию 10). Минимальное 32-bit signed integer — это 1000 0000 0000 0000 0000 0000 0000 0000, или -2147483648.

    2147483647   0111 1111 1111 1111 1111 1111 1111 1111
    100          0000 0000 0000 0000 0000 0000 0110 0100
    5            0000 0000 0000 0000 0000 0000 0000 0101
    4            0000 0000 0000 0000 0000 0000 0000 0100
    3            0000 0000 0000 0000 0000 0000 0000 0011
    2            0000 0000 0000 0000 0000 0000 0000 0010
    1            0000 0000 0000 0000 0000 0000 0000 0001
    0            0000 0000 0000 0000 0000 0000 0000 0000
    -1           1111 1111 1111 1111 1111 1111 1111 1111
    -2           1111 1111 1111 1111 1111 1111 1111 1110
    -3           1111 1111 1111 1111 1111 1111 1111 1101
    -4           1111 1111 1111 1111 1111 1111 1111 1100
    -5           1111 1111 1111 1111 1111 1111 1111 1011
    -100         1111 1111 1111 1111 1111 1111 1001 1011
    -2147483648  1000 0000 0000 0000 0000 0000 0000 0000
    

    ~~3.14 // 3

    Шаг 1: число приводится к целому и представляется в виде последовательности 0000 0000 0000 0000 0000 0000 0000 0011.
    Шаг 2: производится сама побитовая замена 0->1 и 1->0. Получаем 1111 1111 1111 1111 1111 1111 1111 1100, или -4 (по осн. 10).
    Шаг 3: производится ~(-4), то бишь получим в итоге 3.

    Ну, с нулем всё понятно думаю.
    Ответ написан
    1 комментарий
  • отправка множества запросов по крону

    Deshene
    @Deshene
    В свете того, что проект переписывается на Ruby, я бы посоветовал Вам обратить внимание на Resque. Также есть альтернатива в виде Sidekiq, которая может обеспечить более качественный уровень параллелизма за счет реального fork'a, так что начать я бы предложил все же с него.

    Помимо предложенных выше решений, которые более специфичны для Ruby, можно использовать другой подход: поставить, например, RabbitMQ — это брокер сообщений, написанный на Erlang. Схема работы с RabbitMQ, упрощенно, следующая:
    есть очереди, находящиеся под контролем RabbitMQ; в эти очереди разные процессы могут записывать сообщения (например, по крону, запустили скрипт, который определил фронт работ, и разослал сообщения о работах по очередям); есть процессы, которые «слушают» определенную очередь, и когда в очередь поступает новое сообщение RabbitMQ выбирает один слушающий процесс и передает ему это сообщение (т.е. распределением сообщений в очереди по процессам занимается RabbitMQ).
    Ответ написан
    3 комментария
  • MySQL запрос из двух таблиц

    seriyPS
    @seriyPS
    Надеюсь эту картинку вы знаете?



    Допустим, таблица A это SELECT * FROM games, а таблица B это SELECT * FROM uploaded_games WHERE user_id = ?.

    Т.е. вам нужно из таблицы A вычесть таблицу B (в терминах теории множеств). На картинке это левый столбец, второй сверху.

    SELECT *
    FROM games as A
    LEFT JOIN uploaded_games as B ON (A.game_id = B.game_id)
    WHERE B.game_id is NULL AND B.user_id = ?
    


    Можно записать более наглядно, но, скорее всего, MySQL его не соптимизирует эффективно

    SELECT *
    FROM games
    WHERE game_id NOT IN (
      SELECT game_id FROM uploaded_games WHERE user_id = ?
    )
    
    Ответ написан
    Комментировать
  • MySQL запрос из двух таблиц

    @bizon
    SELECT * FROM games
    LEFT OUTER JOIN uploaded_games
    ON games.id = uploaded_games.game_id where uploaded_games.id is null
    Ответ написан
    2 комментария
  • Чехол-сумка 8'' с креплением под брючной ремень

    IvanFF
    @IvanFF
    Зимой и летом — нет проблем.
    Ответ написан
    Комментировать