• Как получить стейт внутри props.children?

    rstJkee
    @rstJkee Автор вопроса
    Вот так вот делаем и должно всё работать
    function ComponentB(props) {
      let [state, setState] = useState({ title: "ТАЙТЛ" });
      return <div>{props.children({ state, setState, props })}</div>;
    }
    
    function ComponentA() {
      return (
        <ComponentB url="asd">
          {(a) => (
            <header>
              {a.state.title}
              {a.props.url}
            </header>
          )}
        </ComponentB>
      );
    }
    Ответ написан
  • Автокомплит material ui react vs code?

    rstJkee
    @rstJkee Автор вопроса
    Судя по всему, никаких приколюх нет, нашёл только tabnine, вроде неплохо работает
    Ответ написан
    Комментировать
  • AnonymousUser при каждом запросе (simplejwt)?

    rstJkee
    @rstJkee Автор вопроса
    А, очень весело получилось, я, собственно, чего-то не знал видимо или что-то просмотрел. У меня используется ModelViewSet, весь код вот
    class CourseViewSet(viewsets.ModelViewSet):
        queryset = Course.objects.filter(is_deleted=False)
        serializer_class = CourseSerializer
        swagger_tags = ["Course"]
    
        def create(self, request, *args, **kwargs):
            data = request.data
            course = Course.objects.create(
                name=data["name"],
                description=data["description"],
                information=data["information"],
                author_id=data["author"]
            )
            course.save()
            tags = set(data["tags"])
            for tag in tags:
                created_tag = Tags.objects.get_or_create(name=tag)[0]
                course.tags.add(created_tag.id)
            return Response(status=status.HTTP_201_CREATED)
    
        def partial_update(self, request, *args, **kwargs):
            course = Course.objects.get(id=int(kwargs["pk"]))
            if request.user.id == course.author.id:
                return super().partial_update(request, *args, **kwargs)
            return Response(status=status.HTTP_403_FORBIDDEN)

    Не важно, что он делает, важно, что при добавлении
    authentication_classes = [JWTAuthentication]
    всё начинает работать. При том, что в rest_framework указан дефолтный класс, тут всё равно надо указывать его...
    То есть окончательно класс сейчас выглядит так
    class CourseViewSet(viewsets.ModelViewSet):
        queryset = Course.objects.filter(is_deleted=False)
        serializer_class = CourseSerializer
        authentication_classes = [JWTAuthentication]
        swagger_tags = ["Course"]
        ...
    Ответ написан
    Комментировать
  • Как подсчитать письма с помощью Selenium/Java?

    rstJkee
    @rstJkee
    Извини, что абстрактно, потому что код бы всё равно невероятно сильно отличался, так как я последний раз на селениуме работал в питоне

    1. Так как почта скорее всего построена на фреймворке (react/vue/angular), то она строит элементы динамически, следовательно твоим 1 шагом должно быть то, что ты в драйвере должен выставить некоторый wait/until. То есть ты должен подождать, пока прогрузится страница
    // Ждём, пока не будет элемента с name = q
    WebElement foo = new WebDriverWait(driver, Duration.ofSeconds(3))
              .until(driver -> driver.findElement(By.name("q")));

    2. Так как ты подождал загрузку в первом пункте, то тебе можно отказаться от xpath`ов и пользоваться нормальными селекторами (https://www.selenium.dev/documentation/webdriver/l...). Собственно, можно и с ними, но в почте множество повторяющихся элементов с одинаковыми классами => брать их через xpath - очень больно, так как у них у всех xpath будет разный, а => выстроить динамику в цикле будет трудно
    3. Через эти селекторы ты уже сможешь получать всю информацию на странице, которую можно обходить в цикле/сортировать/фильтровать и прочее (там уже и stream api джависткий можно юзать и прочее, и прочее)
    Ответ написан
    2 комментария
  • Развернуть строку assembler?

    rstJkee
    @rstJkee Автор вопроса
    Компилятор nasm (делал в sasm)

    %include "io.inc"
    
    section .data
        arr db "genius" ; основная строка
        len equ $-arr ; длина этой строки
    
    section .bss
        str2 resb 64 ; резирвирую память для развёрнутой строки
    
    section .text
        global CMAIN
    CMAIN:
        mov ebp, esp; for correct debugging
        mov ebx, len
        dec ebx
        mov esi, 0
    cycle:
        cmp ebx, 0
        jl end
        mov al, byte[arr+ebx]
        mov [str2+esi], al
        inc esi
        dec ebx
        jmp cycle
    end:
        PRINT_STRING str2
        xor eax, eax
        ret
    Ответ написан
    Комментировать
  • NASM смещение в массиве (invalid effective address)?

    rstJkee
    @rstJkee Автор вопроса
    Как оказалось тут не effective address invalid, а я инвалид. Надо юзать регистр ebx (которые base), а не cx (которые counter). То есть что-то в духе каст_к_типу[variable+ebx*размер]
    Ответ написан
    Комментировать
  • Tomcat thymeleaft spring выдаёт 404 статус код?

    rstJkee
    @rstJkee Автор вопроса
    Нужно спускаться на 9 версию

    For Spring MVC 5, the Spring MVC DispatcherServlet has a dependency on the javax.servlet.* package namespace. This is using the Java EE 8 javax package naming. Since Tomcat 10 is based on Jakarta EE 9, the packages for javax naming are not supported. This explains why Spring MVC 5 does not work on Tomcat 10.
    Ответ написан
    Комментировать
  • Динамическая подстановка значений в npm scripts?

    rstJkee
    @rstJkee Автор вопроса
    Оказалось проще написать скрипт, который бы вызывал команды, подставляя значения
    Учу nest, но в документации к cli не нашёл, как генерировать сразу module+controller+service, а также создавать entity файл для typeorm в этой же самой директории
    #!/usr/bin/bash
    
    name=$1
    nest generate module "$name"
    nest generate controller "$name"
    nest generate service "$name"
    
    echo "import {Entity, PrimaryGeneratedColumn, Column} from \"typeorm\";
    
    @Entity()
    export class ${name^} {
    
        @PrimaryGeneratedColumn()
        id: number;
    }" > "src/$name/$name.entity.ts"

    Нет предела совершенству => скрипт можно допилить и сделать намного лучше
    Ответ написан
    Комментировать
  • Работа со slug и pk в django?

    rstJkee
    @rstJkee Автор вопроса
    Вообщем-то, проблема решилась довольно интересным (и мало ожидаемым для меня способом).
    Суть в том, что в разметке размещалась строка, а не id, а надо было указать на id из таблицы User (если я вообще всё правильно понял). То есть вместо строки
    <a href="{% url "check_resume" resume.client_id %}">Посмотреть</a>

    Поставил строку
    <a href="{% url "check_resume" resume.pk %}">Посмотреть</a>

    Ну и в urls
    path('resumes/<slug:pk>', views.ResumesDetail.as_view(), name="check_resume"),
    Ответ написан
    Комментировать
  • Как связать резюме с моделью User 1 к 1?

    rstJkee
    @rstJkee Автор вопроса
    Всё пофиксил, всё работает. Общая идея заключается в том, что создать форму по тем полям, которые есть в ResumesModel, client_id сделать скрытым и не заполнять его (ну или заполнять, всё равно вообще). Дальше на стороне django уже есть такой код
    def get_form_kwargs(self):
            kwargs = super().get_form_kwargs()
            if self.request.method == "POST" and hasattr(self, 'object'):
                data = kwargs["data"].dict()
                data.update({"client_id": self.request.user.id})
                kwargs["data"] = data
            return kwargs

    Этот метод реализован в классе с наследованием от CreateView и LoginRequiredMixin. То есть, идёт физическое изменение id клиента на id зарегистрированного и авторизованного отправителя
    Ответ написан
    Комментировать
  • Выделить весь текст в contenteditable div?

    rstJkee
    @rstJkee Автор вопроса
    Возможно, кому-то поможет, ОБЯЗАТЕЛЬНО делать через selectNodeContents вместо selectNode
    $("#root").on("click", (e) => {
            console.log(e.target.tagName)
            if (e.target.tagName === "DIV") {
                let rng = document.createRange()
                let sel = window.getSelection()
                rng.selectNodeContents($(e.target)[0])
                sel.removeAllRanges()
                sel.addRange(rng)
            }
        })

    P. S.: у меня разметка добавляется по мере поступления ответов от сервера, так что тут захватывается контейнер root, на него накидывается обработчик onclick, затем проверяется, что был нажат именно блок div и только после этого всё, что в нём есть, выделяется
    Ответ написан
    Комментировать
  • Почему не возвращается json?

    rstJkee
    @rstJkee Автор вопроса
    Боже, какая же очевидная ошибка была: getJSON принимает в себя 3 аргумента, а я всё обернул в {}, и функция, которая должна была вывести всё через console.log, не срабатывала, из-за чего я начал думать, что не работает прога
    Правильный код на js(jquery)
    function selectData() {
        tName = $("#selectTabName").val()
        $.getJSON(
            "/select_data",
            {"tableName": tName},
            function(data) {
                console.log(data)
            }
        )
    }
    Ответ написан
  • Записи old не присвоено значение postgresql?

    rstJkee
    @rstJkee Автор вопроса
    for each row надо добавить после строки
    on "objSklad"
    Ответ написан
    Комментировать
  • Как сместить вершину графика в точку n?

    rstJkee
    @rstJkee Автор вопроса
    Вообщем суть была в том, что в документации я проглядел (или там реально не было) параметр отклонения
    @staticmethod
        def paint_normal_distribution(mexp, otkl):
            """
            Строит график кривой нормального распределения
            """
            head = 0.4 / otkl
            left = mexp - 3 * otkl
            right = mexp + 3 * otkl
            arr = np.arange(left, right, 0.001)
            plt.plot(arr, norm.pdf(arr, mexp, otkl))
            print("Левая граница = {}, правая граница = {}, высота = {}".format(left, right, head))
            plt.show()

    mexp - мат. ожидание смещает график на определённую позицию по x
    otkl - отклонение, как раз показывает, на сколько график должен быть ограничен по высоте
    Ответ написан
    Комментировать
  • Как добавить nextval на столбец postgresql?

    rstJkee
    @rstJkee Автор вопроса
    ALTER TABLE "DNS"."objSklad"
      ALTER COLUMN id_sklad SET DEFAULT nextval('"DNS"."objSklad_id_sklad_seq"');
    Ответ написан
    Комментировать
  • Как считать csv и правильно распределить всё в листе?

    rstJkee
    @rstJkee Автор вопроса
    Если кому будет интересно: .csv показывается в ide pycharm как строки, с разделителем (delimeter) ";". Поэтому код такой получился
    def read_csv(data):
        with open("data.csv", "r") as csvfile:
            file = csv.reader(csvfile, delimiter=";")
            for row in file:
                data.append(row)
        print_data(data)

    А если вдруг вывод нужен обратный (ну, например, вы что-то редактировали)
    def write_csv(data):
        with open("data.csv", "w") as csvfile:
            wrt = csv.writer(csvfile, delimiter=";", quotechar="|", lineterminator="\r")
            wrt.writerows(data)
    Ответ написан
    Комментировать
  • Как добавить элемент в подмассив numpy?

    rstJkee
    @rstJkee Автор вопроса
    Короче, вот что получилось у меня

    item = np.array([], int)
    data = np.column_stack((data, item))


    data - мега массив
    item - микро массив (кэп)
    Ответ написан
    Комментировать
  • Как создать компоратор для вектора структур?

    rstJkee
    @rstJkee Автор вопроса
    Короче, спасибо за помощь, дай бог здоровья человеку с ником res2001, который дал богоподобный ответ. Видимо чел всю жизнь сидит на плюсах и не понимает, что есть люди, которые развиваются в другом направлении, а плюсы юзают, чтобы выполнить задание, в котором требуется быстрота выполнения

    Вот компоратор, который у меня получился, для структуры s

    struct s
    {
      string name;
      int balli;
    };
    
    bool cmp(s a, s b) {
      if (a.balli > b.balli)
        return true;
      else 
        if (a.balli == b.balli && a.name < b.name)
          return true;
        else
          return false;
    }
    Ответ написан