Jsx707
Ну хотя бы на Steam посмотри, у какого процента игр официально стоит Linux?
Если там не стоит официально поддержка Linux то со стимом там с коробки идёт Proton
ffffff
Спасибо за подробный ответ
Jsx707
Главное - запомни, не жди ничего такого, к чему ты привык в Windows. Это совсем, абсолютно другая система с другими возможностями которые тебе возможно даже не снились, но при этом её также можно и возможно в некоторых случаях даже нужно использовать для домашнего использования и программирования. Но придётся привыкать. Есть достаточное количество дистрибутивов что заставят тебя открыть рот от красоты и намтраиваемомти и при этом красоты, однако это другая ОС, совсем другая. Для новичка который имиррировал с Windows может подойти Linux Mint, Elementary OS, Manjaro, KDE NEON
Это напоминание чтобы потом не бежали некоторые на форумы и ТД говоря что все линуксоиды красноглазые, только и делают что гуглят, всё токсики , задроты и ТД. Просто предупреждение что не надо потом ныть что там нет Касперского(я знаю что есть) Чтобы не было зашквара по типу : - Как активировать Linux И ТД
Andrii
Если там не стоит официально поддержка Linux то со стимом там с коробки идёт Proton
Ну... Steam же запускается официально под Linux, можно установить игры, запустить, я так играю 😊
ffffff
Просто слышал много отзывов, одни говорят что говно везде баги, а другие говорят что вообще ультра классно не пожалели
Алексей
Но ты же ещё не программист...
Ну так я же учусь у человек в 34 говорит что переживает что поздно
Jsx707
Ну... Steam же запускается официально под Linux, можно установить игры, запустить, я так играю 😊
Да, но Стим по умолчанию не даст тебе запустить и даже установить игру если у неё не указана официальная поддержка Linux, поэтому открываем настройки, включаем поддержку Proton, выбираем версию и перезапускаем клиент
Andrii
Просто слышал много отзывов, одни говорят что говно везде баги, а другие говорят что вообще ультра классно не пожалели
И что? Понимаешь, у каждого действия есть какая-то цель. Может быть любопытство, может быть менеджер пакетов.
Алексей
Но ты же ещё не программист...
Я кстати молюсь за успех в пятницу прошел скрининг в понедельник жду тестовое на несколько недель. Если сделаю буду программистом😉
Jsx707
Просто слышал много отзывов, одни говорят что говно везде баги, а другие говорят что вообще ультра классно не пожалели
Бани есть везде, но в Linux они открытые и бесплатные и вообще там есть разделение у многих дистрибутивов на Stable/Unstable ветки.
Andrii
Да, но Стим по умолчанию не даст тебе запустить и даже установить игру если у неё не указана официальная поддержка Linux, поэтому открываем настройки, включаем поддержку Proton, выбираем версию и перезапускаем клиент
Ну... спасибо, я думал, умерла так умерла. Правда у меня не так много игр, которые не под Linux. Обычно я смотрю: "О! есть поддержка Linux. Надо поддержать, покупаю и... не играю 😊!"
Andrii
А вообще есть те дистрибутивы у которых стабильность - второе имя и это Debian
Смотря какая стабильность, в принципе NixOS смотрится интересно
Jsx707
Все игры от Valve имеют официальную поддержку, но вот CS:GO у меня шла не так хорошо под Linux
Jsx707
Просто слышал много отзывов, одни говорят что говно везде баги, а другие говорят что вообще ультра классно не пожалели
А вообще Linux настолько крутой что большинство дистрибутивов можно попробовать на реальном железе без установки в LiveCD-режиме
Jsx707
Просто запускается с флэшки и смотришь на набор софта, производительность и ТД
Алексей
Баги есть, но ос не так перегружает систему как даже Вин ХР. баги не критичные
XP поскромнее конечно. Но Линукс уже много лет держится на требовании 1Гб оперативы, винда 7 последний раз выставляла такие минимальные требования
Jsx707
XP поскромнее конечно. Но Линукс уже много лет держится на требовании 1Гб оперативы, винда 7 последний раз выставляла такие минимальные требования
Не правда, смотря о каком дистрибутиве ты говоришь, поставь Ubuntu с GNOME 40 на 1 Гб ОЗУ и тебе будет очень весело
eye=x×s²
та линукс и в 100 мб оперативы впихнуть можно
Jsx707
Arch, Debian 11, Centos 7
Debian 11 тоже смотря с каким окружением рабочего стола
Алексей
та линукс и в 100 мб оперативы впихнуть можно
Я с графическим интерфейсом имею ввиду
Jsx707
Если XFCE то сойдёт ещё может быть
eye=x×s²
Если XFCE то сойдёт ещё может быть
ну так лучше оконники юзать
Алексей
Jsx707
ну так лучше оконники юзать
Ну для опытных пользователей может быть , но выглядит это не очень кстати наверное ... Надо настраивать
Алексей
И потом мало ли что я говорил на заявленных на официальном сайте требованиях
eye=x×s²
Ну для опытных пользователей может быть , но выглядит это не очень кстати наверное ... Надо настраивать
ну перепрывыкнуть нужно, есть оконники в которых просто сочетание клавиш нужно знать да и полетел
Вячеслав
Покажи натианый Покажи что написал peewee
Читая документацию пиви я понял только как соединить две таблицы
Azamat
Читая документацию пиви я понял только как соединить две таблицы
это пробовал? https://stackoverflow.com/questions/22016778/python-peewee-joins-multiple-tables
Шурок
driver_id != driver
Шурок
Вопрос в том что может это внутренний язык ормки так да
Вячеслав
driver_id != driver
_id добавляет орм
Вячеслав
driver_id != driver
она понимает
Шурок
> может это внутренний язык ормки > так да
Шурок
Но нативного запроса я не вижу
Вячеслав
Но нативного запроса я не вижу
Извини что ввел в заблуждение я не верно понял, я думал то имеешь ввиду sql запрос, я понял что сейчас попробую показать
Вячеслав
Azamat
Нет такого не нашел сейчас попробую
В документации по поводу нескольких джоинов тоже есть информация
Azamat
http://docs.peewee-orm.com/en/latest/peewee/relationships.html#joining-multiple-tables
Вячеслав
В документации по поводу нескольких джоинов тоже есть информация
Беда в том что в документации приведена таблица с ключами ко всем остальным, у меня другая ситуация,
Igor
Беда в том что в документации приведена таблица с ключами ко всем остальным, у меня другая ситуация,
Ну первый вопрос возникает ... почему у тебя другая ситуация? почему ты не прописал релейшны? Дай свои модели. Только в коде плиз а не в картинках
Igor
Но если все же влом прописывать релейшны тогда https://docs.peewee-orm.com/en/latest/peewee/relationships.html#joining-on-arbitrary-fields
Вячеслав
Ну первый вопрос возникает ... почему у тебя другая ситуация? почему ты не прописал релейшны? Дай свои модели. Только в коде плиз а не в картинках
from peewee import * db = SqliteDatabase('database.db') class BaseModel(Model): class Meta: database = db class Driver(BaseModel): driver = CharField(unique=True) name = CharField() team = CharField() class Meta: db_table = 'drivers' class StartLog(BaseModel): driver = ForeignKeyField(Driver, backref='start_logs') time_start = TimeField(null=True) class Meta: db_table = 'start_logs' class EndLog(BaseModel): driver = ForeignKeyField(Driver, backref='end_logs') time_finish = TimeField(null=True) class Meta: db_table = 'end_logs'
Вячеслав
Ну первый вопрос возникает ... почему у тебя другая ситуация? почему ты не прописал релейшны? Дай свои модели. Только в коде плиз а не в картинках
ЭТО КОД ПО ЗАППОЛНЕНИЮ import argparse import os from pathlib import Path from peewee import SqliteDatabase from svv_report_main.models import Driver, StartLog, EndLog from svv_report_main.svv_report import read_file, parse_abbr_lines, parsed_start_end_lines DB_FILEPATH = 'database.db' DRIVERS_FILENAME = 'abbreviations.txt' START_FILENAME = 'start.log' END_FILENAME = 'end.log' def create_db(): if os.path.exists(DB_FILEPATH): os.remove(DB_FILEPATH) db = SqliteDatabase(DB_FILEPATH) db.create_tables([Driver, StartLog, EndLog]) return db def separate_data_to_dict(drivers, start, end): drivers = [dict(zip(('driver', 'name', 'team'), driver)) for driver in drivers] start = [dict(zip(('driver', 'time_start'), drive_start)) for drive_start in start] end = [dict(zip(('driver', 'time_finish'), drive_end)) for drive_end in end] return drivers, start, end def get_data_from_files(path): path_dir = Path(path).resolve() drivers = parse_abbr_lines(read_file(path_dir / DRIVERS_FILENAME)) start = parsed_start_end_lines(read_file(path_dir / START_FILENAME)) end = parsed_start_end_lines(read_file(path_dir / END_FILENAME)) return separate_data_to_dict(drivers, start, end) def store_data_to_db(db, data): drivers, start, end = data with db.atomic() as transaction: drivers_id = {} for driver in drivers: driver_obj = Driver.create(driver) drivers_id[driver_obj.driver] = driver_obj.id for time in start: StartLog.create({'time_start': time.get('time_start'), 'driver_id': drivers_id.get(time.get('driver'))}) for time in end: EndLog.create(**{'time_finish': time.get('time_finish'), 'driver_id': drivers_id.get(time.get('driver'))}) def main(path): db = create_db() print('1. Read files') data = get_data_from_files(path) print('2. Store data into db') store_data_to_db(db, data) print('Done') if name == 'main': parser = argparse.ArgumentParser() parser.add_argument('--path', nargs='?', type=str, const='build_report', required=True, help='folder path') args = parser.parse_args() main(args.path)
Igor
Не в коде мне в падляк разбираться ... просто сформирую запрос аналогичный этому. Мне кажется у тебя нет понимания что ты хочешь сделать. Поэтому сорри глубже копать не хочу. print(Driver.select(Driver.driver, Driver.name, Driver.team, StartLog.time_start, EndLog.time_finish).join(StartLog).switch(Driver).join(EndLog)) Если не хочешь свитчить контекст начни с любого из логов print(StartLog.select(Driver.driver, Driver.name, Driver.team, StartLog.time_start, EndLog.time_finish).join(Driver).join(EndLog))
Igor
Спасибо я попробую, у меня нет понимания как это должно работать межу таблицами, потому как думал что все выстроил правильно
если у тебя 2 старта и два финиша ... то ты получишь 4 строчки если у тебя нет финиша а только старт то ты не получишь ни одной строки. Зпрос не выглядит как корректный ну либо я не понимаю что ты делаешь.
Вячеслав
если у тебя 2 старта и два финиша ... то ты получишь 4 строчки если у тебя нет финиша а только старт то ты не получишь ни одной строки. Зпрос не выглядит как корректный ну либо я не понимаю что ты делаешь.
Еще раз спасибо, буду разбираться. Я скинул код запроса которий работал, увы я додумался как сделать только так чтобы была только стартовая таблица, из примеров из доков. Я пробовал так как то описал но немного не так, сейчас затестю и буду разбираться и понимать как это работает если заработает. Я думал что за взаимосвязи отвечают только главная таблица и внешние ключи, но все ни как не давалось вытащить данные.
denz1l
Парни… какой ответ?
Mikhail
Парни… какой ответ?
Первое предупреждение. Для данных вопросов есть флуд-чат в закрепе.
Igor
Старая история - слева направо
Azamat
Посоветуйте ресурсы (книги) по основным паттернам проектирования, я скачал такую, пишут, что ее писали супер пупер погромисты, но примеры в ней для меня немного сложные + код на SmallTalk
ortursucceeh
https://refactoring.guru/ru
Igor
якщо ще тут скажи, как через фор получить значения все, или где почитать как правильно писать это, я не могу их полутить
ну ты их можешь как словари как таплы получить или как именвоанные таплы. Тут зависит как ты хочешь
Вячеслав
ну ты их можешь как словари как таплы получить или как именвоанные таплы. Тут зависит как ты хочешь
query = (Driver.select(Driver.driver, Driver.name, Driver.team, StartLog.time_start, EndLog.time_finish). join(StartLog).switch(Driver).join(EndLog)) for x in query: return x.start_logs.time_start, x.name
Вячеслав
ну ты их можешь как словари как таплы получить или как именвоанные таплы. Тут зависит как ты хочешь
я неверно задал вопрос, изини, я не пому как именно вызывать значения, то как обернуть я понимаю, моя проблема именно в запросе, потому как мне говорит что то нет такого в селекте то нету в модуле
Igor
у меня проблема именно с пониманием этого
query = (Driver.select(Driver.driver, Driver.name, Driver.team, StartLog.time_start, EndLog.time_finish). join(StartLog).switch(Driver).join(EndLog)).namedtuples() for x in query: print(x) print(x.driver, x.name, x.team, x.time_start, x.time_finish) Может быть можно как то и через объекты но я хз. Я первый раз эту библиотеку вижу ;)
Igor
Ты если работаешь как с орм может быть стоит так и работать с ормами тогда ты берешь драйвер ... потом через свойство end_logs можно будет получать все объекты окончания и все объекты начала орм сама будет делать нужыне запросы к базе
Igor
Ну т.е смысл орм чтобы работать с базой как с объектами питона по типу for d in Driver: print(d.id, d.name) for e in d.end_logs: print(e.id, e.driver, e.time_finish) for s in d.start_logs: print(s.id, s.driver, s.time_start)
Igor
а использование всяких квери это уже скорее костыль или оптимизация.
Вячеслав
Igor
ну сделай for d in Driver.select():