• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в RAGE Multiplayer.

    Ошибка: Ваша версия Grand Theft Auto V не поддерживается RAGE Multiplayer.
    ERROR: Your game version is not supported by RAGE Multiplayer.

    Данная ошибка говорит о том, что GTA V обновилась до новой версии (GTA Online тоже). Вам необходимо обновить саму игру в главном меню вашего приложения (Steam / Epic Games / Rockstar Games).
    Если после этого RAGE:MP все равно не работает - вам нужно дождаться выхода патча для самого мультиплеера (обычно это занимает от нескольких часов до нескольких дней).

    Новости и апдейты Rockstar Games - https://www.rockstargames.com/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


    Grand Theft Auto 5 (+ GTA Online) последний раз были обновлены:

Мануал Уменьшаем нагрузку на 50% в моде RedAge (NeptuneEvo)

IronPython

Начинающий специалист
7 Ноя 2020
169
62
102
Затем что когда нибудь ты их разгребешь и можешь получить ценную инфу, а на счёт отображения можно всякое придумать
Ну так-то можно ж как-то структурировать это все, разные уровни - в разные места, например что-то ценное в БД, а какие-то мелочи в файлы, плюс это все по датам и времени сортировать
 

Fernetti

Участник портала
23 Янв 2022
19
7
53
29
Ну так-то можно ж как-то структурировать это все, разные уровни - в разные места, например что-то ценное в БД, а какие-то мелочи в файлы, плюс это все по датам и времени сортировать
Я соглашусь с тобой, все можно если нужно, если захотеть.
Говорят же если сильно захотеть, можно в космос полететь)
 

IronPython

Начинающий специалист
7 Ноя 2020
169
62
102
Я соглашусь с тобой, все можно если нужно, если захотеть.
Говорят же если сильно захотеть, можно в космос полететь)
Согласен, все зависит от задачи и хотелок клиента :) Ну а если клиент не будет юзать логи то зачем заморачиваться - забросил в файл или бд и все...
 

DaVilka

Старожил
BackEnd developer
16 Сен 2020
761
276
128
в xml пишешь и читай сколько душе угодно. Первый раз в жизни вижу что бы логи хранились в бд
 
  • Wow
Реакции: IronPython

DaVilka

Старожил
BackEnd developer
16 Сен 2020
761
276
128

DaVilka

Старожил
BackEnd developer
16 Сен 2020
761
276
128
Если человек работает на редаге(не школьник), то ты думаешь что он больше тебя не может знать?:)
Редаговец это как школота, это не возраст и уровень знаний, а состояние души )
 
  • Haha
Реакции: IronPython

Fernetti

Участник портала
23 Янв 2022
19
7
53
29
Редаговец это как школота, это не возраст и уровень знаний, а состояние души )
Ну я конечно имел ввиду какую нибудь it компанию, а не сервер на ярости xD

Но раз твоя планка так высоко стоит, я промолчу
 

DaVilka

Старожил
BackEnd developer
16 Сен 2020
761
276
128

xtance

Новый участник
14 Ноя 2020
4
1
64
Не, ну, как бы было понятно, что дела в моде идут хуево
Но это уже за гранью добра и зла
По-моему фиксами тут уже ничего не исправить :)
работает на редаге
Оказывается замена логотипов на свои теперь работа
 

lazare13

Новый участник
9 Мар 2023
7
0
38
У вас нет фиксированной версии? Или кто-то продает?
 

Harland David Sanders

🍔 ChefBurger
Команда форума
High developer
10 Сен 2020
3,594
2,752
219

zar

Новый участник
10 Апр 2023
1
1
38
Ради интереса откопал изначальную версию кода:
C#:
while (true)
{
    if (queue.Count < 1) continue;
    else
        MySQL.Query(queue.Dequeue());
}

Да, действительно, такого вида while(true) приведёт к сжиранию 100% CPU thread'а, так как проверка содержимого очереди будет проходить бесконечно.
Классическое решение этой проблемы — добавление Thread.Sleep(), который разгрузит процессор и укажет шедулеру, что данный поток/воркер не нужно выполнять на CPU в течение долгого времени. Получается, что код можно поправить всего лишь несколькими строчками:
C#:
while (true)
{
  /* Sleep if queue is empty */
  if (queue.Count < 1)
  {
    Thread.Sleep(500);
    continue;
  }

  /* Run all queries from queue */
  while (queue.Any())
    MySQL.Query(queue.Dequeue());
}

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

Однако что решение с таймером, что с sleep'ом страдает от одной и той же проблемы: всегда будет совершенно ненужная задержка с момента добавления новой строки в очередь логов, варьирующаяся от 0 до 500 мс.
На мой взгляд, наилучшем решением будет использование BlockingCollection<string> вместо Queue<string>. Тогда вместо queue.Dequeue() мы будем вызывать bc.Take(), который «заблокирует» тред, т.е. переведет его в blocking state, а значит
а) тред не будет израсходывать CPU time до того момента, пока в коллекцию не придёт новый элемент
б) ОС мгновенно разблокирует тред в момент, когда какой-либо другой тред таки добавит в нашу новую «очередь», построенную на BlockingCollection, новое значение, а значит и добавление новых логов в БД произойдёт мгновенно.

Таким образом, код можно упростить практически до (конечно, стоило бы проверить вернувшееся значение из .Take() и обернуть это в try catch{}, как это сделано в примере из документации выше):
C#:
while (true)
{
  MySQL.Query(bc.Take());
}
 
Реакции: Harland David Sanders

ready to massacre

Начинающий специалист
4 Мар 2023
153
58
40

mob1ck

Новый участник
16 Сен 2023
2
0
38
Что-то в редаге v3 такого нет ничего. Поч?