Задать вопрос
  • PHP-CGI 100% CPU?

    BuriK666
    @BuriK666
    Компьютерный псих
    поставьте xdebug и посмотрите что происходит в самом скрипте
    Ответ написан
    Комментировать
  • Скорость работы PHP в Windows. Отчего так медленно?

    taliban
    @taliban
    php программист
    file_exists — это самое слабое звено + сумма всех инклудов. В винде на порядок медленней идет доступ к файловой системе. Отчасти из-за этого производительность стдрадает, если убрать все куски кода которые хоть каким-то образом касаются файловой системы, то скорость будет уступать линуксу незначительно (один файл с алгоритмом каким-то). И пока такая ситуация есть придется мириться.
    Ответ написан
    Комментировать
  • JQuery parents().get(2) против parent().parent().parent()?

    Smileek
    @Smileek
    Спасибо, веселенькая задачка получилась.:)
    Тестим вот на этом:
    <div id="i1"><div id="i2"><div id="i3"><div id="i4"></div></div></div></div>
    <div id="info"></div>

    Вот так:
    var x, dt, dt2;
    var iter = 100000;
    dt = new Date();
    for (var i = 0; i < iter; i++)
    {
        x = $("#i4").parent().parent();
    }
    dt2 = new Date();
    $("#info").text(dt2 - dt);
    				
    dt = new Date();
    for (var i = 0; i < iter; i++)
    {
        x = $("#i4").parents().get(2);
    }
    dt2 = new Date();
    $("#info").text($("#info").text() + ":" + (dt2 - dt));
    

    На заданном примере выигрывает parents().get(2). 3398:2910
    Далее делаем 12 вложенных элементов и прогоняем пример из комментария — пять parent()-ов против parents().get(5): с огромным перевесом выигрывает get(5) — 5374:3954.
    А вот get(3) проигрывает parent().parent().parent() — 3406:3880.

    Получается, что выбрать все 12 элементов и в них найти третий, дольше, чем три раза прыгнуть вверх по дереву.

    Наконец, вернемся к первому варианту с четырьмя элементами, и попробуем воспользоваться полученным родителем.
    var x, dt, dt2;
    var iter = 10000; /* <-- В 10 раз уменьшим, а то зависнем */
    dt = new Date();
    for (var i = 0; i < iter; i++)
    {
       $("#i4").text($("#i4").parent().parent().attr("id")); /* <-- Запишем id родителя в текст потомка */
    }
    dt2 = new Date();
    $("#info").text(dt2 - dt);
    				
    dt = new Date();
    for (var i = 0; i < iter; i++)
    {
       $("#i4").text($("#i4").parents().get(2).attr("id"));  /* <-- Попробуем сделать то же самое */
    }
    dt2 = new Date();
    $("#info").text($("#info").text() + " " + (dt2 - dt));
    

    И вот тут нас ждет сюрприз: $("#i4").parents().get(2).attr is not a function
    arr.get(i), по сути, то же, что и arr[i], то есть мы получим просто Object.
    Для того, чтобы воспользоваться jQuery-функциями, придется обернуть его в денежный знак:
    $("#i4").text( $( $("#i4").parents().get(2) ).attr(«id»));
    От этого мы и потеряем в производительности: 2665:2973.

    Мораль:
    1) Всегда найдутся варианты использования, которые лучше для одного варианта и хуже для другого.
    2) Эффект от производительности или ее потери будет только на больших числах — в самом первом примере мы выиграли 0,4 секунды за 100000 (!) итераций.
    3) Поэтому поступайте, как велит эстет внутри Вас: мне, скорее всего, в реальном примере было бы удобнее получить jQuery-объект и дважды воспользоваться parent()-ом. С другой стороны, восемь раз я бы писать parent() не стал: религия не позволяет.
    Ответ написан
    2 комментария
  • Nginx redirect from http to https?

    @ilnarb
    а если так?
    server {
      listen *:80;
      server_name example.com;
      proxy_set_header Host example.com;
      location / {
        rewrite ^(.*)$ https://example.com$1 permanent;
      }
    }
    server {
      listen *:443 ssl;
      server_name example.com;
      proxy_set_header Host example.com;
      location / {
        proxy_pass http://127.0.0.1:8080;
      }
    }
    Ответ написан
    Комментировать
  • Что должен знать и делать ведущий разработчик?

    Bambr
    @Bambr
    Вообще все сильно зависит от компании. Как уже на днях писали, то что человек работал тимлидом в мелкой конторе, не обязательно дает ему достаточные навыки, чтобы претендовать на более простую должность ведущего разработчика в каком-нибудь майкрософте — требования могут быть совершенно разные. Вообще про тимлидов выше уже много написали. Предположим, что у нас иерархия длиннее — не «тимлид -> программер», а например «тимлид -> ведущий программер -> программер -> стажер».
    1) С тимлидом все более менее понятно, этот человек в идеале должен обладать навыками менеджера, архитектора, быть техническим экспертом в своей области и авторитетным членом команды. При этом не должен забывать, что он — часть команды, а не главный чувак с подаванами. Этот человек принимает много решений (как самостоятельно, так и принимая мнения/идеи других людей), несет ответственность за команду перед руководством и ответственность перед командой за все происходящее.
    2) ведущий — как правило опытный разработчик. Должен уметь самостоятельно принимать решение о способе реализации задачи и думать о последствиях выбора того или иного решения. Четко знает, чем хороший код отличается от плохого, умеет оценивать скорость выполнения кода и потребляемые им ресурсы (типа «этот код вчетверо быстрее вон того, но жрет вдвое больше памяти и увеличивает нагрузку на базу»)
    3) программист/кодер — человек, способный самостоятельно закодировать четко описанную задачу (написать функцию с таким-то интерфейсом, которая будет решать такую-то задачу, и прикрутить ее вон туда). Если задача описана недостаточно конкрентно — есть шанс получить херовое решение. С другой стороны, неконкретности в постановке задачи — один из способов заставить кодера думать.
    4) стажер — человек, которому для решения даже достаточно четко очерченной несложной задачи потребуется внимание и советы старших. Тут важно отличать идиота и человека без опыта, внимание будет требоваться обоим, но «правильным» стажером является именно второй вариант :)
    Ответ написан
    2 комментария
  • Что должен знать и делать ведущий разработчик?

    — Во-первых, он должен уметь аккуратно и вежливо говорить, обязательно, взвешивая каждое слово. Тоже самое в отношении его письменности. Это качество необходимо, как для общения с подчинёнными, так и с начальством и клиентами. Как не смешно, незнание русского языка плохо складывается на бизнесе.

    — Во-вторых, он должен уметь организовать работу людей. Это качество личности изначально заложенное у порядка 10% людей, у остальных оно вырабатываться с опытом.

    — В-третьих, он должен понимать систему, в которой он работает. Это касается и среды программирования, и области приложения. Например, ведущий программист АБС должен знать не только язык программирования для АБС, но и бухучёт кредитных организаций.

    Эти три качества отличают хорошего ведущего программиста от плохого.
    Ответ написан
    2 комментария
  • Переход с hg на git?

    @faust0
    Мы использовали hg-fast-export: hedonismbot.wordpress.com/2008/10/16/hg-fast-export-convert-mercurial-repositories-to-git-repositories/
    + возможно понадобится изменить емейлы авторов, тогда в помощь git filter-branch.
    Плюсы использования hg-fast-export в скорости. Это самый быстрый и надежный способ.
    Касательно второго пункта ничего не подскажу.
    Ответ написан
    2 комментария