Задать вопрос
  • Как преобразовать вложенные словари в объекты с типами для API-обёртки?

    Wispik
    @Wispik
    можно использовать pydantic
    и потом описать модели, согласно нужным типам данных
    Ответ написан
    Комментировать
  • Как лучше устроить сервер для мессенджера?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Лучше для чего именно? Для передачи сообщение между сервером и клиентом в вебе уже давно придуманы веб-сокеты, поэтому лучше выбрать ЯП/фреймворк, где реализована адекватная поддержка данного протокола и есть библиотеки. HTTP можно, конечно, использовать - но только с костылями. Вот только, зачем? А если не веб - то можно брать любой бинарный сериализатор и сразу использовать голые сокеты (впрочем и веб-сокеты и вне веб тоже нормальное решение).
    Ответ написан
    2 комментария
  • В какую сторону учиться, QA, front end или back end для реалистичного входа?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Ок, обо всём по порядку

    IT в самом худшем положении чем когда-либо

    Да, есть такое. В первую очередь это вызвано из-за быстрорастущей сферы ИИ. Я думаю вы в курсе, что уже сейчас есть нейронки, которые могут по наброску написать страницу сайта на React, что в 1 000 раз быстрее, чем сделал это джун, и в столько же раз дешевле. Зачем тогда держать джунов? Это и есть одна из причин, по которой требования растут.

    Вторая причина, это конечно же мировой кризис, войны, пандемия так же принесла свой вклад в это.

    И третья причина, это огромный приток людей в сферу ИТ. У нас очень любят шутить: "Если ты попробовал всё и у тебя ничего не получилось в жизни, иди в IT, сюда идут все кто ничего не смог добиться". Вообще это достаточно странно, потому что программисты должны быть умными и знать очень много, тут люди могут всю жизнь учиться. Почему так случилось? Потому что пришёл тот же PHP, Python и прочее, где низки порог вхождения, и тут уже всё стаёт на свои места. Даже школьники пишут всякую дичь на PHP и очень этим гордятся.

    Со стороны работодателя, как понять, что ты принимаешь на роботу человека с опытом и мозгами в голове, а не школьника? Поднимать требования!

    Почему поднимаются ЕЩЁ требования? Потому что если очень много людей на рынке, ты можешь выставлять более высокие требования. Это природны отбор и тут нет ничего удивительного. Скоро это всё будет на уровне вундеркиндов (с вундервафлями). За год выпускается группа в универе где есть обученные студенты программирования. В такой группе может быть человек 30, на потоке 120 и больше. Таких университетов 100500. Как понять кто лучше из них, кто знает и хочет работать, а кто пошёл сюда чисто, потому что он тупой и больше никуда его не взяли?

    конкуренция адская, front-end, UX/UI дизайнеров и тестировщиков/QA -- как собак нерезаных и все профнепригодны

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

    А теперь подумайте, выгнали целый отдел программистов, мидлы, синьйоры и т.д. и сидят они без работы. Месяц, два, пол года. Мидл, который по факту стоит около 4000 долларов, за пол года без работы будет пробовать подавать заявку на вакансии джун/джун-стронг с зп 2000-3000 долларов. Почему? Потому что у него нет работы

    А как со стороны работодателей? Взять перспективного джуна по цене 1000 долларов на вакансию 2000 долларов, либо взять мидла, который стоит 4000 долларов, по платить ему 2000-3000? Конечно, тут все очевидно.

    А теперь все эти факты в совокупности дают очень большой регресс для рынка. Хочешь нормально зарабатывать? Ты должен составить конкуренцию и победить в этом среди этих 300 человек. А среди них может быть кто угодно. И при этом всё, вероятность пройти хотя бы ДО СОБЕСЕДОВАНИЯ крайне мала. Скорее всего ваш непрочитанный отзыв завернут после 3х недель ожидания и всё.

    КУДА ИДТИ И КЕМ БЫТЬ?
    Вообще в вашей ситуации, тут больше вопрос "Как?", а не "Кем?". Если вы посмотрите на статистику, то примерно все developer стеки получают одинаково на уровне senoir.

    Так же не стоит думать, что перейти из QA и Dev'ы можно вот просто так. Сейчас разработчики сами отлично умеют всё тестировать, так что тут сложно сказать что-то... Вообще QA стек используется одни инструменты, deve стек использует другие инструменты для работы, по этому тут так же не получится прыгать туда-сюда. Даже если вы будете QA и захотите перейти в dev'ы и программирования не убежишь

    А вообще я бы посоветовал заводить общение с программистами и учить, учить и ещё раз учить. Потому что тут играет ещё одно очень важное правило, что вы никому даже бесплатно не нужны, если вы приносите прибыть. Что бы приносить прибыть, не получится прийти и сказать: "Давайте я тут у вас потусуюсь, что-то учить буду, 3 строки напишу, а вы мне стакан риса". Да, так не прокатит, как бы это печально не звучало.

    Года 2 назад даже с небольшими, но уверенными знаниями программирования вас бы с руками и ногами забрали, если бы вы сказали, что вы там алгоритмы знаете, или на C++ умеет писать программы. Та вам все дороги открыты были бы
    Ответ написан
    2 комментария
  • Нормально ли использовать var вместо явной типизации в C#?

    1. Да, это нормально. Сильно легче код писать таким образом. (а иногда и читать, тк меньше слов дублируется. Например совершенно никакой ценности не несёт User user = userRepository.GetUserById(...) или многослойный женерик)

    2.

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

    А ты давай нормальные названия методам, чтобы возвращаемое значение было очевидным, набирайся опыта, ищи закономерности.

    Ты же не задаёшься вопросом, какой тип возвращает какой-нибудь GetUser, ToString, TryParse, FirstOrDefault?

    Если тебе сложно понять смысл кода без типов - значит кто-то плохие имена дал переменным.


    Данный код достаточно сложно разобрать человеку, который не писал это всё с нуля, а был присоединён через 4-5 лет ведения проекта.

    Очень смелое заявление, которое мало чем подкреплено.


    Как по мне, добавление возможности писать var вместо обычного типа было ужасной ошибкой Microsoft. Сам var был добавлен в язык вместе с анонимными типами и предназначался специально для них.

    1. var далеко не только для анонимных типов полезен, хотя с анонимными типами без var работать было бы очень сложно.

    2. Тренд говорит об обратном - автоматический вывод типов сейчас есть практически во всех статически-типизированных языках в том или ином виде.

    Ну и помни ещё, что ты же не в блокноте код пишешь - у тебя есть всякие inlay hints, которые могут рядом с именем переменной показать её тип, а наведя мышку на слово - ты узнаёшь о нём все (имя переменной, сигнатуру метода, документацию, итд)
    Ответ написан
    7 комментариев
  • Нормально ли использовать var вместо явной типизации в C#?

    xez
    @xez
    TL Junior Roo
    Вполне норм. Просто тип определяется справа, а не слева.
    Подсказки ide должны решить вопрос понимания человеком, что там за тип.
    Ответ написан
    5 комментариев
  • Как дождаться выполнения асинхронного метода?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Task это асинхронная задача, ожидать выполнение которой можно с использованием async/await
    Дока
    Ответ написан
    Комментировать
  • Как запустить цикл for of для длинны массива?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Обычный цикл чем не цикл?
    const chain = async times => {
      for (let n = times; n > 0; n--) {
        console.log(`${n} starting..`);
        await new Promise(resolve => setTimeout(resolve, 800));
        console.log(`${n} ..finished`);
      }
    };
    
    chain(4).then(() => console.log('Done'));
    Ответ написан
    Комментировать
  • Как технически реализована механика кликеров?

    1. Как в приложении реализована защита от абьюза? Например, если 1 клик = 1 http запросу, то не сложно заиспользовать разного рода автоматизированные инструменты по тиму Postman, чтобы "заработать" coin-ы

    1. Ограничиваем максимум кликов в секунду, отправляем несколько кликов одним запросом. Опять же продумываем механику так, чтобы в долгосроке всякие пассивки/мини игры приносили основной доход, а не клики. Опять же ограничиваем количество кликов в день/час, например.
    2. Вместе с запросом отправляем ещё какой-нибудь уникальный код, который выдаёт система, которая работает только на фронте (invisible captcha какая-нибудь)
    3. Блокчейн для этого сценария противопоказан.
    Ответ написан
    Комментировать
  • Почему данные не сортируются по дате?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Не помешало бы, пример несколько строк из фрейма которые не сортируются.
    2. Обратно возвращать в строку не обязательно.
    3. Методы чтения имеют параметр parse_dates для того что бы строковое представление даты перводить в тип данных datetime64
    вот небольшой примерчик
    (
        pd.DataFrame({
            'string_dates':['17.08.2024','15.08.2024','20.09.2024'],
            'values':[10,100,1000]
        })
        .assign(
            dates=lambda x: pd.to_datetime(x['string_dates'],format='%d.%m.%Y')
        )
        .sort_values(by='dates')
    )
    как видишь все сортируется, обрати внимания на типы данных. Колонку которая используется для сортировки можно дропнуть, ну или создать ее что называется "на лету".
    Ответ написан
    Комментировать
  • Мессенджер, не требующий для входа номера телефона/e-mail, и не заблокированный в РФ?

    CityCat4
    @CityCat4 Куратор тега Информационная безопасность
    //COPY01 EXEC PGM=IEBGENER
    В Вашем вопросе два качественных определения. Чтобы на него ответить, сначала пожалуйста определите, что такое "достаточно безопасный" и что такое "без бубна".
    Оператор мессенджера по определению имеет доступ ко всей переписке (а вся трепотня про end-to-end encryption - это всего лишь трепотня - кто ее проверял-то?). Поэтому если Вас так заботит факт "нечитаемости" - подымайте свой сервак.
    Ответ написан
    3 комментария
  • CREATE USER не учитывает регистр?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Если кавычек нет, то предполагается, что без учета регистра. Грубо говоря, без кавычек - все в нижний регистр.
    В данном случае, надо добавить кавычки вокруг имени пользователя:
    CREATE USER "PolzaK" WITH PASSWORD

    Но учитывай, что тебе и дальше придется всегда указывать кавычки. В противном случае,
    ALTER USER PolzaK ...
    Тоже самое, что и
    ALTER USER polzak ...
    Ответ написан
    Комментировать
  • В какой структуре лучше хранить массивы синонимов номенклатур?

    Можно хештаблицу/словарь использовать, где ключом будет синоним, а значением - "каноничное" название / идентификатор.
    Каноничное название собственно тоже в ней будет и будет указывать на само себя.

    Тогда при запросе ты просто будешь сравнивать, что значение у двух ключей одно и то же.
    Ответ написан
    Комментировать
  • Как работать с проектом на git в phpStorm на тестовом сервере?

    Henryh
    @Henryh
    Веб-программист
    Попробуй посмотреть в сторону CI/CD подхода.
    Условно, это когда некий скрипт мониторит изменения, которые ты запушил в репу. И автоматически (или по кнопке) запускает процесс заливки на нужный сервер (тестовый и/или прод). Туда же можно добавить прогон тестов и сборку.

    Тоесть процесс будет например такой: локальные правки -> пуш в ветку разработки репозитория -> синк с тестовой средой -> если всё ок - пуш в мастер -> синк с продом.

    Есть много решений, можно начать с GitHub Actions
    Ответ написан
    Комментировать
  • Почему ajax выполняется по очереди?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вангую - на бэке PHP и сессии. Причём, открываются сессии в начале скрипта, а закрываются никогда, то есть по завершении скрипта.
    Тогда пока работает скрипт, файл сессии держится открытым и второй скрипт в той же сессии будет ждать освобождения файла. Файл сессии надо освобождать как можно раньше. session_start, считали нужные данные и сразу же session_write_close. Если надо что-то изменить в сессионных данных в процессе работы скрипта, то снова открыть сессию, записать изменения, закрыть.
    Ответ написан
    Комментировать
  • Как реализовать такой прогресс бар?

    szQocks
    @szQocks
    https://codepen.io/kapysta-xxl/pen/jOdKyjm

    только верстку поправишь
    Ответ написан
    Комментировать
  • Появился диск Z, откуда?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    EFI partition - это раздел, необходимый для загрузки системы в UEFI.
    Удалять его нельзя, но можно в управлении дисками убрать букву, на которой он отображается.
    Ответ написан
    Комментировать
  • Что будет если владелец сайта умрет?

    @Drno
    стопнут за неуплату и через некоторое время удалят.
    домен - попадет обратно на биржу в список доступных
    Ответ написан
    Комментировать
  • Что будет если владелец сайта умрет?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Закончится предоплаченное время хостинга, машину выключат, через некоторое время уберут в архив, ещё через какое-то время удалят. Если до выключения на сервере произойдёт какая-то критическая ошибка, то виртуалка будет работать, но сайт будет недоступен.
    Закончится срок аренды доменного имени, оно на 1-3 месяца будет заблокировано, затем станет доступно для новой аренды.
    P.S. В идеале - нужно переоформить хостинг и домен на нового владельца, иначе могут быть проблемы если понадобится подтвердить аренду документально.
    Ответ написан
    Комментировать
  • Как проверить 500 000 файлов word,exel,pdf ,txt что они не битые?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    "Новые" офисные форматы (.docx, .xlsx, ...) - это по факту zip-архивы.

    Новый (пустой) документ Excel распакуется в виде, ЕМНИП, шести папок и примерно десятка файлов.

    Соответственно, их целостность можно проверить с помощью 7-Zip.

    Но с .pdf такой фокус не пройдёт.

    Текстовые файлы можно проверить с помощью анализа энтропии. Но тут вам потребуется понимание этого дела и, с определённой вероятностью, базовое умение программировать.

    Анализаторы энтропии встроены в некоторые инструменты для data recovery, но они работают немного по-другому и с накопителями в целом.
    Утилиты для отдельных файлов я сходу не назову, хотя почти уверен, что она должна существовать. Поищите в составе инструментов для forensic в духе Kali Linux и подобного.
    Также посмотрите что используют те, кто анализируют прошивки, дампы чипов, и занимаются подобным реверс-инжинирингом.

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

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Парсеры палятся на том, что ведут себя как роботы. Люди не обходят все доступные ссылки, только некоторое подмножество без ухода на большую глубину. Чтобы не попасться, надо изобразить группу людей шарящихся по сайту. Для этого надо после разбора страницы входа парсить только две-три ссылки с неё, делать случайные паузы между запросами, потом сбрасывать принятые куки, менять user agent и прокси и парсить другие две-три ссылки. Естественно, прокси не должны быть публичными. Если вы могли найти и скачать их список, то разработчики защиты тоже уже его скачали.
    Ответ написан
    Комментировать