nixos python-pip как поставить?
Сабж
Сабж
Можно ли использовать celery без rabbitmq и redis? Чтобы работало исключительно с базой данных. celery-beats
Есть endpointA, приходит запрос на добавление записи. В таблице есть hook на post_save
@receiver(post_save, sender=Some)
def some_create(sender, instance, created, **kwargs):
...
В этом хуке some_create вызывает API endpointB. Допустим, endpointB лежит. Что делать? Нужно же куда-то записать эти данные, а потом, когда endpointB поднимется, сделать call API –> endpointB. Как правильно это организовывается? Чтобы я какой-нибудь велосипед не изобретал:)
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?
У меня dwm со своими патчами и настройками. Я не знаю как лучше сделать. У dwm есть особенность - там после patch надо исправлять кое-какие строки. Делать чистые патчи и потом патчить настройки - не думаю, что это целесообразно. Итак, есть на битбакете полностью работоспособный dwm. Варианты:
тянуть с битбакета(нужен ssh ключ + пароль, который я не знаю(хранится в keepassx). При установке проблематично его будет доставать с keepassx
Формировать tar.gz и класть его внутрь конфигурации(правильно ли это?). Распаковывать и собирать
Какие еще есть варианты?
Если у кого-то есть примеры сборки своего dwm - если поделитесь будет круто:)
Далее
Updating 5c5e62d..c463210
Fast-forward
app/apps/dictionaries/urls.py | 40 +---------------------------------------
1 file changed, 1 insertion(+), 39 deletions(-)
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
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
В визуализации и на битбакет нет мерджа ветки в мастер
Есть модули, которые подключаются в .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 из этого вывода?
Сериализатор:
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:
------------------
{}
------------------
------------------
{}
------------------
Ок, есть
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')
'Мужчина'
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']
delete
Есть Выборка. Его следующая выборка:
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. Как это сделать?
param_fields = request.GET.get('fields') or None
if param_fields is not None:
param_fields = list(param_fields.split(","))
Чтобы два раза не создавать param_field
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)?
Есть задача организовать отложенную запись данных(чтобы endpoint’ы не захлёбывались.
Как пример: Есть chat-data, который имеет апи записи и чтения сообщений. Есть entrypoint chat, который предоставляет клиенту возможность писать другому пользователю сообщения и читать сообщения, которые адресованы этому пользователю.
Если писать и читать сообщения напрямую, есть несколько узких мест:
Это просто пример, это касается всех действий пользователей, которые выполняют какие-то действия(события). Как это пофиксить? Скорей всего, необходим какой-то 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?
В 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, потому что:
Тот же 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гб, но всё же лучше использовать софт, который более экономно расходует ресурсы.
В общем, как-то так и живем :)
Есть системный блок
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
Передняя часть у корпуса - сплошная сетка с фильтрами. Но у боковушки есть вентиляция и тянет воздух оттуда, где сопротивление потоку ниже т.е не с передней части, а с боковой крышки. Я вот думаю, может залепить скотчем вентиляционные отверстия на боковой крышке? Тогда воздух будет тянуть с торца передней части корпуса т.е через фильтры
Как думаете, стоит закрывать вентиляционные отверстия скотчем на боковой крышке?
PS: сейчас скотч на боковой крышке - резонансы крышки убрал
Сделал я проект, скажем 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'
коммит проходит, но в репозитории common нет изменений, а в коммите some-data примерно такое:
-Subproject commit f971964634505ed3fd844675da0bd908c7d3a5a1
+Subproject commit 39ca9270f87da8276a8bd7e66f744f9c30e7352a
Как мне правильно примонтировать / в 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
Вот так, всё верно?
По backspace вызывается C-h
| ← назад | следующие → |