Задать вопрос
Программист, web-разработчик.

Достижения

Все достижения (6)

Наибольший вклад в теги

Все теги (34)

Лучшие ответы пользователя

Все ответы (20)
  • Возможна ли работа с tray (системный трей) средствами JavaFX 8?

    @fattan Автор вопроса
    программист
    Сам спросил, сам ответил:
    Перелопатив кучу англоязычной мукулатуры:

    1. есть ль альтернатива AWT-шным средствам работы с треем в Java 8?
    Да. Через пень-колоду-нативные методы (обращающиеся к вызовам ОС). Как, я понял, копать нужно в сторону SWT и иже с ними. Да так что проще заюзать AWT (для моей задачи)

    2. можно ли средствами JavaFX 8 работать с треем не прибегая к awt/swing?
    Нет. JavaFX 8 не поддерживает работу с треем. Возможно, поддержка работы с треем будет добавлена в 9й версии. А пока - сосите палец, мишки.

    Итог:
    Приложение оставил на JavaFX 8, а работу с треем вынес в отдельный класс, который написан с использованием AWT SystemTray.
    Ответ написан
    Комментировать
  • Как объективно протестировать производительность 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 комментариев
  • Как правильно реализовать logout на php?

    @fattan Автор вопроса
    программист
    Переместил session_destroy(); как можно ближе к session_start(). Проблема решилась.

    session_start();
    
    if (isset($_GET['logout'])) {
        session_destroy();
        header('location: /bla/bla/bla/index.php?module=auth&action=start' );
    
    }
    Ответ написан
    Комментировать
  • PHP — Out of memory - хотя памяти выделили много, так почему?

    @fattan Автор вопроса
    программист
    Выяснилось вот что:
    Есть таблица. В таблице 70 000 записей. Общий объем таблицы = 7 Мб. Периодически происходит выборка всех этих записей, и запись их циклом через mysql_fetch_assoc() в массив. Out of memory происходит в основном во время работы этого цикла. Не справляется с записью такого объема данных в массив.

    Переписали код. Ошибки перестали валиться.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (32)