• Как безопасно провести выкладку проекта с миграциями?

    @Fortop
    Tech/Team lead
    Для интенсивного изменения структуры большой базы используйте реплики.

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

    @GreatRash
    Можно вычислять чилсо Фибоначчи при помощи формулы Бине.
    Ответ написан
    Комментировать
  • Имеется ли опыт использования Matreshka.js?

    Простой, шустрый. Как матрешка
    Для проектов, где не нужно тащить мастодонтов типа ангуляра. Осваивается за вечер, интуитивно понятный.
    Вполне достоин попасть в копилку разработчика
    Ответ написан
    Комментировать
  • Где взять плагины для работы с ФИАС?

    @LEKAPb
    dadata.ru
    Ответ написан
    Комментировать
  • Где взять плагины для работы с ФИАС?

    @maxyc_webber
    Web-программист
    фиас это база на бэкэнде.
    есть куча готовых решений с работой с базой в пхп.
    остальное автокомплитами
    Ответ написан
    3 комментария
  • PHP Где ошибка в коде?

    Мне кажется не очень хорошая идея решать такую задачу на PHP, на JS было бы уместнее...
    Ответ написан
    Комментировать
  • На чем в 50 лет можно зарабатывать?

    vvpoloskin
    @vvpoloskin
    Инженер связи
    Чисто онлайн много чего можно для заработка найти в любом возрасте. Примеры:

    1) развивать сайты (есть 55-летний знакомый мужик, который этим занимается)
    2) писать статьи (нам про электропроводку пишет электрик 49 лет)
    3) модератор форумов специфичных узкотематических, в чем человек специалист

    Офлайн:

    1) АТС-ки настраивать
    2) Возиться с 1С или макросами к ворду
    3) Принтеры чинить и заправлять
    4) Научиться устанавливать и настраивать всякие сигнализации, системы видеонаблюдения
    Ответ написан
    7 комментариев
  • Как объективно протестировать производительность node.js и PHP в запросах к mysql БД?

    @fattan Автор вопроса
    программист
    Итак. Спасибо за ответы. Я понял в чем дело. Т.к. программирую на node.js аж целых 2 недели, я неверно трактовал результаты. Изменил тест, и вышло вот что:

    var start = new Date();
    
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'root',
      password : '', 
      database : 'epr'
    });
    
    
    for (var i = 0; i < 1000; i++) {
    	connection.query(
    		'SELECT * FROM dreg_document', 
    		function(error, result, fields){
    			
    			var str = '';
    			
    			result.forEach(function(row){
    
    				str += ' ' + row.id + ' ';
    
    			});
    			console.log(str);
    		}
    	);
    }
    
    connection.end();
    
    var end = new Date();
    console.log('node.js %d мс', (end.getTime()-start.getTime()) / 1000);
    	
    client.send('qwerty');


    Если думать по php-шному, после отработки всех запросов, отправляется сообщение клиенту -
    client.send('qwerty');

    Но на деле, сообщение отправляется тогда когда node-server отправит к БД ВСЕ запросы. Затем (! не дожидаясь ответа от БД) сервак отправляет клиенту сообщение. Клиент (браузер) подсчитывает время (вышло, к примеру 2 секунды для 100 000 итераций). А в это время в ноду продолжают поступать ответы от БД. Эти ответы мы видим с помощью
    console.log(str);
    И тут уже получаются совсем другие результаты....

    Далее, изменяем скрипт следующим образом, чтобы подсчитать время выполнения от 1го до последнего асинхронного подключения к БД:
    // начало выполнения скрипта
    var start = new Date();
    // счетчик обращений к БД
    var ConnCountGlobal = 0;
    // Число обращений к БД
    var iLength         = 100;
    
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'root',
      password : '', 
      database : 'epr'
    });
    
    for (var i = 0; i < iLength; i++) {
    	connection.query(
    		'SELECT * FROM dreg_document', 
    		function(error, result, fields){
    			
    			// для последнего запроса вычисляем таймер
    			if (ConnCountGlobal == iLength-1){
    			
    				var dateObj   = new Date();
    				var currTime  = dateObj.getTime();
    			
    				console.log(' node.js - %d мс', (currTime-start.getTime()) / 1000);
    			}
    
    			ConnCountGlobal++;
    		}
    	);
    }
    
    connection.end();


    Результат
    Для 100 итераций 2.5 сек (что в 15 раз медленнее чем на PHP)

    Промежуточный ответ на топик:
    Node.js не быстрее PHP в 150 раз в вопросе доступа к БД.
    Напротив, Node.js в этом плане в 15 раз медленнее чем PHP.
    (это если брать оба сервера "из коробки", без улучшательств и настроек)

    Новый вопрос:
    Верен ли мой последний тест? Или я в нём тоже что-то не так сделал?
    Ответ написан
    9 комментариев
  • Имеется ли опыт использования Matreshka.js?

    Finom
    @Finom
    Сразу скажу, я очень предвзят, так как являюсь старшим автором Матрешки и автором балалайки.

    Не буду воспевать дифирамбы, просто кратко расскажу, в чем смысл Матрешки.
    1. Классическое наследование основанное на классах используется уже очень давно и очень многими программистами. В интернете вы можете найти тысячи реализаций функции Class. Здесь просто не может быть никаких подводных камней.
    2. Двустороннее связывание - достаточно простая штука. Я приводил в комментарии к одной из статей, как это работает. Очень маловероятно, что вы столкнетесь с какими-нибудь проблемами. По поводу байндинга, основанного на CSS селекторах: можно передавать DOM узел, jQuery коллекцию, HTML код и прочее. Соль в том, что вы получаете ноды в JS коде, а не наоборот (данные в HTML коде).
    3. Прослушивание событий изменения свойства тоже вещь не сложная. На свойство просто навешивается акцессор (сеттер), который вызывает обработчики.
    4. MK.Object - это тот же ООП класс, который просто разделяет данные от не-данных. И, кстати, может содержать совершенно произвольную структуру данных, как и MK.Array.
    5. MK.Array - это коллекция с достаточно простым API и автоматическим рендерингом. При вызове какого-нибудь метода, класс смотрит, какой именно метод вызван и запускает оптимизированный механизм рендеринга. Т. е. при использовании метода push, вставляется новый узел в конец контейнера, не перерисовывая всю коллекцию заново.

    Какие есть подводные камни, на мой взгляд:
    Многоуровневые делегированные события могут запутать. Например, событие "a@@change:x" (в свойстве "a" содержится коллекция коллекций, в последней содержутся модели, изменения свойства "x" которых, мы слушаем) заставляет напрячь извилины, поэтому их использование не рекомендуемо.

    Многие программисты очень сильно мудрят с использованием привязок, вставляя в setValue и getValue сложные манипуляции с DOM и ajax запросы. Этого делать не рекомендуется, так как DOM - штука медленная, сложные манипуляции могут отразиться на производительности, а ajax запросы вовсе асинхронны (синхронные запросы будут убраны из вебкита в скором). Привязки должны быть максимально простыми.

    По поводу Балалайки даже не знаю, что сказать. Это просто очередная jQuery-like либа с очень небольшим набором методов. Единственный подводный камень - это то, что там нет привычных возможностей, их прийдется дописывать самостоятельно. Если не хочется, возьмите Зепто, например.
    Ответ написан
    2 комментария
  • Где хранить "кусочки" кода?

    voidnugget
    @voidnugget
    Программист-прагматик
    В github gist'ах
    Ответ написан
    Комментировать
  • Как начать работать на западном фрилансе?

    @SaertiS
    Да по моему это уже раз %цать описывалось, поиском пройдитесь.
    Ответ написан
    Комментировать
  • Имеется ли опыт использования Matreshka.js?

    Из "камней" когда глядел документацию не увидел как можно создать модель MK.Object содержащую MK.Array с сериализаций в/из JSON, MK.Array содержащий другой MK.Array вроде как можно, но это не решает проблемы когда объект содержит два и более массива связанных записей, что имхо является вполне нормальной моделью.

    Идея биндинга на CSS селекторах слегка коробит т.к. модель будет зависеть от вида.

    Будет, небольшой проект может и попробую, а пока knockout :)
    Ответ написан
    Комментировать
  • Имеется ли опыт использования Matreshka.js?

    @NETChaser
    По причине того что проект ещё "молод" использовать бы не стал. Обязательно наткнетесь на грабли, которые в других фреймворках уже скорее всего решены. Совместимость кода, наличие готового кода могут затянуть проект. И человек который будет доделывать/переделывать ваш код скорее всего не знает Matreshka.js.
    Ответ написан
    Комментировать
  • Как запретить установку пакета в Ubuntu?

    Melkij
    @Melkij
    PostgreSQL DBA
    Положите в /etc/apt/preferences.d/(любое имя, например имя этого пакета) файлик с содержанием
    Package: (имя пакета)
    Pin: origin ""
    Pin-Priority: -1
    Ответ написан
    2 комментария
  • Выбрать записи которым год - MySQL?

    sofcase
    @sofcase
    Веб-разработчик
    Уточните детальней вопрос.

    select * from table where datelast = '2014-04-09'
    Ответ написан
    2 комментария
  • Как правильно оценивать стоимость своей работы?

    vaux
    @vaux
    Курящий лыжник
    Вы называете ту сумму, за которую вам было бы комфортно работать над определенной задачей. Заказчика не устраивает? Это его проблемы. Вы не должны работать себе в убыток только из-за того, что кто-то решил на вас сэкономить. На счет страха. Попробуйте как-нибудь назвать неадекватно большую сумму (по вашим меркам). Вы удивитесь, но есть люди, которые готовы платить большие деньги, лишь бы работа была сделана качественно и в срок.
    Ответ написан
    Комментировать
  • Прочитал книгу по PHP, что дальше?

    SowingSadness
    @SowingSadness
    web-разработчик
    Стругацких, Пикник на обочине
    Ответ написан
    2 комментария
  • Прочитал книгу по PHP, что дальше?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    Мэт зандстра "Объекты, шаблоны и методики программирования"
    Ответ написан
    Комментировать