LINUX.ORG.RU

Сообщения bryak

 

Оптимальные параметры монтирования + проблемы при commit=600

Форум — Desktop
defaults,noatime,commit=600,data=writeback,barrier=0,journal_async_commit          0       2

При commit=600 при poweroff рабочая станция не выключается. В принципе удобно, 32гб озу, все пишется в оперативку. Раз в 10 минут скидывается на диск. Все эти 10 минут на диск ничего не пишется, диск постоянно не дёргается. Пробовал делать в скрипте выключения перед «shutdown -h now» sync - не помогает. Сейчас сделал commit=60 - вроде всё ок, но хотелось бы commit=600

Кстати, какие еще есть опции оптимальные для ext4?

 

bryak
()

dwm, st свой .nix

Форум — Desktop

У меня dwm со своими патчами и настройками. Я не знаю как лучше сделать. У dwm есть особенность - там после patch надо исправлять кое-какие строки. Делать чистые патчи и потом патчить настройки - не думаю, что это целесообразно. Итак, есть на битбакете полностью работоспособный dwm. Варианты:

  1. тянуть с битбакета(нужен ssh ключ + пароль, который я не знаю(хранится в keepassx). При установке проблематично его будет доставать с keepassx

  2. Формировать tar.gz и класть его внутрь конфигурации(правильно ли это?). Распаковывать и собирать

Какие еще есть варианты?

Если у кого-то есть примеры сборки своего dwm - если поделитесь будет круто:)

 , ,

bryak
()

checkout в мастер. Не ясно почему так

Форум — Development
  1. git checkout 3-some
  2. делаю изменения
  3. git add .;git commit;git push origin 3-some

Далее

  1. git checkout master
  2. git merge 3-some
Updating 5c5e62d..c463210
Fast-forward
 app/apps/dictionaries/urls.py | 40 +---------------------------------------
 1 file changed, 1 insertion(+), 39 deletions(-)
  1. git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean
  1. git add .;git commit;git push origin master
Looking in links: /python-packages
test_upper (test_example.TestExample) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean
Total 0 (delta 0), reused 0 (delta 0)
To bitbucket.org:some-name.git
   5c5e62d..c463210  master -> master

В визуализации и на битбакет нет мерджа ветки в мастер

 

bryak
()

Как спрятать функцию?

Форум — Development

Есть модули, которые подключаются в .bashrc. Есть функции some-A, some-B,some-C,some-D, для их запуска нужна функция some-Z. Но функция some-Z появляется в автодополнении, к примеру:

some-<TAB>
some-A some-B some-C some-Z

Как спрятать some-Z из этого вывода?

 ,

bryak
()

serializers.Serialiser MethodField не могу получить внутри метода данные

Форум — Development

Сериализатор:

class GenderSerializer(serializers.Serializer):
    name = serializers.SerializerMethodField()

    def get_name(self, obj):
        print("------------------")
        print(obj)
        print("------------------")
        
        return "aaa"
        # return _(obj.name)

Во вьюхе:

serializer_gender = GenderSerializer(data=[{'id': 1, 'name': 'GENDER_MAN'}, {'id': 2, 'name': 'GENDER_WOMAN'}], many=True)
serializer_gender.is_valid(raise_exception=True)

out:

------------------
{}
------------------
------------------
{}
------------------

 , ,

bryak
()

translate choice field

Форум — Development

Ок, есть

https://stackoverflow.com/questions/62045788/drf-serializer-return-translated-choice-field-value

во вьюхе я делаю:

language = kwargs.get('lang')
 translation.activate(language)

и у меня не возвращаются переведенные field

message сгенерированы

msgid "gender_man"
msgstr "Мужчина"

msgid "gender_wooman"
msgstr "Женщина"
в модели вот так:
    gender_man = 0
    gender_wooman = 1
    GENDER_CHOICES = (
        (gender_man, _('gender_man')),
        (gender_wooman, _('gender_wooman')),
    )
    name = models.TextField(choices=GENDER_CHOICES, verbose_name=_("Gender"))

```python
middleware подключен, LOCALE_PATHS настроен
MIDDLEWARE_CLASSES = [
    'django.middleware.locale.LocaleMiddleware',
]
print(request.META.get('HTTP_ACCEPT_LANGUAGE'))
ru
>>> with translation.override('ru'):
...     translation.gettext('gender_man')

'Мужчина'

 , ,

bryak
()

Как работать с manytomany?

Форум — Development
class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

    def __str__(self):
        return self.name

class Author(models.Model):
    name = models.CharField(max_length=200)
    email = models.EmailField()

    def __str__(self):
        return self.name

class Entry(models.Model):
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
    headline = models.CharField(max_length=255)
    body_text = models.TextField()
    pub_date = models.DateField()
    mod_date = models.DateField()
    authors = models.ManyToManyField(Author)
    number_of_comments = models.IntegerField()
    number_of_pingbacks = models.IntegerField()
    rating = models.IntegerField()

    def __str__(self):
        return self.headline
>>> from apps.dictionaries.models import Entry,Blog,Author
>>> Entry.objects.all().values()[0]

out:

{'id': 1, 'headline': 'Entry_headline1', 'pub_date': datetime.date(2020, 7, 9), 'number_of_comments': 1, 'mod_date': datetime.date(2020, 7, 12), 'rating': 1, 'body_text': 'Entry_body_text1', 'blog_id': 1, 'number_of_pingbacks': 1}

Т.е нет field ‘authors’

Далее, если я явно указываю field authors, тогда получаю следующее:

>>> Entry.objects.all().values('authors')[0]

out:

{'authors': 2}

Как мне выбрать в нормальном виде? Т.е

 {'id': 1, 'headline': 'Entry_headline1', ..., 'authors': ['Author_name1'], ['Author_name2']

 , ,

bryak
()

delete

Форум — Development

delete

bryak
()

Замена ключей в выборке

Форум — Development

Есть Выборка. Его следующая выборка:

queryset = Person.objects.filter(id=1)
<QuerySet [{'id': 1, 'some_param_id': 1, 'some_param_2': False,}]>

Есть таблица

class SomeTable(models.Model):
    name = models.PositiveSmallIntegerField(
        validators=[MinValueValidator(15), MaxValueValidator(250)],
        verbose_name="some",
        unique=True
    )

в Person поле

some_param_id = models.IntegerField(validators=[MinValueValidator(1)], blank=True)

т.е не ForeignKey, prefetch_related не получится сделать

Мне нужно в первой выборке заменить значение 1 ключа some_param_id на SomeTable__name. Как это сделать?

 ,

bryak
()

Как это лучше переписать с lambda?

Форум — Development
param_fields = request.GET.get('fields') or None
if param_fields is not None:
   param_fields = list(param_fields.split(","))

Чтобы два раза не создавать param_field

 ,

bryak
()

Сделать ремап caps lock --> ctrl, а сам ctrl отключить

Форум — Desktop
setxkbmap -layout us,ru -option "grp:shift_toggle,grp_led:scroll",ctrl:nocaps -variant ",winkeys"

Есть еще ctrl:swapcaps, который меняет местами ctrl и caps. А как сделать так, чтобы caps == ctrl, а сам ctrl отключить? Чтобы приучить себя 100% нажимать caps(как ctrl)?

 ,

bryak
()

job сервер

Форум — Development

Есть задача организовать отложенную запись данных(чтобы endpoint’ы не захлёбывались.

Как пример: Есть chat-data, который имеет апи записи и чтения сообщений. Есть entrypoint chat, который предоставляет клиенту возможность писать другому пользователю сообщения и читать сообщения, которые адресованы этому пользователю.

Если писать и читать сообщения напрямую, есть несколько узких мест:

  1. при большой нагрузке chat-data и chat могут захлёбываться
  2. при отключении chat и\или chat-data сообщения не будут записаны в базу

Это просто пример, это касается всех действий пользователей, которые выполняют какие-то действия(события). Как это пофиксить? Скорей всего, необходим какой-то job-сервер, в который будут прилетать job’ы. Эндпоинт или entrypoint(?) подписывается на rabbitmq очередь, в которой он будет получать события «есть задача». Далее эндпоинт или энтрипоинт идет на job-сервер, блокирует записи, над которыми работает и начинает выполнять job’ы. Допустим в 8 потоков(настраиваемо должно быть). И выполняет их до тех пор, пока их не будет ноль. После выполнения - производится удаление job’ов.

Т.е получается, что chat chat-data могут быть отключены. При этом сообщения падают в job-сервер. Как только chat chat-data включаются, они заходят на job-сервер и начинают оттуда брать job’ы. Это правильно архитектурно? Или как-то по-другому надо делать?

Вопрос по job-серверу. Rabbitmq позволяет изменять messag’и? Т.е я делаю queue, туда прилетают job’ы. В отдельном queue прилетают нотификации о наличие job’ов. Эндпоинт или энтрипоинт выбирает несколько сообщений, блокирует их и начинает выполнять. По окончанию - удаляет их из queue. Rabbitmq позволит так делать? Или делать отдельный job-сервер с апи добавления задач и записи их, скажем, в postgresql?

 , , ,

bryak
()

Рабочее место эмигранта

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

В 2018 году в октябре месяце я эмигрировал в Киев из ЛНР. С начала всех этих событий я сначала поехал в Москву, потом пришлось вернуться по некоторым причинам. Пожил 1.5 года в ЛРН и понял, что нужно оттуда уезжать. Луганская область и до войны была унылейшим местом, по специальности не было не одной вакансии. А после и подавно. Все друзья поразъезжались кто куда. Кто в РФ, кто в Украину. Круг общения потерялся. Вот, я уже в Киеве второй год. Впечатления? Климат лучше, чем в Москве. В Москве с 918мм ртутного столба и постоянными дождями и пасмурной погодой ощущал себя как на вершине Эвереста. В Киеве климат +- такой же, как дома. Чуть мягче(минус 5-7градусов от Донбасса). Живу недалеко от Днепра(кстати, нужно будет в июле ходить купаться. До набережной 700м.).

Как приехал и снял квартиру(1-ку), в ней ничего не было. Вообще ничего, кроме мебели на кухне и в комнате(диван, шкаф). Все мелочи пришлось покупать. Веники там всякие, ёршики, вантузы, шторы(чуть с ума не сошел, пока выбрал и купил. Два раза ездил передавал инфу о размере).

Компьютер брал с собой(внутренности системного блока + монитор + клавиатура + мышь + отвертки и мелочевка типа переходников). Как приехал и снял квартиру - купил корпус за 150грн cooler master и стол. Стол мне нравится небольшого размера ака парта, чтобы на нём было только нужное и ничего лишнего. Чтобы не было бардака. Колонки купил за 100грн б\у, они у меня озвучивают фильмы(телевизора нет). Роутера нет. У меня wifi раздает сетевуха в компьютере на телефон(пожалел денег на роутер). Монитор старый philips 200ws. Брал старый, т.к не знал, он доедет в Киев или не доедет(дома стоит dell 2412). Стул купил самый дешевый офисный. У которого проекает газлифт и приходится постоянно его поднимать. Дома остался ikea markus.

По ПО: с того времени, когда я первый раз постил в галерею - ничего не поменялось. Всё тот же dwm. Патчи следующие:

1-dwm-autostart-20161205-bb3bd6f.diff
2-dwm-systray-20180314-3bd8466.diff
3-dwm-noborder-20170207-bb3bd6f.diff
4.dwm-pertag-20170513-ceac8c9.diff
5-dwm-cfacts-6.1.diff
6-dwm-cyclelayouts-20180524-6.2.diff

В панель пишет python скрипт, который имеет конфиг

тип команды sh\function
таймаут
имя команды\функции

Т.е каждые данные в панельке пишутся с разными таймаутами, что есть удобно. Если sh командой невозможно вывести данные, тогда делаю функцию(как например W(weather), которая что-то откуда-то берет и выводит в панельку

Были попытки найти что-то лучше, но все эти телодвижения не увенчались успехом. fvwm - не умеет тайлинг на несколько мониторов. xmonad не запускает из трея keepassx. awesomewm - вечное изменение api. i3 не смог понять как настроить в нем обычный тайлинг и мне не понравился i3-status. Bspwm не прижился, Notion хорош, но там нужно серьезно вникать в него. Qtile никак не приедет в stable(debian). Stumpwm - manual tiling - мне больше нравится dynamic tiling. Остановился на dwm, потому что:

  1. простое как топор
  2. стабильно работает
  3. стабильно работает

Тот же awesome, который на debian’e работает(пару часов настраивал), не запустился на gentoo. Что опять намекает на стабильность этого продукта. Иногда хочется в wm иметь возможность поскриптить, но сталкиваясь с xmonad и awesome - сразу улетучивается это желание.

Запуск всех скриптов при старте делает dwm из

~/.dwm/scripts/startup/daemon/
~/.dwm/scripts/startup/client/

Музыку перестал слушать на компьютере, слушаю на плеере fiio x1 2gen. Музыка лежит вся локально

du -sh /mnt/d/audio/

184G    /mnt/d/audio/

Экспорт в плеер делаю через bash скрипт посредством rsync. Фильтрую музыку на компьютере. Rsync’ом прилетают изменения на плеер. Наушники yamaha mt-8, akg k452

Есть своё меню на dmenu, с помощью которого делаю shutdown\reboot\standby и запускаю всякие свои аплекухи, которых нет в стандартном меню dmenu

Три пустых терминала и mc тут –> https://postimg.cc/gallery/w3H6nKX

Шрифт в панели dwm - terminus, в консоли Consolas

С прошлого года переехал с соплями и слезами с vim на emacs. Пришлось попейсать на elisp, чтобы были удобности. Переехал с ycmd на lsp. В принципе работает, доволен. Изучил java + kotlin. Потихоньку разбираюсь с девелопом под android(вы могли видеть всякие топики, связанные с kotlin). Перехал с mplayer2 на mpv. Прикрутил shader’ы всякие и пару скриптов на lua. Всё удобно и не нужен smplayer в качестве гуёв.

В dwm особо изменений не вносил, окроме

        // change layout in tags
        if(i == 1 || i == 4) {
          // set monocle
          m->pertag->ltidxs[i][0] = m->lt[1];
        } else {
          m->pertag->ltidxs[i][0] = m->lt[0];
        }
        m->pertag->ltidxs[i][1] = m->lt[1];

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

Клавиатуру подсвечивает лампочка. Печатаю не глядя на клавиатуру, но в shortcut’ы(в основном в emacs) иногда можно промахнуться. Чтобы это не допустить, нужно подсвечивать клавиатуру.

В последнее время начали чесаться руки перейти с debian stable на что-то другое(с 2014 переехал с gentoo на debian). Centos на десктопе врядли получится т.е там упор на стабильность и сервера, поставил недавно gentoo. Визуально быстрее, но мелких косяков, которые надо исправлять - масса. Начиная от неработающего backspace в emacs, сглаживания шрифтов и всяких линтеров. Всё решаемо, но на это надо пару недель. Написать несколько ебилдов, детально просмотреть use флаги на нужные аплекухи. Решил заняться этим со следующего года. Так же были телодвижения в nixos. На прошлом релизе собрал минимальный конфиг(в котором так и не смог поднять hostapd + dnsmasq, чтобы раздавать wifi на телефон - а это важно). Недавно апнулся новый релиз nixos, на виртуалке поднял, подсунул свой рабочий конфиг с прошлого релиза и конфиг не поднялся :). В общем, решил остаться пока что на debian

Клавиатура kv300h. Считаю ее безальтернативным вариантом. На фото есть грязь на боковых гранях. Не отмывается. При попытке чистить боковые грани - клавиши нажимаются. Эта клавиатура живет 5 год. Прошлая сдохла от…влаги. Боится она этого очень. Имейте ввиду. С мокрыми руками лучше не работать на ней. Есть потертости на возле клавиш вверх и вбок. Это я на баше пролистывал команды и перемещался по тексту, пока не перешел на emacs и не узнал про C-f/b M-f/b + C-p/b. На следующей клавиатуре таких потертостей не будет :)

Так же переехал с deluge на rtorrent(опять, 4 года назад на deluge перешел). Посмотрел ps_mem и ужаснулся, что потребление у deluge до 8гб. У rtorrent: sudo ps_mem |grep rtorrent

191.2 MiB + 920.5 KiB = 192.1 MiB       rtorrent main

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

В общем, как-то так и живем :)

 

bryak
()

Вопрос про охлаждение

Форум — Desktop

Есть системный блок

https://i.ibb.co/3CpJDt0/IMG-20200702-190542.jpg

https://i.ibb.co/ZX8tWZP/IMG-20200702-190554.jpg

https://i.ibb.co/Ct10Z5H/IMG-20200702-190559.jpg

https://i.ibb.co/gStTtyN/IMG-20200702-190839.jpg

Передняя часть у корпуса - сплошная сетка с фильтрами. Но у боковушки есть вентиляция и тянет воздух оттуда, где сопротивление потоку ниже т.е не с передней части, а с боковой крышки. Я вот думаю, может залепить скотчем вентиляционные отверстия на боковой крышке? Тогда воздух будет тянуть с торца передней части корпуса т.е через фильтры

  1. Меньше пыли
  2. Меньше шума от фана видеокарты и процессора
  3. Прохладный воздух будет проходить через hdd, охлаждая его

Как думаете, стоит закрывать вентиляционные отверстия скотчем на боковой крышке?

PS: сейчас скотч на боковой крышке - резонансы крышки убрал

 

bryak
()

git submodule after clone

Форум — Desktop

Сделал я проект, скажем some-data. Есть отдельная репа common. Мои действия:

1. Создаю репу some-data
2. cd some-data
3. git init
4. change .git/config
5. git clone git@bitbucket.org:some_name/common.git
6 .git submodule add git@bitbucket.org:some_name/common.git;git submodule init
7. git add .;git commit;git push origin master
8. cd ..; rm -rf some-data

Далее я хочу проверить, всё ли ок

1. git clone --recurse-submodules -j8 git@bitbucket.org:some_name/some_data.git
2. cd some-data
ls -a common
.  ..  bash  .git  .gitignore  python

cat common/.git
gitdir: ../.git/modules/common
cd common
touch 1; echo "wefwewwe" > 1
git add .;git commit;git push origin master
error: unable to push to unqualified destination: HEAD
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.
error: failed to push some refs to 'git@bitbucket.org:some_name/common.git'

  1. cd ..
  2. git add .;git commit;git push origin master

коммит проходит, но в репозитории common нет изменений, а в коммите some-data примерно такое:

-Subproject commit f971964634505ed3fd844675da0bd908c7d3a5a1

+Subproject commit 39ca9270f87da8276a8bd7e66f744f9c30e7352a

 

bryak
()

Хочу поставить gentoo в /home/gentoo

Форум — Desktop

Как мне правильно примонтировать / в fstab?

UUID=some_uuid /home           ext4    defaults,noatime,commit=60,data=writeback,barrier=0,journal_async_commit          0       2

/home/gentoo /               none    bind,noatime,commit=60,data=writeback,barrier=0,nobh,journal_async_commit,errors=remount-ro 0       1

Вот так, всё верно?

 ,

bryak
()

emacs backspace не работает

Форум — Desktop

По backspace вызывается C-h

 ,

bryak
()

как поставить mpv с deb-multimedia.org?

Форум — Desktop

cat /etc/apt/sources.list.d/multimedia.list

# multimedia
deb http://www.deb-multimedia.org buster main non-free

cat /etc/apt/apt.conf.d/99enable-unsecure-repos

# Acquire::Check-Valid-Until "false";
Acquire::AllowInsecureRepositories "true";
# Acquire::AllowDowngradeToInsecureRepositories "true";

apt-get update

apt-get install -t deb-multimedia mpv

Reading package lists... Done
E: The value 'deb-multimedia' is invalid for APT::Default-Release as such a release is not available in the sources

 , , ,

bryak
()

Если генту собрать на виртуалке, ее придется пересобирать на реальной системе?

Форум — Desktop

Если я соберу генту в virtualbox’e и перенесу ее в реальную систему, то мне нужно будет ее полностью пересобирать? Т.е она в виртуалке соберется без полного перечня CFLAGS и тд

 

bryak
()

pomodoro аплекуха

Форум — Desktop

Разыскивается pomodoro timer, чтобы умел сворачиваться в трей, ничего лишнего и не был привязан к gnome/kde. Пакет к emacs не предлагать т.к он у меня не daemon и поэтому он может выключаться. Дистрибутив debian. Скрипты на баш с inotify не предлагать :)

 

bryak
()

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