• Стоит ли переезжать на windows 10 с Linux из-за проблем с драйверами железа?

    kotomyava
    @kotomyava
    Системный администратор
    На датчики можно смело забить. В автоматическом режиме у вас работает регулировка скорости вентилятора проца ведь? Этого более чем достаточно. Остальное больше для красоты, чем для дела, в подавляющем большинстве случаев, особенно на десктопе.

    По ssd, довольно странно, что у вас есть какие-то проблемы, и наверняка они решаемы.

    Т.е. переходить из-за этого, на мой взгляд, не за чем.

    С другой стороны, всё зависит от того, какое ПО нужно, прежде всего. Если есть и там, и там всё нужное, то в среднем всё равно, под какой ОС работать, мне по крайней мере.

    У меня 10 на декстопе, и тот же mint на нотике. Переход фактически не заметен. С другой стороны, я работаю чаще всего на других машинах через ssh клиент, и на чём он запущен не так и важно, тем более даже клиент один и тот же. =)
    Ответ написан
    Комментировать
  • Стоит ли переезжать на windows 10 с Linux из-за проблем с драйверами железа?

    Работать надо на той оси с которой вам удобно, оборудование все перетерпит, на крики о проприетарщине и т.п. вообще не стоит обращать внимание, это ваша машина и она должна быть удобна только вам. Попробуйте, вдруг будет удобнее.
    Ответ написан
    Комментировать
  • Как выбрать открытый проект на Python для поддержки?

    EvilsInterrupt
    @EvilsInterrupt
    System programming, Reversing Engineering, C++
    Вливайтесь в сам проект по развитию Python-а. Там же много работы: Перевод, документация, библиотеки, CPython и др. Да. Сразу будет жесть как тяжело, но зато потом, потом будет такая визитная карточка, что достаточно быстро будете находить новую работу.
    Ответ написан
    2 комментария
  • Как выбрать открытый проект на Python для поддержки?

    @bromzh
    Drugs-driven development
    1) Выбираешь проект (для начала небольшой), которым пользуешься сам.
    2) Смотришь список issues
    3) Выбираешь ту, которую сможешь сделать сам (для начала лучше поправить небольшую багу)
    4) Форкаешь проект
    5) Реализуешь issue
    6) Гоняешь тесты
    7) Если всё ок, делаешь пулл-реквест автору
    8) Повторить

    Ну и главное, надо следовать общему стилю всего проекта и про pep-8 помнить.
    Ответ написан
    Комментировать
  • Как создать страницу статических настроек для сайта в админке Django?

    @deliro
    from datetime import timedelta
    
    from django.db import models
    from django.utils import timezone
    
    
    class Settings(models.Model):
        """
        Модель настроек с интерфейсом атрибутов
    
        >>> settings.hello = 'world'
        Сохранит модель с key='hello' и value='world'. Если модель с таким ключом до этого
        существовала (т.е. в данный момент мы меняем значение), запись в БД поменяется и кэш
        инвалидируется.
    
        >>> settings.hello
        'world'
        Получение ключа. Сначала ищет в кэше. Если находит - возвращает, если нет,
        ищет в БД запись с таким ключом (hello). Если находит - кладёт в кэш и возвращает.
    
        >>> del settings.hello
        Удаляет запись с ключом hello из БД и кэша.
        
        Также, ключ и значение можно редактировать из админки (кэш в этом случает также
        инвалидируется)
    
        Пример куска вьюхи, которая может редактировать настройки сайта:
        if form.is_valid():
            settings.phone = form.cleaned_data['phone']
            settings.address = form.cleaned_data['address']
        """
        key = models.CharField(max_length=255, primary_key=True)
        value = models.TextField()
    
        __cache_ttl = 60 * 60
        __cache = {}
        __cache_max_size = 300
    
        def save(self, *args, **kwargs):
            super(Settings, self).save(*args, **kwargs)
            self._cache_invalidate(self.key)
    
        def __setattr__(self, key, value):
            cls = type(self)
            try:
                instance = cls.objects.get(key=key)
                instance.value = value
                instance.save()
            except cls.DoesNotExist:
                cls.objects.create(key=key, value=value)
            self._cache_invalidate(key)
    
    
        def __getattr__(self, key):
            value = self._cache_get(key)
            if value is None:
                cls = type(self)
                try:
                    value = cls.objects.get(key=key).value
                    self._cache_set(key, value)
                except cls.DoesNotExist:
                    value = None 
            return value
    
        def __delattr__(self, key):
            type(self).objects.filter(key=key).delete()
            self._cache_invalidate(key)
    
        def _cache_set(self, key, value):
            if len(self.__cache) < self.__cache_max_size:
                self._cache_force_set(key, value)
            else:
                self._cache_remove_old()
                if len(self.__cache) < self.__cache_max_size:
                    self._cache_force_set(key, value)
    
        def _cache_force_set(self, key, value):
            self.__cache[key] = (
                value,
                timezone.now() + timedelta(seconds=self.__cache_ttl)
            )
    
        def _cache_get(self, key):
            result = self.__cache.get(key)
            if result[1] > timezone.now():
                self._cache_invalidate(key)
                return None
            return result[0]
    
        def _cache_invalidate(self, key):
            del self.__cache[key]
    
        def _cache_remove_old(self):
            now = timezone.now()
            for k, v in self.__cache.items():
                if v[1] < now:
                    self._cache_invalidate(k)
    
    settings = Settings()


    И в контекст процессоры добавить:

    def settings(request):
        return {'settings': settings}


    Ну и в любом шаблоне:
    <title>{{ settings.title }}</title>
    Ответ написан
    7 комментариев