LINUX.ORG.RU

Сообщения unC0Rr

 

[TCP] Перезапуск сервера

Форум — Development

Есть сервер игры, к которому клиенты подключаются по tcp, типичное время сессии около 30 минут. Возможно ли организовать перезапуск сервера таким образом, чтобы уже подключенные клиенты продолжали сидеть на старом, а вновь подключавшиеся оказывались на новой копии сервера? Когда все клиенты отключатся от старого сервера, он закрывается.

Пробовал закрывать слушающий сокет и запускать вторую копию, но она ругается на уже занятый порт. Запрос к гуглу, выдающий релевантную инормацию, не смог придумать. Как правильно организовать такой перезапуск?

 

unC0Rr
()

[Qt][PostgreSQL] QSqlRelationalTableModel и VIEW ☑️

Форум — Development

Есть у меня такая табличка

CREATE TABLE marks
(
  id integer NOT NULL DEFAULT nextval('marks_id_seq'::regclass),
  workdate date NOT NULL,
  personpositionid integer NOT NULL,
  reasonid integer NOT NULL,
  hours numeric(4,2) NOT NULL,
  planmarkid integer,
  <тут всякие ключи>
)

В программе создаётся QSqlRelationalTableModel для редактирования таблицы, с одним отношением вида

setRelation(3, QSqlRelation("workers.reasons", "id", "name"))

Записи создаются, редактируются и удаляются на ура, всё замечательно.

Но понадобилась дополнительная функциональность со стороны базы данных, для чего исходная таблица была переименована в marks_table, и был создан VIEW вида

CREATE OR REPLACE VIEW marks AS 
 SELECT marks_table.id, marks_table.workdate, marks_table.personpositionid, marks_table.reasonid, marks_table.hours, marks_table.planmarkid
   FROM marks_table;

с правилами на INSERT, UPDATE и DELETE, которые замечательно работают при отправке запросов в базу напрямую. Но программа почему-то начала вести себя странно: отображение данных и добавление элемента через QSqlRelationalTableModel работают, а вот удаление и редактирование записи спотыкаются с такими ошибками:

SQL query error: "ERROR:  column "name" does not exist
LINE 1: ...D "workdate" = $2 AND "personpositionid" = $3 AND "name" = $...

и

SQL query error: "ERROR:  syntax error at or near "("
LINE 1: EXECUTE  (1504, '2011-02-07', 2574, 'Я - Продолжительность р...

Куда вообще копать? С точки зрения программы в базе данных должна быть всё та же прежняя таблица marks, я неоднократно пользовался таким приёмом, правда не использовал QSqlRelationalTableModel, только QSqlTabelModel, с которой не возникало никаких проблем при работе с view.

 ,

unC0Rr
()

[KDE4] Текущая погода ☑️

Форум — Desktop

В стандартном виджете, показывающем текущую погоду за окном, не могу найти свой город Архангельск, в КДЕ3 такой проблемы не было. Есть ли какие-нибудь альтернативные виджеты или сайты с погодой?

unC0Rr
()

[Haskell][TCP сервер]Чтение из закрытого сокета/хендла

Форум — Development

С недавних пор (с каких - не знаю точно, возможно, что-то связанное с системными библиотеками) заметил странное поведение своей программы: стали исчезать куски данных, принятые от клиента. До этого два года всё работало замечательно.

Чтобы воспроизвести проблему я запускаю сервер, захожу неткатом на него, отсылаю строки [«QUIT», «1», «2»] и пустую строку, завершающую пакет. Сервер реагирует на это отключением клиента с сообщением [«BYE», «1»]. Далее запускаю некат и повторяю действия, и тут начинаются «чудеса». Поясню, как работает сервер: на каждого клиента заводятся потоки (forkIO) на приём и на отправку, общающиеся с основным потоком через Chan-ы. Таким образом, на приём работает что-то вида

forever (hGetLine handle >>= \msg -> writeChan chan $ Message (clientId, msg))
Поток висит на hGetLine, и при получении строки отсылает её ядру сервера. При отключении клиента по идее он должен просто отваливаться с исключением.

Но тут случается странная вещь. Когда сервер отключает первое подключение, слушающий поток продолжает ждать строку от хендла. При повторном подключении система выдаёт хендл с тем же номером, создаётся второй поток, и теперь два потока ждут строки! Более того, они оба получают эти строки, каждый через одну. Соответственно, первый поток присылает ядру команды от уже несуществующего клиента, второй поток присылает неправильные команды от текущего клиента. Переписывание сетевой части с хендлов на сокеты ситуацию никак не изменило.

Вопросов куча. Почему при закрытии хендла/сокета могут оставаться потоки, ждущие с него данных, и более того, продолжающие читать с нового хендла/сокета с тем же номером? Как бороться с таким поведением? Как вообще правильно писать такие программы на хаскеле? Как работают с блокирующими вызовами в программах на других ЯП? Почему раньше работало, а сейчас перестало?

 

unC0Rr
()

Hedgewars 0.9.13

Новости — Игры
Группа Игры

Вышла новая версия пошаговой стратегии Hedgewars (похожие игры: Worms, Wormux, Artillery, Scorched Earth).

Новое в этом релизе:

  • Множество новых шапок
  • Взрывающиеся бочки
  • Более умные боты (избегают огня, научены некоторым новым видам оружия)
  • Новая озвучка (с британским акцентом)
  • Звуковое оповещение, когда игроки заходят в комнату
  • Подсказка по оружию при использовании меню оружия
  • Новые режимы игры: расстановка ежей, режим с королём, случайный выбор очерёдности первого хода, общее оружие между командами в альянсе
  • Просмотр меню оружия во время чужого хода (удобно для планирования своих ходов)
  • Мины-пустышки
  • Флаги
  • Визуальные эффекты: пыль при ударе после падения, дым, использованные патроны, мигание ярлыка с именем команды при переходе хода, анимация доставания оружия ежом и многое другое
  • Показ значка полученного оружия при взятии ящика
  • Звук ходьбы ежей
  • Краткая информация о правилах игры при старте
  • Новые карты, темы, шаблоны для генерации карт (в том числе лабиринты)
  • Поддержка lua для создания тренировок и миссий

>>> Подробности

 ,

unC0Rr
()

Hedgewars 0.9.12

Новости — Игры
Группа Игры

Вышла новая версия пошаговой стратегии Hedgewars (похожие игры: Worms, Wormux, Artillery, Scorched Earth).

Новое в этом релизе:

  • Новое оружие: летающая тарелка, коктейль Молотова
  • Новые звуки, визуальные эффекты, обновления графики
  • Внутрикомандный чат
  • Добавлены две тренировки
  • Раскраска сообщений в чате
  • Новые карты, темы
  • Огромное множество мелких улучшений

>>> Подробности

 ,

unC0Rr
()

Hedgewars 0.9.11

Новости — Игры
Группа Игры

Вышла новая версия пошаговой стратегии Hedgewars (похожие игры: Worms, Wormux, Artillery, Scorched Earth).

Новое в этом релизе:

  • Speech bubbles
  • Новые шапки, надгробия, музыка, анимации, голоса
  • Новые режимы игры: вампиризм (урон врага передаётся атакующему в виде дополнительного уровня здоровья), карма (урон атакующего равняется нанесённому урону), артиллерия (ежи не могут двигаться)
  • Настройки мин (количество секунд до срабатывания, количество мин на карте)
  • Снайперская винтовка

>>> Подробности

 ,

unC0Rr
()

Hedgewars 0.9.10

Новости — Игры
Группа Игры

Вышла новая версия пошаговой стратегии Hedgewars (клон червячков).

Новое в этом релизе:

  • Новые шапки, карты, темы
  • Удаление небольших групп пикселей, оставляемых огнём
  • Вчетверо большие карты, до 48 ёжиков в игре
  • Режим с границами карты
  • Увеличена скорость отрисовки, появился режим "ухудшенного качества", уменьшающий требования к системе
  • Новые настройки игры, схемы настроек
  • Генератор команд
  • Утилиты (лазерный прицел, слабая гравитация и др.)

>>> Подробности

 ,

unC0Rr
()

Новый релиз ReactOS 0.3.6

Новости — Open Source
Группа Open Source

Эта версия, равно как и все остальные из серии 0.3.x, находится в "альфа" стадии разработки, так что не ждите от релиза слишком многого. ReactOS 0.3.6 — это продукт концентрации текущей разработки на исправлениях ошибок, улучшении совместимости и стабильности. С момента предыдущего релиза прошло более тысячи коммитов в svn-репозиторий ReactOS.

>>> Подробная версия списка изменений.

Наиболее важные изменения:

  • Поддержка других архитектур: улучшения в ARM-версии, начало поддержки архитектуры x64.
  • Уменьшение необходимой загрузчику FreeLdr памяти для загрузки ReactOS.
  • Возможность выгрузки драйверов.
  • Множество исправлений и улучшения ядра (доставка APC, таймер, большая работа над архитектурно-независимыми частями менеджера памяти).
  • Поддержка большего количества Win32-приложений благодаря исправлению реализации кучи в RTL (например, инсталляторы, основанные на InnoSetup, приложения Delphi, и др.).
  • Исправления ошибок и устранение утечек памяти в сетевом стеке.
  • Дальнейшее развитие подсистемы Win32, большинство библиотек DLL режима пользователя синхронизированы с Wine.

>>> Новость

 , , , , ,

unC0Rr
()

Hedgewars 0.9.4

Новости — Игры
Группа Игры

Вышла новая версия пошаговой worms-like стратегии Hedgewars 0.9.4.

Изменения:

  • чат в сетевой игре;
  • новое оружие: миномёт, кнут и камикадзе;
  • две новые темы;
  • новые карты;
  • новые анимациию, включая анимацию бездействующего ежа;
  • небольшие обновления AI;
  • возможность атаки с верёвки или парашюта;
  • некоторые виды оружия можно использовать только после нескольких ходов от начала раунда;
  • продолжена переделка и добавление новой графики;
  • устранено большое количество багов сетевой игры (в движке);
По мнению разработчиков, это наиболее качественный релиз игры.

>>> Страница скачивания

 , ,

unC0Rr
()

Вышла ReactOS 0.3

Новости — Open Source
Группа Open Source

Через 10 месяцев после предыдущего релиза вышла ReactOS 0.3. Напомним, такой большой перерыв связан с дестабилизацией работы команды, вызванной скандалом вокруг якобы использовавшихся при разработке "грязных" методов реверс-инжиниринга. В настоящий момент проведён аудит почти всего кода, и разработка продолжается полным ходом.
Среди важнейших изменений в версии 0.3:
- Проведена большая работа над поддержкой DirectX
- Импортированы OHCI и UHCI драйверы из Linux, теперь ReactOS поддерживает USB клавиатуры и мыши
- Исправлено множество ошибок смены контекста потоков
- Автоматический поиск и установка драйверов
- Возможна автоматическа установка, не требующая интерактивного взаимодействия
- Значительно увеличено быстродействие за счёт множеста изменений в ядре

Следует отметить, что ReactOS по-прежнему носит статус alpha и не пригоден для повседневного применения.

>>> Подробный changelog

unC0Rr
()

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