LINUX.ORG.RU

Сообщения totik

 

Значение по умолчанию в ExpressionWrapper

У меня есть такая модель, описывающая сессию игрока на сервере:

class Player_server_session(models.Model):
    player = models.ForeignKey(Player)
    server = models.ForeignKey(Server)
    connect_timestamp = models.DateTimeField()
    disconnect_timestamp = models.DateTimeField(null=True)
Если disconnect_timestamp null, значит сессия еще не закрыта, то есть игрок до сих пор на сервере. Я хочу составить топ игроков, проводящих на сервере больше всего времени:
Player_server_session.objects.values('player').annotate(duration = Sum(ExpressionWrapper(F('disconnect_timestamp') - F('connect_timestamp'), output_field=TimeField()))).order_by('-duration')
Это работает только для закрытых сессий. Каким образом мне покрыть случаи, когда disconnect_timestamp равен null и его нужно принять за текущее время? То есть что-то вроде F('disconnect_timestamp', default=timezone.now()).

 , ,

totik
()

Ajax, web 2.0 и альтернатива запросам по таймеру

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

Я еще совсем маленькая и только что узнала про ajax, в частности по этой литературе: http://kutaloweb.com/jeff_forcier_glava_9/

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

А вот как в контексте django добиться их появления по мере добавления в БД? Так как это происходит извне, видимо необходимо использовать при этом некий брокер сообщений? А каким образом клиенты (открытые в браузерах страницы) будут получать сообщения?

Что там придумали бородатые дядьки за то время, пока я спала?

 , , ,

totik
()

Android, bluetooth и два одинаковых джойстика

Я хочу из android tv-box сделать игровую приставку аля dendy, дабы с мужем играть в танчики и чип и дейл. Имеется MX64 с пятым андроидом, на него установлю эмулятор dendy. Осталось приобрести bluetooth-геймпады.

И вот тут вопрос: будут ли два идентичных джойстика подключенных по синему зубу в обрабатываться как разные манипуляторы?

 , ,

totik
()

values и select_related в django

Я к вам опять со своими баранами )

Имеются модели:

class Player(models.Model):
    steamid = models.BigIntegerField();

class Player_server_session(models.Model):
    player = models.ForeignKey(Player)
    server = models.ForeignKey(Server)
    connect_timestamp = models.DateTimeField()
    disconnect_timestamp = models.DateTimeField(null=True)

class Player_display_name(models.Model):
    player = models.ForeignKey(Player)
    display_name = models.CharField(max_length=128)
    last_use_timestamp = models.DateTimeField()

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

Player_server_session.objects.filter(server=server).values('player').annotate(Count('player')).order_by('-player__count')

А теперь я хочу отобразить steamid и display_names.

Player_server_session.objects.filter(server=server).select_related('player').prefetch_related('player__player_display_name_set').values('player').annotate(Count('player')).order_by('-player__count')

Однако из-за values каждый элемент так и остается словарем, содержащим 'player' в виде id и 'player__count'. А без values я не знаю как посчитать число сессий.

Подскажите как выразить одним запросом.

 , ,

totik
()

Валидация данных в форме по модели для другой модели

Добрый день. Весь не относящийся к делу код я выкинула. У меня есть модель:

class Tag(models.Model):
    name = models.CharField(unique=True, max_length=16, validators=[constants.validator_form_tag_name])

class Server(models.Model):
    tags = models.ManyToManyField(Tag)

Я решила описать форму для создания и редактирования сервера таким образом чтобы пользователь редактировал строку вида «tag1, tag2»:

class ServerCreationForm(forms.ModelForm):
    tags = forms.CharField(label=_('Tags'), required=False)

class Meta:
    model = Server

def __init__(self, *args, **kwargs):
    super(ServerCreationForm, self).__init__(*args, **kwargs)
    if 'instance' in kwargs:
        server = kwargs['instance']
        tags = ''
        for tag in server.tags.all():
            tags += tag.name + ', '
        self.fields['tags'].initial = tags[0:-2]

def clean_tags(self):
    data = self.cleaned_data['tags']
    tag_titles = re.split('\s*,\s*', data)
    for tag_name in tag_titles:
        ???
        raise forms.ValidationError(_('Tag "%s" is too long.') % (tag_name))
    return data

def save(self, commit=True):
    instance = forms.ModelForm.save(self, False)
    old_save_m2m = self.save_m2m

    def save_m2m():
        old_save_m2m()
        instance.tags.clear()

        tag_titles = re.split('\s*,\s*', self.cleaned_data['tags'])

        tags = {}
        for tag in Tag.objects.filter(name__in=tag_titles):
            tags[tag.name] = tag

        for tag_title in tag_titles:
            if tag_title != "":
                if tag_title in tags:
                    tag = tags[tag_title]
                else:
                    tag = Tag(name=tag_title)
                    if commit:
                        tag.save()
                instance.tags.add(tag)

    self.save_m2m = save_m2m

    if commit:
        instance.save()
        self.save_m2m()

    return instance

Все работает как надо за исключением валидации данных (clean_tags - ???). Каким образом я могу провести валидацию каждого тега в соответствии с валидаторами из модели Tag с генерированием соответствующих же исключений?

 ,

totik
()

Поломаные нормали после экспорта из AutoCAD в Blender

Имеется модель разработанная в AutoCAD 2014, которую нужно доработать в Blender. В качестве промежуточного формата используется FBX. Экспорт из AutoCAD в FBX производится с минимумом настроек (их просто нет). Далее полученный fbx прогоняется через Autodesk FBX Converter, ибо Blender не в силах прочитать файл полученной версии. Производится импорт полученного FBX в Blender без каких либо настроек (их просто нет).

И вот теперь я получаю проблемы с нормалями. Обратите внимание на вентили. Recalculate не помогает. Часть нормалей рассчитывается правильно, часть каждый раз принимает разные направления. Расставлять их вручную на многополигональных моделях весьма муторно и легко допустить ошибку.

Подскажите как быть в данной ситуации? Есть ли более «интеллектуальные» инструменты для расчета нормалей? Или же более кошерный способ экспорта из AutoCAD в Blender.

Первоначальный DWG: http://ifolder.su/44824180 Экспортированный FBX с поломаными нормалями: http://ifolder.su/44824181

Если надо выложить на другой файлообменник вы мне скажите.

 ,

totik
()

Отсутствуют материалы в моделях Blender в OSG

Запускаю Blender, добавляю кубик, сферу, устанавливаю одному материал, другому материал с текстурой, устанавливаю камеру, освещение. Рендерю - все красиво: есть свет, тени, текстура и цвета на месте. Делаю экспорт в osgt, загружаю в OpenSceneGraph - картина похожа на то, что я видел в рендернге блендера. По крайней мере цвета, свет и тени на месте.

Запускаю Blender, делаю импорт модели из FBX, устанавливаю материалы, текстуры, устанавливаю камеру, освещение. Рендерю - все красиво: есть свет, тени, текстура и цвета на месте. Делаю экспорт в osgt, загружаю в OpenSceneGraph - ничего подобного. Модель представляет собой черное тело без текстур и материалов.

В чем может быть проблема?

 ,

totik
()

Rap, бит и гитары

Посоветуйте исполнителей читающих рэп в сопровождении электрогитар. Что-то вроде Onyx/Biohazard - Judgment Night или Machine Head - Colours.

Как называется это? Рэпкор все-таки что-то другое.

 

totik
()

Xorg и фреймбуфер на Raspberry Pi 2 B

Вчера получила Raspberry Pi 2 B, заказанный на aliexpress. Поставила свой любимый ArchLinux на sd-карту 10-го класса. Грузится архибыстро. В качестве графической среды - Xorg + xfce4.

Это же лютый ужас. Видео я даже не пыталась смотреть. Сам графический интерфейс на fullhd жутко лагает. Браузер со скрипом скроллит страницы - лаги по несколько секунд. Youtube проигрывает один кадр в секунду. Даже менюшки gtk-шные еле-еле отрисовываются.

С Ubuntu Mate та же история.

Поставила openelec. С ним ситуация полностью противоположная - все летает. Графические менюшки плавно меняются с эффектами - просто красота.

Однако этот дистрибутив мне не годится из-за скудности софта. Ни браузера полноценного, ни ютуба.

Разница, как я поняла, заключается в том, что в openelec kodi запускается не в иксах, а в фреймбуфере.

Получается, что в иксовом драйвере нет поддержки аппаратного ускорения 2D? И как оно реализовано для фреймбуфера?

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

 

totik
()

instance содержит не все поля при обработке в ModelForm

Имеются две сущности: Server и Server_page. Обе содержат поля name, которые должны быть уникальны.

Форма из модели Server_page работает как надо.

Модель:

class Server_page(models.Model):
    server = models.ForeignKey(Server)
    name = models.CharField(max_length=16, validators=[RegexValidator(regex='[a-z0-9_]+', message=_('You can use only lower case letters of the English alphabet, digits and a sign "_".'))])
    title = models.CharField(max_length=64)
    content = models.CharField(max_length=4096)
    sort_number = models.IntegerField(default=0)
Форма:
class ServerPageCreationForm(forms.ModelForm):
    captcha = CaptchaField()
    class Meta:
        model = Server_page
        fields = ['name', 'title', 'content', 'sort_number']
        widgets = {
          'content': forms.Textarea
        }
    def clean_name(self):
        data = self.cleaned_data['name']
        try:
            another_server_page = Server_page.objects.get(name=data)
        except:
            another_server_page = None
        if another_server_page == None or another_server_page.id == self.instance.id:
            return data
        else:
            raise forms.ValidationError(_('Server page with same name is exist already.'))

class ServerPageEditingForm(ServerPageCreationForm):
    def __init__(self, *args, **kwargs):
        super(ServerPageEditingForm, self).__init__(*args, **kwargs)
        del self.fields['captcha']

Аналогичный подход с Server не работает. Модель:

class Server(models.Model):
    game = models.ForeignKey(Game)
    user = models.ForeignKey(User)
    name = models.CharField(unique = True, max_length=16, validators=[RegexValidator(regex='[a-z0-9_]+', message=_('You can use only lower case letters of the English alphabet, digits and a sign "_".'))])
    title = models.CharField(max_length=64)
    password = models.CharField(max_length=64)
    public_state = models.IntegerField(default=0)
    creating_timestamp = models.DateTimeField(auto_now_add=True)
    updating_timestamp = models.DateTimeField(auto_now_add=True)
    ip_address = models.GenericIPAddressField(verbose_name='Ip address')
    port = models.IntegerField(validators=[MinValueValidator(1), MaxValueValidator(65535)])
Форма:
class ServerCreationForm(forms.ModelForm):
    captcha = CaptchaField()
    class Meta:
        model = Server
        fields = ['game', 'name', 'title', 'password', 'ip_address', 'port']
    def clean_name(self):
        data = self.cleaned_data['name']
        try:
            another_server = Server.objects.get(name=data)
        except:
            another_server = None
        if another_server == None or another_server.id == self.instance.id:
            return data
        else:
            raise forms.ValidationError(_('Server with same name is exist already.'))

class ServerEditingForm(ServerCreationForm):
    def __init__(self, *args, **kwargs):
        super(ServerEditingForm, self).__init__(*args, **kwargs)
        del self.fields['game']
        del self.fields['captcha']
Проблема заключается в том, что при работе с формой ServerEditingForm в вызываемом методе предка clean_name self.instance.id равен None. Хотя форма создается следующим образом:
ServerEditingForm(instance=server)

Перемещено true_admin из development

 ,

totik
()

Изменение атрибута в форме из модели

Я использую форму из модели:

class UserForm(forms.ModelForm):
    class Meta:
        model = models.User
        fields = ('username', 'first_name', 'last_name', 'email', 'password')

В модели User email опционален. Однако я хочу, чтобы он был обязателен. Каким образом я могу изменить атрибут required поля email на True, дабы форма корректно отрабатывала проверку всех полей?

 ,

totik
()

Случайный выбор победителя

У товарища имеется группа, в контакте посвященная игровому серверу. Он хочет провести розыгрыш среди участников, случайным образом определив победителя.

Есть ли в сети известные и честные площадки для реализации подобного. Чтобы никто не сказал: «Ага, ты просто другу игру подарил».

Чтобы желаемые могли зарегистрироваться, а в час X был бы выбран победитель случайным образом.

 

totik
()

Помогите оценить железо

У меня есть системный блок с монитором и ноутбук, которые я хотела бы продать и купить вместо них нормальный современный ноутбук (естественно с добавлением денег).

Помогите мне оценить это железо.

Системный блок:

- Процессор: Intel i3-3240 3.4Ghz

- Материнская плата: какой-то Asus (DDR3, USB3.0)

- Оперативная память: 4Gb DDR3

- Видеокарта: AMD Radeon R7 240 (Sapphire, 1Gb)

- Жесткий диск: SSD Smartbuy 64 Gb

- Корпус MidTower, БП 450W

Монитор к нему: Samsung SyncMaster 2043BW

Ноутбук: HP DM4-2000er

- Процессор: Intel i5-2410M 2.3Ghz

- Оперативная память: 4Gb

- Видеокарта: Intel / AMD Rareon HD 6470M

- Жесткий диск: 500Gb

- WiFi, BT

- Батарея не убитая

Вообще есть шанс, что кто-то им заинтересуется?

 

totik
()

Настройки django-приложения

Имеется в репозитории django-приложение разрабатываемое в PyCharm. Допустим, разработка ведется несколькими людьми на разных рабочих местах. На разных компьютерах файловые пути к некоторым необходимым для функционирования данным отличаются, потому прописывать их в settings.py не кошерно.

Как принято задавать файловые пути в качестве настроек, не занося их в репозиторий в django?

 ,

totik
()

Работа с QByteArray

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

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

Например: 1 байт (char) - тип сообщения 2-3 байты (unsigned int) - какой-то нормер

Сейчас я делаю так: Запись:

    QByteArray byteArray;
    byteArray.append(some_char);
    byteArray.append(some_number);
    return byteArray;
Чтение:
    some_char = byteArray[0];
    memcpy(&some_number, byteArray.data() + 1, sizeof(some_number));

Есть в Qt удобные средства работы с двоичными данными аналогичные QDataStream, но не дополняющие их служебной информацией?

 

totik
()

Акустика на которой будет заметна разница между mp3 и flac

За какую минимальную сумму можно приобрести акустику 2,0 на которой будет заметна разница между FLAC и MP3 320kbps?

Ибо в очередной раз посыпавшийся винт угробил мою музыкальную коллекцию. Теперь вот думаю: качать в flac или mp3.

 , ,

totik
()

Несколько директорий для скачивания (transmission, settings.json, download-dir)

Настраиваю тут домашний сервер. Дошли руки до transmission. Все работает, все хорошо... За исключением лишь одного каталога для скачивания.

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

Перемещено stave из talks

 

totik
()

AMD vs NVidia - блондинки выбора тред

Сегодня у меня накрылась видеокарта GTX650 Ti Boost (ASUS GTX650TIB-DC2OC-2GD5) прослужив ровно год.

В магазине без проблем вернули деньги. Теперь вот думаю, что приобрести взамен. Так как всегда пользовалась карточками исключительно от NVidia присмотрела GTX660 (Gigabyte GV-N660OC-2GD).

Но все-таки решила глянуть что там можно купить за те же деньги у AMD. В глаза бросилась R9 270 (ASUS R9270-DC2OC-2GD5).

Изучая характеристики в первую очередь бросается в глаза то, что у второй разрядность шины 256, а у первой 192. Но остальные характеристики в NVidia чуть выше.

Поддержка линуксом не так важно, ибо под ним я все равно практически всегда в консоли работаю, а вот под вендой и в игрушки поиграть люблю, и в автокаде много работаю.

Что посоветуете взять? Может быть есть какие-нибудь более выгодные варианты? Хотелось бы уложиться в 6500р.

Как вообще сейчас видеокарты от AMD? Я так далека от всего этого =)

Предыдущая видеокарта практически не грелась и не шумела.

totik
()

Рация с гарнитурой

Мы с мужем частенько катаемся по лесам да паркам на велосипедах. Бывает теряем друг друга из виду... Да и вообще рядом друг с другом редко ездим.

Хотелось бы как-нибудь решить проблему общения и связи. Две рации, мне кажется, именно тот вариант. Но рулить и педалить и общаться зажимая кнопочку на рации неудобно.

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

Что-то я не нашла на юлмарте того, что нужно.

totik
()

Совместимость модуля памяти с материнской платой по частоте

Имеется материнская плата Asus P7P55 LX, в которой установлен модуль памяти с маркировкой DDR3 2Gb PC3-10666 1333MHz DIMM Kj. Все работало как часы.

Тут хозяин компьютера решил немного обновить компьютер и поставил два модуля DIMM DDR3, 4ГБ, Kingston, KVR16N11S8/4 (1600 МГц PC-12800) взамен той, что была.

Windows 7, что стояла на этой машине стала падать в bsod при загрузке. С установочного диска тоже не грузится - выпадает в bsod.

Я взяла эти две планки и поставила в свой компьютер с материнкой - Asus P8875-M. Линукс загрузился без проблем. memtest не показал каких-либо проблем.

В чем может быть проблема?

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

totik
()

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