LINUX.ORG.RU

Сообщения ur

 

Malware которая открывает порт на сервере

Не самый умный вопрос, но было ли в вашей практике такое, что ваш сервер взламывали и появлялся новый открытый порт?

Стоит ли вообще сканировать свой сервер на предмет появления новых открытых портов?

Или же malware в основном устанавливает соединение с сервером самостоятельно.

 

ur
()

Почему много write обрабатываются как один?

Я пишу сервер. Использую epoll. Когда посылаю много пакетов на сервер через send или write - они аккумулируются в один. Но стоит добавить sleep на 1/100 секунды например - всё ок.

Что это такое и как с этим бороться?

Вот код тестера на ruby.

require 'socket'

login = 'optimus'.ljust(32, [0].pack('c'));
password = 'prime'.ljust(32, [0].pack('c'));

command = [0x70].pack('s') + [0x1].pack('c') + [0x0].pack('c') + [login.length + password.length].pack('L') + login + password

puts "Command length: #{command.length}"

sock = TCPSocket.open('localhost', 7851)

5.times {
	sock.write command
}

sock.close
ur
()

Некорректно работает программа. Баг gcc?

Я лично сам подозреваю что это ошибка с выравниванием данных или типа того.

Компилирую самым обычным способом. Пробовал с флагом -g - тоже самое.

Вот код функции:

NxDataContainer *nx_get_data_from_table_by_field(NxTable *table, int id, int field)
{
	NxModelIndex index;
	NxListIterator *model_iterator;
	NxListNode *model_node;
	NxDataModel *model;
	void *data;
	int i = 0;
	
	model_iterator = nx_list_get_iterator(table->model, NX_START_HEAD);
	
	index.id = id;
	index.field = field;
	
	while((model_node = nx_list_next(model_iterator)) != NULL)
	{
		if(i == field)
		{
			model = model_node->value;
			if((data = nx_dict_fetch_value(table->data, &index)) == NULL) {
				nx_list_release_iterator(model_iterator);
				return NULL;
			}
			
			if(model->type == NX_TYPE_STRING || model->type == NX_TYPE_BINARY) {
				model->size = model->max;
			}
			
			return nx_create_data_container(model->type, model->size, data);
		}
		i++;
	}
	
	nx_list_release_iterator(model_iterator);
		
	return NULL;
}

Причём если сделать так:

NxDataContainer *nx_get_data_from_table_by_field(NxTable *table, int id, int field)
{
	NxModelIndex index;
	NxListIterator *model_iterator;
	NxListNode *model_node;
	NxDataModel *model;
	void *data;
	int i = 0;
	
	model_iterator = nx_list_get_iterator(table->model, NX_START_HEAD);
	
	index.id = id;
	index.field = field;
	
	while((model_node = nx_list_next(model_iterator)) != NULL)
	{
		if(i == field)
		{
			model = model_node->value;
			if((data = nx_dict_fetch_value(table->data, &index)) == NULL) {
				warning("I AM SAY WORK!!!");
				nx_list_release_iterator(model_iterator);
				return NULL;
			}
			
			if(model->type == NX_TYPE_STRING || model->type == NX_TYPE_BINARY) {
				model->size = model->max;
			}
			
			return nx_create_data_container(model->type, model->size, data);
		}
		i++;
	}
	
	nx_list_release_iterator(model_iterator);
		
	return NULL;
}

тогда работает.

ur
()

Узнать размер выделенной памяти

Искал и нигде не нашёл функцию для того чтобы узнать сколько памяти выделено имея указатель в Linux.

Хотя даже Mac OS X есть функция(унаследованная от *BSD как я понял) malloc_size(void *ptr) для этого.

Пока я вижу такое решение проблемы - использовать jemalloc либо tcmalloc - там это есть.

И если мне придётся использовать альтернативный аллокатор - какой лучше? Нужна большая скорость выделения мелких объектов минимум на 1.5ГБ

ur
()

Зачем пишут свою реализацию malloc?

Зачем пишут свою реализацию malloc?

Посмотрел исходники redis, memcached - там имеется своя функция для этого. Пока только понял что это используется для учёта занятой памяти и степени фрагментации.

ur
()

Событийно-оринтированная база данных

Есть ли такая БД чтобы можно было установить событие например на добавление поля? Т.е. допустим если произошло добавление поля срабатывало событие и отправляло слушающим клиентам уведомление.

ur
()

Вирусы в Linux

Давайте обсудим перспективы вирусов в Linux. Сейчас их мало и никто их наверное особо не делает, но они есть.

Под Linux вирусы писать можно, это факт. Область потенциального заражения широка, от desktop'ов до серверов и сетевых устройств.

Может быть лет через 4-6, когда Linux распространится на домашних ПК, малварщики активизируются?

ur
()

Как сделать корректно автоматический подъём демона в случае его завершения

Как сделать корректно автоматический подъём демона в случае его завершения?

ur
()

Посоветуйте кроссплатформенную библиотеку для конфигурационных файлов

Чтобы под Linux, Windows, Mac OS X могла работать. Свой парсер не хочу писать, но если надо будет - буду.

Интересует только C.

ur
()

[Qt] Qt Designer и растягивание виджетов

Пишу интерфейс с помощью Qt Designer и вот столкнулся с такой маленькой проблемой.

Есть главное окно программы, на котором расположены QToolBar, QStatusBar, QMenuBar и прочие компоненты.

Как разместить свои виджеты чтобы при разворачивании на весь экран они тоже растягивались?

Сейчас виджет в главном окне фиксированного размера, но как сделать так, чтобы он заполнял всю свободную часть окна, которая не занята элементами?

 

ur
()

Нужна удалённая работа

Языки программирования: С\С++, C#, PHP, Python
Дополнительно: MySQL, JavaScript, JQuery, HTML, CSS

Некоторые примеры кода:
https://github.com/universerootold
https://github.com/universeroot

Резюме: https://docs.google.com/document/d/1KxgdUsinfHWEM_lwXo2qvyexl7Jiqij-eLzWKqwkD...

Гордится особо нечем, но знаю что могу быть полезен.

Email: universeroot@gmail.com
Jabber: universeroot@xmpp.ru

ur
()

RSS подписка на новые темы