Задать вопрос
vk.com/snaiper04ek353
Контакты
Местоположение
Россия

Достижения

Все достижения (3)

Наибольший вклад в теги

Все теги (45)

Лучшие ответы пользователя

Все ответы (54)
  • На собеседовании сказали, что не все функции - замыкания. Так ли это?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    парень. Всё равно ты будешь использовать ту терминологию, которую используют на работе. Если там под замыканием подразумевается замыкание с инкапсуляцией, то после того как тебе сказали что "твой код - говно", было два варианта: 1)поговорить о терминах либо со ссылкой на официальную документацию, либо вместо с собеседником вывести определение исходя из смысла понятия, не прибегая к авторитетам вообще. 2) Сказать о том, что прочитал такое определение у %авторитет%, и сказать, что готов использовать то, которым пользуетесь вы на работе.

    По поводу выведения определения: есть смысл замыкания. Его нужно чётко озвучить согласиться с ним. Например, ты хочешь сказать, что смысл замыкания это ничто иное как "повесить ссылку на переменную с которой окончена работа до объявления функции, для сейва от мусорщика". Спросить - согласен ли с этим собеседник, или есть дополнения/возражения. Если согласен - значит "функция, являющаяся замыканием - любая функция, которая ссылается на переменную вне своего тела, в случае если переменную иначе удалил бы сборщик." Далее нужно договориться, что "иначе удалил бы" можно опускать как лишнюю сущность, которая усложняет определение такой функции, и упростить до - "функция, ссылающаяся на переменную вне своего тела."

    Есть второй вариант: собеседник тебе говорит: "Ахтунг! Замыкание используется не просто для того, чтобы спасти переменную от удаления! Это ещё и способ сокрытия данных: замыканием можно использовать локальную глобальную переменную, вместо того чтобы использовать просто глобальную переменную, или же городить отдельный класс."
    В этом случае всё твое определение идёт в пешее эротическое, и ты соглашаешься, что для этого придётся обернуть функцию в функцию, чтобы у тебя была функция с локальными переменными, которые будут глобальными для этой функции в функции.
    Ответ написан
    13 комментариев
  • Я начинающий прогер и хочу написать игру, какой движок использовать?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    Сам недавно задавался таким вопросом. Вывод простой - если 2д игра - лучше всего Godot.
    Если не 2д, а 3д или псевдо 2д (как дьябло 3 - вид сверху, но всё 3дшное), то тут только Unreal Engine 4. Единственное почему юнити лучше - C#, следовательно чуть более низкий порог входа.
    НО, учитывая твои слова " у меня куча свободного времяни, то я могу выучить любой язык," и "ищу максимально удобный и практичный движок" у тебя просто нет выбора - однозначно unreal engine и проекты на C++
    На ютубе найди канал "институт марксизма-ленинизма" (это не шутка), там уроки по анриал энжин. Там же есть сравнение юнити и анриал.
    На ютубе есть Тимофей Хирьянов, он преподаёт в МФТИ и записывает лекции для студентов (ну, и заодно для остальных зрителей ютуба), можешь смело его курсы смотреть, он преподаёт с++ и python, все лекции пронумерованы, там лежит параллельно циклы лекций с разных годов. Разберёшься уже сам там)))
    На анриал энжин раздают ассеты каждый месяц, так что пока думаешь в любом случае заходи в Epic Games Store, ставь движок и забирай бесплатные ассеты с раздачи, потом пригодятся.
    Ответ написан
    2 комментария
  • Почему не могу запустить проект в Unity?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    У тебя должны быть права на папку, куда ты создаёшь проект.
    Создай в другом месте.
    Так же юнити пишет логи, troubleshooting -> open log folder
    Если по-прежнему не удастся создать, то иди в логи и ищи ошибки
    Ответ написан
    Комментировать
  • Как написать красивый и понятный код?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    Красивый и понятный код = читаемый код.
    Нагугли что такое самодокументирующийся код.

    Я сам начинающий, но с чего бы я начал это распутывать:
    area[0][0]["text"] - тут у тебя куча раз написано примерно одно и то же, меняется только 2 числа.
    Легчайшим образом переносится в функцию:
    def x_here(x,y):
        if area[x][y][text] == X:
            return True
        else:
            return False


    тогда одна строка в winner() уже будет вот так выглядеть:

    if x_here(0,0) and x_here(0,1) and x_here(0,2):
        return "X"


    тут у тебя снова есть повторяющиеся элементы
    во-первых, координаты для победы заранее известны
    win_condition_topleft_to_botright = ((0,0),(0,1),(0,2))

    у нас есть кортеж с кортежами. Если в этих координатах везде окажутся иксы - нужно вернуть X (победа). У этого кортежа понятное название (слева вверху к низу справа)

    далее нам нужна функция которая примет это условие победы и проверит его:
    def check_win_condition(first, second, third):  
        """на вход три кортежа, являющиеся координатами игрового поля"""
    
        if x_here(*first) and x_here(*second) and x_here(*third):
            return "X"
    
    def winner():
        check_win_condition(*win_condition_topleft_to_botright)
        check_win_condition(*win_condition_2)
        check_win_condition(*win_condition_3)
        check_win_condition(*win_condition_4)


    И... видишь повторяющиеся элементы? 4 одинаковые строки, в которых меняется только один параметр?
    Ah shit, here we go again

    Ты знаешь что делать. Действуй.
    Ответ написан
    1 комментарий
  • Как бороться этой ошибкой?

    snaiper04ek
    @snaiper04ek
    Не стреляйте в эникея, он админит как умеет
    гугл сказал что это баг, связанный с видеодрайвером.
    работающий для большинства совет:
    sudo nano /etc/default/grub ( пояснение: sudo - выполнение программы от админа, не нужно писать если ты под рутом, nano - название текстового редактора, возможно в твоей системе другой текстовый редактор, тогда нужно написать его имя)
    когда откроется файл, найти в нём строку GRUB_CMDLINE_LINUX_DEFAULT и отредактировать, чтобы выглядела вот так:
    GRUB_CMDLINE_LINUX_DEFAULT="video=SVIDEO-1:d quiet splash"
    сохранить файл (в нано нажать ctrl+o для сохранения, и затем ctrl+x для выхода)
    sudo update-grub
    sudo reboot
    после перезагрузки отпишись, если помогло. Ну если не помогло, тоже пиши.
    И когда обращаешься за помощью, пиши название системы, в которой работаешь, и что привело к этой ошибке, так больше шансов получить результативную помощь.
    Ответ написан
    1 комментарий

Лучшие вопросы пользователя

Все вопросы (29)