LINUX.ORG.RU

Сообщения totik

 

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

Форум — Development

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

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 и альтернатива запросам по таймеру

Форум — Development

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

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

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

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

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

 , , ,

totik
()

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

Форум — Linux-hardware

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

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

 , ,

totik
()

values и select_related в django

Форум — Development

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

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

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
()

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

Форум — Development

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

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
()

Свеженький Budgie

Галерея — Скриншоты

Из новости узнала о существовании этого окружения. Да, это дефолт, ибо я не нашла инструментов настройки этого окружения, кроме как настроек панелек.

Очень легковесное, шустрое и простое. Мне нравится. В остальном: осваиваю OpenSceneGraph и Blender.

 , , ,

totik
()

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

Форум — Multimedia

Имеется модель разработанная в 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

Форум — Multimedia

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

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

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

 ,

totik
()

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

Форум — Talks

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

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

 

totik
()

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

Форум — Linux-hardware

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

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

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

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

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

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

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

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

 

totik
()

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

Форум — Web-development

Имеются две сущности: 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
()

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

Форум — Development

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

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

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

 ,

totik
()

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

Форум — Talks

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

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

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

 

totik
()

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

Форум — Talks

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

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

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

- Процессор: 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-приложения

Форум — Development

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

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

 ,

totik
()

Работа с QByteArray

Форум — Development

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

Форум — Talks

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

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

 , ,

totik
()

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

Форум — Desktop

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

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

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

 

totik
()

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

Форум — Talks

Сегодня у меня накрылась видеокарта 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
()

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

Форум — Talks

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

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

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

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

totik
()

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