Перейти к публикации
  • Сейчас на странице   Всего пользователей: 1   (0 пользователей, 1 гость)

Hed-kun

Программирование, т. 5.1.

Рекомендованные сообщения

так ребят, нужен хелп

есть игра мультиплеерный шутер

допустим я использую UDP

есть сервер на джава.

Как лучше реализовать прием и отдачу данных? Может 2 треда?

И чтобы не блочили друг друга

Поделиться сообщением


Ссылка на сообщение

Хуйня получится. Заебёшься синхронизировать. Лучше всего делай по 1 треду на пользователя + общую шину на сервер сайде из которой и в которую будешь инфу передавать.

Поделиться сообщением


Ссылка на сообщение

Перепиши сервер на ноду, он сам создает потоки. Очень удобно

Синхронизировать тоже сам будет?

Поделиться сообщением


Ссылка на сообщение

на сокетах, изи вообще

и как он разрешает критические секции при записи сам?

 

тут тебе не в базу значения положить, которая сама асинхронно работать умеет


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

Делай мультиплексированный ввод и event-loop. Будет меньше трабл с синхронизацией.

Поделиться сообщением


Ссылка на сообщение

только будут траблы с производительностью :trollface:


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение
(изменено)

переходить на ноды уже поздно. надо по-бастрому собрать более менее работающий мультиплеер.

на данный момент успешно принимает координаты игроков и из этого же сокета транслирует всем

я думал может по таймеру сделть, чтобы в одной итерации в течении 1 милисекунды принимал пакеты любые, по истечении таймера обработать все данные и, наконец, разослать всем участникам обновление мира

 

кароче вот главный луп сервера, например. (run)

class Arena {
public ArrayList<Player> players;
byte[] sendData;
byte[] receiveData;
DatagramSocket socket;
BufferedReader inFromUser;
public Arena(int port) throws SocketException {
 this.players = new ArrayList<Player>();
 this.receiveData = new byte[1024];
 this.sendData = new byte[1024];
 this.inFromUser = new BufferedReader(new InputStreamReader(System.in));
 this.socket = new DatagramSocket(port);
}
public void run() throws IOException, InterruptedException {
 System.out.println("Server started on " + socket.getLocalAddress().getHostName() + ":" + Integer.toString(socket.getLocalPort()));
 boolean done = false;
 long startTime = System.nanoTime();

 while (!done) {
  DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
  socket.receive(receivePacket);
  registerPacket(receivePacket);
  prepareSnapshot();
  broadcastSnapshot();
  Thread.sleep(20);
 }
 socket.close();
...
}

ну вот тут и видно как коряво все. на каждый входящий пакет приходится 1 исходящий, то есть . это же очень неэффективно, так?

 

(я обычно шугаюсь когда речь заходит о всяких асинхронностях, нодах, колбеки хуеки.

ъочу попроще чтобы у меня мозг не взорвался)


Изменено пользователем Обязательное_поле

Поделиться сообщением


Ссылка на сообщение

зачем так

 

каждому клиенту свой сокет

он шлет запрос со своими данными и хочет получить обновленные данные о других

в этот момент и отправляешь ему

 

 

главное хорошо продумать запись, чтобы лок коллекций не стал узким местом


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение
(изменено)

зачем так

 

каждому клиенту свой сокет

он шлет запрос со своими данными и хочет получить обновленные данные о других

в этот момент и отправляешь ему

 

 

главное хорошо продумать запись, чтобы лок коллекций не стал узким местом

 

много портов занять придется ведь не?

я просто исходил из того, что например у всяких там кс или квейков сервера на одном порту же


Изменено пользователем Обязательное_поле

Поделиться сообщением


Ссылка на сообщение

Обычно этим занимаются те, кто не смог на собеседовании ответить на вопрос про сортировки :trollface:

в энтерпрайзе этим занимаются все


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение
Странные вещи высказаны в статье, Откуда-то на клиенте взялась бизнес-логика на js в 100000 строк, Я, честно, говоря не видел пока клиентских браузерных проектов таких объемов, Во-вторых, что за странная убежденность, что статическая типизация хоть в каком-то виде спасает от проблем в масштабных проектах? Тысячи проектов бажных на C++ тому пример, более того не спасает даже дополнительный статический анализ кода (почитайте Джона Кармака о его энтузиазме и разочаровании в статическом анализе C++ кода), В подобных проектах проблемы связаны не с языком, а с архитектурой приложения, инфраструктурой тестирования и т.д. Вся проблема, описываемая в статье, возникает из ложного посыла о том, что динамическая природа языка — источник всех бед, Меня, честно говоря, сильно раздражает раздутая паника вокруг js (и ее производные в виде TypeScript), т.к. сам прошел все эти стадии в начале своей карьеры программиста. И именно поэтому считаю подобный подход незрелым, Я начинал изучать программирование C/C++ еще в школе, на работе познакомился с C# и первое время JS меня раздражал, Я просто его не понимал, Совершенно, Весь мой языковой кругозор ограничивался императивными статически-типизированными языками и больше для меня мира программирования не существовало, С таким кругозором JS мне казался шуткой, девиацией, Я настолько его ненавидел что на рабочем столе у меня была фотография Брендана Ахо с нецензурной подписью, Подобную же реакцию я испытал, например, по отношению к Lisp, когда познакомился с ним в университете, Но я нашел в себе силы (а вернее меня вынудила работа =)) все таки углубится в JS, И мое мнение изменилось, Этот язык не идеален, как и все в этом мире. Но преодолев порог вхождения («где классы?», «фу прототипы», «фу динамическая типизация» и прочее) я чувствую себя как рыба в воде, Мне очень нравится гибкость языка, возможность буквально заниматься «лепкой» кода, т.к. в js я не так сильно ограничен синтаксисом, как в статически-типизированных языках, Я вижу в нем свою элегантность, Перейдя через эту «гору ненависти к JS» в свое время я открыл для себя другой мир программирования, где не IDE диктует мне мышление, не язык, а мышление определяет мой образ действий, Моя «программисткая ксенофобия» прошла, С этим ощущением я решил дать второй шанс Lisp и открыл для себя мир функционального программирования, я вернулся к C и мне теперь он во многом нравится на много больше C++, Я осознал, что восприятие ООП, как панацеи от всего наивно, Мне все еще нравится C#, но теперь я вижу сколько оверинджиниринга и бутстрап-кода приходится в нем писать, что бы поддержать эфимерную парадигму, Наверно, главное чем мне нравится JS — это его выразительная способность, У Эдварда Тафти в книга есть понятие DataInk приминительно к аналитической графике (чарты, инфографика и прочее), DataInk — это отношение чернил, используемых для отображения полезной информации, информации при потере которой, график перестанет выполнять свое информационное предназначение к общему количеству чернил, использованных для отображения графика, Чем ближе это значение к 1, тем лучше, Для кода я бы ввел такую же характеристику DataCode — отношение кода, который выражает непосредственно решение задачи ко всему написанному коду, Так вот, это значение у JS ближе к 1, нежели у многих других языков, Тоже касается C (его я тоже люблю=)), В общем, к чему все это эссе: не существует серебрянных пуль, изучайте разные языки, вникайте в их дизайн, ищите плюсы и минусы и научитесь их использовать себе во благо. Не стройте себе тюрьму из предубеждений и не пытайтесь все новое запихать в узкую коробку, в который вы сидите, Возможно, то что вы так не любите, является ключом в целый новый мир (правда при условии, что вы перестанете пытаться запихать его себе в задницу, вместо замочной скважины =))

Мобильное приложение для продоты https://play.google....id=ru.prodota.m

Поделиться сообщением


Ссылка на сообщение
(изменено)

//from winapi.cs
 RegisterHotKey(this.Handle, 0, 0x002, (int)Keys.C);
 public static void KeyDown(System.Windows.Forms.Keys key)
		{
		   keybd_event((byte)key, 0x45, 0x0001 | 0, 0);
		}

		public static void KeyUp(System.Windows.Forms.Keys key)
		{
			keybd_event((byte)key, 0x45, 0x0001 | 0x0002, 0);
		}
 protected override void WndProc(ref Message m)
		{
			if (m.Msg == 0x0312)
			{
				int id = m.WParam.ToInt32();
				if (id == 0)
				{				  
					[b]ToggleHotkeys(false);
					KeyDown(Keys.Control);
					KeyDown(Keys.C);
					KeyUp(Keys.C);
					KeyUp(Keys.Control);
					System.Threading.Thread.Sleep(155);[/b]
//if i comment this sleep - code executes too fast, making first Ctrl-C press
//capture nothing, second press outputs results for first item
//third press - for second item, ...
					string textFromClipboard = Clipboard.GetText();
					if (textFromClipboard.Contains("Itemlevel: "))
					{
					   //do stuff with data
					}
					[b]ToggleHotkeys(true);[/b]
				}
			}
			base.WndProc(ref m);

костыль 99 лвл

самому смешно


Изменено пользователем justice_st

Поделиться сообщением


Ссылка на сообщение
Странные вещи высказаны в статье, Откуда-то на клиенте взялась бизнес-логика на js в 100000 строк, Я, честно, говоря не видел пока клиентских браузерных проектов таких объемов, Во-вторых, что за странная убежденность, что статическая типизация хоть в каком-то виде спасает от проблем в масштабных проектах? Тысячи проектов бажных на C++ тому пример, более того не спасает даже дополнительный статический анализ кода (почитайте Джона Кармака о его энтузиазме и разочаровании в статическом анализе C++ кода), В подобных проектах проблемы связаны не с языком, а с архитектурой приложения, инфраструктурой тестирования и т.д. Вся проблема, описываемая в статье, возникает из ложного посыла о том, что динамическая природа языка — источник всех бед, Меня, честно говоря, сильно раздражает раздутая паника вокруг js (и ее производные в виде TypeScript), т.к. сам прошел все эти стадии в начале своей карьеры программиста. И именно поэтому считаю подобный подход незрелым, Я начинал изучать программирование C/C++ еще в школе, на работе познакомился с C# и первое время JS меня раздражал, Я просто его не понимал, Совершенно, Весь мой языковой кругозор ограничивался императивными статически-типизированными языками и больше для меня мира программирования не существовало, С таким кругозором JS мне казался шуткой, девиацией, Я настолько его ненавидел что на рабочем столе у меня была фотография Брендана Ахо с нецензурной подписью, Подобную же реакцию я испытал, например, по отношению к Lisp, когда познакомился с ним в университете, Но я нашел в себе силы (а вернее меня вынудила работа =)) все таки углубится в JS, И мое мнение изменилось, Этот язык не идеален, как и все в этом мире. Но преодолев порог вхождения («где классы?», «фу прототипы», «фу динамическая типизация» и прочее) я чувствую себя как рыба в воде, Мне очень нравится гибкость языка, возможность буквально заниматься «лепкой» кода, т.к. в js я не так сильно ограничен синтаксисом, как в статически-типизированных языках, Я вижу в нем свою элегантность, Перейдя через эту «гору ненависти к JS» в свое время я открыл для себя другой мир программирования, где не IDE диктует мне мышление, не язык, а мышление определяет мой образ действий, Моя «программисткая ксенофобия» прошла, С этим ощущением я решил дать второй шанс Lisp и открыл для себя мир функционального программирования, я вернулся к C и мне теперь он во многом нравится на много больше C++, Я осознал, что восприятие ООП, как панацеи от всего наивно, Мне все еще нравится C#, но теперь я вижу сколько оверинджиниринга и бутстрап-кода приходится в нем писать, что бы поддержать эфимерную парадигму, Наверно, главное чем мне нравится JS — это его выразительная способность, У Эдварда Тафти в книга есть понятие DataInk приминительно к аналитической графике (чарты, инфографика и прочее), DataInk — это отношение чернил, используемых для отображения полезной информации, информации при потере которой, график перестанет выполнять свое информационное предназначение к общему количеству чернил, использованных для отображения графика, Чем ближе это значение к 1, тем лучше, Для кода я бы ввел такую же характеристику DataCode — отношение кода, который выражает непосредственно решение задачи ко всему написанному коду, Так вот, это значение у JS ближе к 1, нежели у многих других языков, Тоже касается C (его я тоже люблю=)), В общем, к чему все это эссе: не существует серебрянных пуль, изучайте разные языки, вникайте в их дизайн, ищите плюсы и минусы и научитесь их использовать себе во благо. Не стройте себе тюрьму из предубеждений и не пытайтесь все новое запихать в узкую коробку, в который вы сидите, Возможно, то что вы так не любите, является ключом в целый новый мир (правда при условии, что вы перестанете пытаться запихать его себе в задницу, вместо замочной скважины =))

и что ты из этого понял?

Поделиться сообщением


Ссылка на сообщение

как сделать на андроиде чтобы показывало все картинки из указанной папки?

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

http://stackoverflow...image-in-sdcard

Пути до файлов, думаю, сможешь получить

ну это то да, но мне надо чтобы вот так получилось

 

824e7e49e97e.jpg

офк я не знаю количества изображений в папке

ну я могу создать цикл и наклепать множество imageview и в них рассовать эти картинки, но думаю, что это совсем дурной способ :trollface:

Gridview ?

Поделиться сообщением


Ссылка на сообщение

двапой или кто-нить можете написать тулзу, которая бы парсила рутор например на предмет добавления торрентов, н-р, фильмов и присылала бы мне на почту каждое утро или вечер письмо со списком добавленных новых торрентов, их качества и ссылкой на скачку. мб еще чтобы была возможность ставить в тулзе минимальное качество и пр

мой коллега на работе говорил что у него подобие такой тулзы есть :hmm:

http://habrahabr.ru/post/88114/

http://habrahabr.ru/post/195454/

 

зачем так

 

каждому клиенту свой сокет

он шлет запрос со своими данными и хочет получить обновленные данные о других

в этот момент и отправляешь ему

 

 

главное хорошо продумать запись, чтобы лок коллекций не стал узким местом

 

много портов занять придется ведь не?

я просто исходил из того, что например у всяких там кс или квейков сервера на одном порту же

у веб-серверов тоже обычно один порт на льярды клиентов, представляешь


Публикация отключена

Поделиться сообщением


Ссылка на сообщение
Странные вещи высказаны в статье, Откуда-то на клиенте взялась бизнес-логика на js в 100000 строк, Я, честно, говоря не видел пока клиентских браузерных проектов таких объемов, Во-вторых, что за странная убежденность, что статическая типизация хоть в каком-то виде спасает от проблем в масштабных проектах? Тысячи проектов бажных на C++ тому пример, более того не спасает даже дополнительный статический анализ кода (почитайте Джона Кармака о его энтузиазме и разочаровании в статическом анализе C++ кода), В подобных проектах проблемы связаны не с языком, а с архитектурой приложения, инфраструктурой тестирования и т.д. Вся проблема, описываемая в статье, возникает из ложного посыла о том, что динамическая природа языка — источник всех бед, Меня, честно говоря, сильно раздражает раздутая паника вокруг js (и ее производные в виде TypeScript), т.к. сам прошел все эти стадии в начале своей карьеры программиста. И именно поэтому считаю подобный подход незрелым, Я начинал изучать программирование C/C++ еще в школе, на работе познакомился с C# и первое время JS меня раздражал, Я просто его не понимал, Совершенно, Весь мой языковой кругозор ограничивался императивными статически-типизированными языками и больше для меня мира программирования не существовало, С таким кругозором JS мне казался шуткой, девиацией, Я настолько его ненавидел что на рабочем столе у меня была фотография Брендана Ахо с нецензурной подписью, Подобную же реакцию я испытал, например, по отношению к Lisp, когда познакомился с ним в университете, Но я нашел в себе силы (а вернее меня вынудила работа =)) все таки углубится в JS, И мое мнение изменилось, Этот язык не идеален, как и все в этом мире. Но преодолев порог вхождения («где классы?», «фу прототипы», «фу динамическая типизация» и прочее) я чувствую себя как рыба в воде, Мне очень нравится гибкость языка, возможность буквально заниматься «лепкой» кода, т.к. в js я не так сильно ограничен синтаксисом, как в статически-типизированных языках, Я вижу в нем свою элегантность, Перейдя через эту «гору ненависти к JS» в свое время я открыл для себя другой мир программирования, где не IDE диктует мне мышление, не язык, а мышление определяет мой образ действий, Моя «программисткая ксенофобия» прошла, С этим ощущением я решил дать второй шанс Lisp и открыл для себя мир функционального программирования, я вернулся к C и мне теперь он во многом нравится на много больше C++, Я осознал, что восприятие ООП, как панацеи от всего наивно, Мне все еще нравится C#, но теперь я вижу сколько оверинджиниринга и бутстрап-кода приходится в нем писать, что бы поддержать эфимерную парадигму, Наверно, главное чем мне нравится JS — это его выразительная способность, У Эдварда Тафти в книга есть понятие DataInk приминительно к аналитической графике (чарты, инфографика и прочее), DataInk — это отношение чернил, используемых для отображения полезной информации, информации при потере которой, график перестанет выполнять свое информационное предназначение к общему количеству чернил, использованных для отображения графика, Чем ближе это значение к 1, тем лучше, Для кода я бы ввел такую же характеристику DataCode — отношение кода, который выражает непосредственно решение задачи ко всему написанному коду, Так вот, это значение у JS ближе к 1, нежели у многих других языков, Тоже касается C (его я тоже люблю=)), В общем, к чему все это эссе: не существует серебрянных пуль, изучайте разные языки, вникайте в их дизайн, ищите плюсы и минусы и научитесь их использовать себе во благо. Не стройте себе тюрьму из предубеждений и не пытайтесь все новое запихать в узкую коробку, в который вы сидите, Возможно, то что вы так не любите, является ключом в целый новый мир (правда при условии, что вы перестанете пытаться запихать его себе в задницу, вместо замочной скважины =))

и что ты из этого понял?

А что из этого я не должен был понять? Или ты считаешь что веб-программисты могут только жквери плагины к странице подключать?


Мобильное приложение для продоты https://play.google....id=ru.prodota.m

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...