C# for money. Rust for soul
Местоположение
Россия, Свердловская обл., Екатеринбург

Достижения

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

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

Все теги (570)

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

Все ответы (2598)
  • Как улучшить код?

    vabka
    @vabka
    Токсичный шарпист
    Просто сделай словарь, где ключом будет номер серии, а значением - все данные о ней, включая название и прочее.
    Если словарь получится слишком большим, то сохрани данные в бд. (но в этом нет смысла, тк инфа о всех сериях one piece должна спокойно уместиться в 1мб, а если добавить описания каждой серии и кадры - тогда да, будет много)
    Не гоже постоянно в цикле проходить по всему списку и парсить строки.
    for name in series_names:
                    value = name.split(" ")

    Делать if int(user_message) == int(value[0]) тоже нет смысла - можно просто сравнивать строки.
    И тем более нет смысла на каждый запрос читать весь файл with open('series.txt', 'r') as series_names:

    Ссылки следует начинать с https:// - так телега сразу сделает её кликабельной. Ссылки в принципе тоже можно кэшировать, вместо со всеми остальными данными - она не меняется + есть шанс, что когда-то ссылка изменится и уже не будет номером серии.
    link = f'jut.su/one-piece/episode-{user_message}.html'


    Тоесть в итоге будет как-то так:
    # Где-то в main
    global one_piece_episodes
    one_piece_episodes = {}
    with open('series.txt', 'r') as episodes_names:
      for episode_name in episodes_names:
        value = name.split(' ')
        key = value[0]
        name = value[1]
        link = f'https://jut.su/one-piece/episode-{key}.html'
        one_piece_episodes[key] = { "number": key, "name": name, "link": link }

    А потом уже при обработке сообщений:
    @bot.message_handler(content_types=['text'])
    def get_name(message):
        episode = one_piece_episodes.get(message.text)
        if episode != None:
            bot.send_message(message.chat.id, f'{episode["name"]}\n{episode["link"]}')

    В идеале стоит для инфы о сериях создать класс, чтобы не обращаться к вложенным словарям, но так уже лучше будет по всем параметрам.

    PS: Хабр Q&A не является сервисом для проведения код-ревью, и за подобные "вопросы" можно словить бан по причине 3.2, 3.7, 5.12
    Ответ написан
    2 комментария
  • Kestrel на боевом сервере - альтернатив нет?

    vabka
    @vabka
    Токсичный шарпист
    Наружу его пускать нельзя, должен быть nginx

    Вообще-то можно.
    Просто могут возникнуть сложности с балансировкой нагрузки и кэшированием.
    И nginx и Kestrel - веб серверы. Их даже иногда сравнивают.

    Да, только kestrel - это встраиваемый веб-сервер. Наподобие netty и jetty с жавы, или http стека с nodejs и go.
    Но nginx это на порядки более надежный и проверенный сервер, с кучей плагинов и настроек.

    Интересно, как вы так посчитали на порядки более высокую надёжность?)
    Плагинов и настроек в kestrel тоже навалом, только там вся настройка происходит кодом.
    Какую роль он играет и почему без него нельзя обойтись?

    Если опустить вариант с IIS, то kestrel в принципе единственный доступный вариант, тк nginx просто не умеет напрямую с aspnet общаться.
    CGI в дотнете нет, и слава богу
    Если без kestrel, то есть ещё вариант с http.sys на винде

    PS: страница из документации про то, когда стоит использовать kestrel с nginx, а когда можно обойтись одним кестрелом:
    https://docs.microsoft.com/en-us/aspnet/core/funda...
    Кратко: можно не брать обратный прокси, но тогда потеряешь немного в гибкости, например нельзя будет несколько сайтов на одном порту держать.
    Ответ написан
  • Как безболезненно перейти с Python на Rust?

    vabka
    @vabka
    Токсичный шарпист
    Как безболезненно перейти с Python на Rust?

    Учиться, учиться, учиться.
    1) Python медленный

    Питон на удивление быстрый, особенно если использовать PyPy, а сильные тормоза возникают только в особых случаях.
    2) В python нет адекватного управления памятью

    Автоматический GC - это один из самых адекватных способов управления памятью, который только придумывало человечество.
    3) В python мне приходится испльзовать кучу мегабайт библиотек (я чувствую себя тупым и бесполезным при импортировании библеотек)

    А вы импортируйте их с мыслью "я не хочу тратить кучу времени на реализацию этого всего с нуля"
    В расте вам точно также придётся импортировать кучу библиотек, как и в любом другом языке, где есть библиотеки.
    4) Python кажется игрушечным языком

    Зря так думаете. Python очень мощный.
    5) Python не подходит род микроконтроллеры (micropython - просто игрушка)

    Раст+МК для новичков тоже очень страшная вещь - посмотрите на вопросы от товарища eegmak, например, чтобы в этом убедиться.
    Micropython - вполне себе production ready инструмент для тех случаев, когда его хватает, и не нужно ужиматься в очень дешёвые чипы.
    6) Проблемы из-за GIL'а

    С какими именно проблемами вы столкнулись на практике?)
    Скорее всего, их можно решить и менее радикальными методами.

    ИМХО: вы услышали от кого-то что Rust-топ язык, а Python - игрушечный, а настоящие программисты используют ручное управление памятью и сами реализовывают всякие сложные алгоритмы и протоколы.
    Хотя обычно ещё пишут, что настоящие программисты пишут только на C, только в виме, и никогда не ищут ответы на русскоязычных форумах.

    Если я прав - задумайтесь ещё раз, какую именно вашу проблему может решить раст, которую не может решить Python.

    Если я вас не отговорил - берите rustbook (лучше способа не придумали ещё).

    Если хочется перейти на другой язык, не обязательно раст - посмотрите в сторону других языков со сборкой мусора - например C#, Go, или D. Их все можно использовать в том числе и на МК, с разной степенью извращений.
    Ответ написан
  • Ошибка с git что слушчилось?

    vabka
    @vabka
    Токсичный шарпист
    1. Генерируешь ключ. Для этого в консоли надо ввести
    ssh-keygen -t ed25519
    На вопросы всегда отвечай ентером, ничего не пиши.
    6064a4dd0cc01593209113.png
    2. Потом пиши консоли
    cat ~\.ssh\id_ed25519.pub
    Вывод этой команды копируй и иди на гитхаб.
    6064a56e4e389328241008.png
    3. На гитхабе иди в настройки:
    жмёшь на свою аватарку справа вверху и потом выбирай пункт settings в выпадающем меню
    Потом выбираешь раздел SSH and GPG Keys
    Создаёшь новый SSH Key
    6064a5ac5e236897883208.png
    В название пиши что хочешь
    В тело вставляй то, что скопировал ранее.
    6064a60e7d605276301726.png
    4. Профит
    Ответ написан
    Комментировать
  • Как запустить проект на C# в Visual studio code?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    1. Устанавливаешь .net 5 SDK

    2. Устанавливаешь все нужные плагины:


    3. Создаёшь новый проект по гайду
    4. Открываешь в vs code папку с проектом
    5. Жмёшь на кнопку отладки и запускаешь
      (при первом запуске он может напомнить, что в отладчике есть декомпилятор, который нелегально использовать на чужих приложениях - соглашаемся с этим)
      603d3bb386701819998214.png
      Если что - выбираем .net Core
      603d3bf3168e0691109502.png
      В итоге появится нужная кнопка
      603d3c19c5f27607073624.png


    Чтобы запустить без отладки - нужно будет покопаться в launch.json, либо использовать консоль

    PS: Вообще, советую пользоваться полноценной студией - может она на первый взгляд и пугает, но она сильно удобнее, чем vs code. (ну и в ней всё работает из коробки, что важно для новичков)
    PPS: А ещё существует Rider - для профессионального разработчика он стоит копеечные 15$ в месяц, а для школьника или студента вообще бесплатен. При этом он даёт целую кучу полезных инструментов, особенно для геймдева, если он вам интересен.
    Ответ написан
    1 комментарий

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

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