• На сколько ресурса затратно операция получения даты - микросекунд с 1970 в современных языках?

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

    В Linux существуют несколько таймеров в ядре: высокого/обычного разрешения и переводимые/непереводимые назад, но получение времени происходит через одну функцию clock_gettime как бы по-разному это не выглядело в разных ЯВУ.

    В Windows стандартные механизмы GetSystemTime и GetTickCount выдают время только с миллисекундной точностью. А таймер высокого разрешения QueryPerformanceCounter предназначен только для измерения временных интервалов, его абсолютное значение не имеет смысла.

    Историческая справка: В реальном режиме работы x86 до тех пор, пока BIOS владеет аппаратным прерыванием таймера и таймер настроен по умолчанию (его еще можно перенастраивать), то есть с интервалом в 55ms и частотой в 18.2 герц, на каждый тик таймера инкрементируется четырехбайтное значение по абсолютному адресу 0:046C. Так что пользовательская программа (термин процесс тут не совсем применим) может получить значение времени мгновенно простым считыванием этого значения из памяти без каких-либо вызовов.
    Стоит отметить, что данный функционал не имеет никакого отношения к DOS или какой-либо ОС вообще, а прошит в BIOS любого x86-совместимого (даже современного) компьютера и действителен каждый раз при загрузке машины вплоть до момента перевода процессора в защищенный режим в момент загрузки ядра современной ОС.
    Ответ написан
    Комментировать
  • Как организовать категории с неограниченой вложеностью?

    @dev400
    nested sets
    Ответ написан
    Комментировать
  • Как деплоить сайт на битриксе?

    Можно так https://www.olegpro.ru/post/prostoy_deploy_saytov_... (сайт должен быть под системой контроля версий git)
    Ответ написан
    Комментировать
  • Как узнать diff между файлами в git и измененными копиями этих файлов?

    "Скопирован" понятие растяжимое. Если вы просто физически скопировали директорию файла, то создайте в нем новый бранч "oldsite" и подключите в виде ориджина к єтому бранчу папку старого сайта. После єтго вы можете сравнить два бранча.
    Если вы склонировали старый сайт командой git clone то просто сравните два бранча ну или банч и его ориджин если вы по глупости не додумались сделать новый бранч
    Ответ написан
    Комментировать
  • Как обновить php на VDS до 7.0?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    Причина 1: Не перезагрузили сервер.
    Причина 2: В конфиге конкретного сайта осталось 5.5.
    Было у меня такое на ISP, вторым способом решилось.
    Версия php была выбрана вручную, так и осталась 5.5.
    Ответ написан
    4 комментария
  • Vagrant тунель порта из хост машины в гостевую машину?

    vladchernik
    @vladchernik
    system analyst | developer
    Проброс портов необходимо настраивать в Vagrantfile.
    Например, config.vm.network "forwarded_port", guest: 3000, host: 3000
    После внесения изменений не забудьте выполнить vagrant reload

    Больше -- https://www.vagrantup.com/docs/getting-started/net...
    Ответ написан
    1 комментарий
  • Meteor.js расцветает или чахнет?

    PQR
    @PQR
    Не согласен с предыдущим оратором (@geeek), в частности с утверждением
    В общем если хочешь быть в тренде - бери
    - Meteor совсем не в тренде.

    Если дать краткий и резкий ответ на вопрос "расцветает или чахнет?" - отвечу: интерес к Meteor чахнет, не смотря на все усилия команды разработки.

    Компания MDG (Meteor Development Group) подняла $31M инвестиций (https://www.crunchbase.com/organization/meteor) и хотела всё сделать круто, стать мейнстримом, а потом зарабатывать на хостинге Meteor проектов - такой план монетизации. Хостинг они, кстати, сделали. И в какой-то момент было много хайпа вокруг Meteor, казалось, что всё идёт по плану. Полтора года назад вышел Meteor 1.0 (октябрь 2014), потом была пара хороших релизов, которые убрали всю "сырость": Meteor 1.1 и 1.2.

    Но в середине 2015 стало понятно, что никаким мейнстримом они не стали, мейнстрим нынче React!
    Не смотря на простоту старта и скорость разработки с Meteor, были очевидны следующие минусы:

    1. Собственная система пакетов со своим центральным репозиторием https://atmospherejs.com - посмотрите на счётчики скачивания пакетов, это крохи по сравнению с npm. Посмотрите на активность разработки основных пакетов - всё очень тухленько.

    2. Собственная система сборки. С одной стороны всё работает из коробки, с другой стороны в неё не вклинишься (это сложно). Плюс всякие странные условности, что всё в глобальном пространстве имён и ваши js файлы загружаются в алфавитном порядке. В Meteor 1.3 частично решили проблему, ходят слухи, что в будущем будут использовать webpack.

    3. Собственный шаблонизатор blaze (похож на handlebars). В начале blaze выглядел хорошо, но теперь все внезапно пишут на React и многие потирают руки в ожидании Angular 2, в итоге blaze оказался ещё один велосипедом, с которым не понятно что делать.

    4. На бекенде всё ещё Node 0.10. Даже с Node 0.12 Meteor уже не работает из-за некоторых бинарных зависимостей! Обещали в будущих версиях обновиться с поддержкой Node 4.

    5. Метеор сильно завязан на MongoDb. Чтобы реактивно доставлять новые/изменившиеся данные от сервера в бразуер они парсят логи Mongo. Были попытки сделать аналогичное для SQL баз, но не увенчались успехом. В итоге встречайте их новый проект Apollo, который поверх GraphQL и не привязан к конкретной реализации бекенда www.apollostack.com А что теперь будет со старым добрым DDP?

    6. Ваше Meteor приложение одной командой можно упаковать в мобильное приложение Cordova - выглядит круто, но сейчас время ReactNative и вот мы читаем обсуждения на форумах, что возможно, они таки интегрируются с ReactNative, но когда?

    Подводя итог: ребята из MDG подняли кучу денег и хотели сделать всё сами: свои пакеты, свою сборку, свой шаблонизатор, свой реактивный протокол (DDP) и чтобы всё работало из коробки. И они сделали это!

    Только это оказалось никому не нужно, т.к. для пакетов все сидят на npm, сборка должна быть гибкой (и поэтому у нас есть gulp и webpack), самый модный шаблонизатор нынче - это React, реактивный протокол GraphQL и базы на сервере люди любят разные, а не только MongoDb. А Meteor, по сути, остался на обочине всей экосистемы и движухи вокруг JavaScript. Поняв это, MDG начали двигаться в сторону JS комьюнити и первый шаг сделан: Meteor 1.3 поддерживает нормальные модули ES2015, npm пакеты, рендринг через React и Angular. Но Meteor 1.3 - это куча костылей поверх старого велосипедного Meteor. Почитайте их планы на будущее в официальном блоге, хотя бы в этом посте: info.meteor.com/blog/announcing-meteor-1.3 - им по сути предстоит переписать всё заново! И первые ласточки такого "переписывания" - это выделение проекта Apollo.

    Возможно, со второй попытки они всё сделают правильно и Meteor 2.0 действительно выстрелит. Если только у них деньги не закончатся раньше.

    Сейчас можно взять Meteor и эффективно зарабатывать на маленьких/средних фриланс проектах, когда нужно сделать быстро и не думать о долгосрочной поддержке.
    Если же вы делаете большой продукт, то вас ждут большие потрясения и изменения в экосистеме Meteor.
    Ответ написан
    4 комментария
  • Как называется эффект фиксирования страницы при прокрутке?

    alsopub
    @alsopub
    Ну и до кучи - www.scrolleffects.com
    В частности - www.scrolleffects.com/edge-animation.html
    Ответ написан
    Комментировать
  • Как называется эффект фиксирования страницы при прокрутке?

    Raxen
    @Raxen
    Lead Frontend Developer, Beeline
    Такие штуки можно реализовать при помощи этой библиотечки scrollmagic.io
    Ответ написан
    1 комментарий
  • Кто может поделиться схемой БД для хранения товаров с вариациями?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Гуглите Entity-Attribute-Value.

    А еще есть другой координальный ход - откажитесь от mysql и используйте mongodb для хранения каталога товаров.
    Ответ написан
    7 комментариев
  • Как запретить повторную отправку запроса во время выполнения первого?

    Шлите запрос AJAX, пока не будет получен ответ с положительным статусом - блокируйте кнопку отправки. Если получена ошибка - аналогично, разблокируйте кнопку и позвольте еще раз отправить данные.
    Ответ написан
    2 комментария
  • Какие есть программы для тестирования адаптивной верстки?

    gatilin222
    @gatilin222
    Frontend-разработчик
    Можно тестировать верстку с помощью BackstopJS. Как это делать я описал в статье
    Ответ написан
    Комментировать
  • Как подгружать картинки только в то время, когда они в зоне видимости?

    sniffer
    @sniffer
    front-end developer
    // Универсальная функция для проверки расположения объекта в "области видимости"
    $.fn.onViewPort = function(){
       var viewport = {};
       viewport.top = $(window).scrollTop();
       viewport.bottom = viewport.top + $(window).height();
       var bounds = {};
       bounds.top = this.offset().top;
       bounds.bottom = bounds.top + this.outerHeight();
       return ((bounds.top <= viewport.bottom) && (bounds.bottom >= viewport.top));
    };
    
    // Используем после загрузки DOM
    $(function() {
       // Инициализируем объект, который хотим отслеживать
       var $vTarget = $('.view-target');
      // Проверяем при скролле страницы
       $(window).scroll(function() {
          if($vTarget.onViewPort()) {
             console.log('Объект в области видимости');
          }
       });
    });
    Ответ написан
    Комментировать
  • Как подгружать картинки только в то время, когда они в зоне видимости?

    serjikz
    @serjikz
    web-developer
    Для отображения при нахождении в зоне видимости можно использовать viewportchecker.js НО тут js будет мало, так как на озоне выводится ещё и несколько товаров во время того, как человек достиг определенного момента на странице, а это осуществляется с помощью ajax и php в стороннем файле, который вытягивает необходимые товары из базы данных а это всё делается вот таким образом: roothelp.ru/lessons/ajax_podzagruzka_kontenta_pri_...
    Ответ написан
    Комментировать
  • Где найти нормальный курс по Yii2?

    Chvalov
    @Chvalov
    — Книга "Разработка веб-приложений в Yii 2" Марка Сафронова - более глубокое описание возможностей и устройства фреймворка Yii2. Для тех, кто уже в теме. Язык - русский.

    Официальное руководство по Yii2 от разработчиков. Формат PDF, размер порядка 2 МБ

    Забугорный но полезный блог

    Кто что еще может добавить полезного ???
    Ответ написан
    Комментировать
  • Как обновить часть страницы?

    @IceJOKER
    Web/Android developer
    Самый простой способ - это выдавать код корзины по какому-то запросу и просто заменить старую корзину , новой.

    $.get('/get-cart.html', function(data){
    
     $('.my-cart').replaceWith(data); 
    
    });


    А вариант с json - после добавления товара получаете список товаров в формате json и в цикле добавляете товары
    Ответ написан
    1 комментарий
  • Как решить проблему с лимитом времени при парсинге большого XML файла?

    e_svirsky
    @e_svirsky
    Web Developer
    Как вариант можно зачитать сначала XML, потом конвертнуть его в массив. и сохранить, потом например slice-нуть массив на 5 частей, и итерациями это всё обработать. Т.е. будет 2 воркера: один конвертит файл в массив, второй обрабатывает массивы и кладёт их в БД. Это позволяет парсить достаточно большие файлы, но если файл оооочень большой (не влазит в оперативку), тогда вот тут описано неплохое решение:
    stackoverflow.com/questions/911663/parsing-huge-xm...
    Ответ написан
    Комментировать
  • Как решить проблему с лимитом времени при парсинге большого XML файла?

    alex1442
    @alex1442
    Вынести этот процесс вы отдельный демон,а за вебзапрос только добавлять информацию о предстоящей задаче
    Ответ написан
    1 комментарий