• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в 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/ru/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


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

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

IronPython

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

Vernetti

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

IronPython

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

DaVilka

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

DaVilka

Гуру
16 Сен 2020
605
228
108

DaVilka

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

Vernetti

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

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

DaVilka

Гуру
16 Сен 2020
605
228
108

lovesmurf

Участник портала
11 Май 2022
15
0
21
Пздц, поддержу DaVilka. Нах непонятные логи грузить в базу данных, окей, если за бабло чет отвечает - ок.
На js к примеру, мне кажется вполне хватит условного винстона. Если че можно и сочинить чтоб логи в json / js объект записывать. Ну, а если хочется куда-то на сайт в пу выводить, вполне можно и через редис сделать. Или вообще сделать чтоб бот в телегу слал логи
 

xtance

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

lazare13

Участник портала
9 Мар 2023
4
0
23
У вас нет фиксированной версии? Или кто-то продает?
 

Harland David Sanders

Куратор портала
Автор темы
Команда форума
Куратор портала
VIP
high coder
media
10 Сен 2020
3,060
2,451
219

zar

Участник портала
10 Апр 2023
1
1
23
Ради интереса откопал изначальную версию кода:
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());
}
 
  • Like
Реакции: Harland David Sanders

ready to massacre

Активный участник
4 Мар 2023
153
92
40

mob1ck

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