Как я могу создать UI элемент под спрайтом?

У меня есть Canvas который создает префабы(UI) ,но дело в том что мне нужно иметь один спрайт который всегда должен находиться над ними(префабы всегда создаются после спрайта).

Не могу создать цикл для операции xor

Наткнулся на задание с шифрованием через XOR. В нем было сказано, что нужно вводить ключ в программу 3-мя способами. Последний из них: ключ вводится в прямой последовательности, а потом в обратной. То есть “ШифррфиШ”, а символы текста, который шифруется, просто идут прямо себе. Никак не могу понять, какой создать для этого цикл. Спасайте, я тупенький. Только не предлагайте создать сам ключ, который повторяет себя наоборот, мне именно циклом надо)

Как создать и запусть поток при создании объекта?

Задача: при создании объекта должен создаться и запуститься поток. Создал десяток объектов Detail , значит 10 потоков. Поэтому логичнее всего добавить создание потока в конструктор класса Detail, а запускать из деструктора. Только не как могу победить это описание в классе. Вот мой код с последней попыткой описания этого момента в классе, ошибочно.

#ifndef DETAIL_H #define DETAIL_H #include <string> #include "machine.h" #include <thread>  class Detail { private:     //val     std::thread t;     int det_id;     int last_time; //оставшееся время     int state; //состояние детали     std::string name_det;     int time_worked; //время обработки     std::vector<std::string> alphabet; //алфавит     std::vector<std::string> protocol; //протокол     std::vector<Machine> machine_list; // вектор оборудования для обработки  public:       //costructor      Detail(int detid_p, std::string name_p, int time_p, Machine x, Machine y){         det_id = detid_p;         name_det = name_p;         time_worked = time_p;         last_time = time_p;         t();         std::string temp;         machine_list.push_back(x);         machine_list.push_back(y);         for (auto i : machine_list) {             temp = "WAIT." + i.Get_name();             alphabet.push_back(temp);             temp = "PROC." + i.Get_name();             alphabet.push_back(temp);         }      }     Detail(int detid_p, std::string name_p, int time_p, Machine x){         det_id = detid_p;         name_det = name_p;         time_worked = time_p;         last_time = time_p;          std::string temp;         machine_list.push_back(x);         temp = "WAIT." + x.Get_name();         alphabet.push_back(temp);         temp = "PROC." + x.Get_name();         alphabet.push_back(temp);     }     ~Detail(){         t.join();     }      //getter and setter      int Get_id() {         return det_id;     }     int Get_time() {         return time_worked;     }     int Get_state() {         return state;     }     int Get_last_time() {         return last_time;     }     void Set_last_time(int a) {         last_time = a;     }     std::vector<Machine> Get_machine() {         return machine_list;     }     std::string Get_name(){         return name_det;     }      std::vector<std::string> Get_alpha() {         return alphabet;     }      std::vector<Machine> Get_machine_list(){         return machine_list;     } }; #endif // DETAIL_H 

WinAPI. Как создать дочернее окно поверх всех окон приложения

В приложении есть дочернее окно, которое создается так:

windraw.cbSize = sizeof(WNDCLASSEX);     windraw.style = CS_HREDRAW | CS_VREDRAW;     windraw.lpfnWndProc = WndProc;     windraw.cbClsExtra = 0;     windraw.cbWndExtra = 0;     windraw.hInstance = hInstance;     windraw.hIcon = NULL;     windraw.hCursor = LoadCursor(nullptr, IDC_ARROW);     windraw.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);     windraw.lpszMenuName = NULL;     windraw.lpszClassName = global::drawwz;     windraw.hIconSm = NULL;     RegisterClassExW(&windraw);      hwndD = CreateWindowEx(0, global::drawwz, L"General Form", WS_OVERLAPPED, DISPLAY_WIDTH, DISPLAY_HEIGTH, 620, 700, HWND_DESKTOP, NULL, global::hInst, NULL); 

Оно должно быть всегда на виду, но постоянно исчезает если кликнуть на любое другое окно приложения, как сделать его всегда сверху?

Создать внешний ключ

Не понимаю в чём может быть проблема. Есть две таблицы. Ниже фото:

введите сюда описание изображения

введите сюда описание изображения

Нужно сделать внешний ключ из таблицы Users на таблицу t_koatuu_tree.

В таблице Users поле territory_id char(10), а в таблице t_koatuu_tree поле ter_id char(10).

Пишу такой запрос

ALTER TABLE Users ADD CONSTRAINT fk_tr_id FOREIGN KEY (territory_id) REFERENCES t_koatuu_tree(ter_id); 

Но выдаёт ошибку (ERROR 1215 (HY000): Cannot add foreign key constraint )

В чём может быть проблема?

Не понимаю как создать ссылку на следующий handler, которые лежать в списке handlers

У меня учебный проект на Spring MVC и я пытаюсь применить паттерн Chain of responsibility. Создал пакет handler в котором есть интерфейс Handler

public interface Handler {     void setRelationship(Relationship relationship, User user, String status, Long userIdTo, Long idUserFrom)throws BadRequestException, InternalServerError; } 

Абстрактный класс

public abstract class RelationshipHandler implements Handler, Ordered {      public abstract void setRelationship(Relationship relationship, User user, String status, Long userIdTo, Long idUserFrom)throws BadRequestException, InternalServerError;      boolean checkStatusForChange(Relationship relationship, RelationshipStatusType currentStatus, RelationshipStatusType newStatus, String status){         return relationship != null && relationship.getStatusType().equals(currentStatus) && status.equals(newStatus.toString());     } } 

От которого наследуются четыре обработчика Первый

@Component public class AcceptedHandler extends RelationshipHandler {      private final RelationshipDAO relationshipDAO;      @Autowired     public AcceptedHandler(RelationshipDAO relationshipDAO) {         this.relationshipDAO = relationshipDAO;     }      @Override     public void setRelationship(Relationship relationship, User user, String status, Long idUserTo, Long idUserFrom) throws BadRequestException, InternalServerError{         if (user != null && user.getId().equals(idUserTo) &&                 checkStatusForChange(relationship, RelationshipStatusType.REQUESTED, RelationshipStatusType.ACCEPTED, status)){             relationshipDAO.update(addFriendsByRequest(user, relationship));         }     }      private Relationship addFriendsByRequest(User user, Relationship relationship) throws BadRequestException, InternalServerError {         if (user == null || relationship == null){             throw new BadRequestException("User or relationship is not found.");         }          if (checkingNumberFriends(user.getId())){             Date acceptedRequest = new Date();             relationship.setAcceptedFriends(acceptedRequest);             relationship.setStatusType(RelationshipStatusType.ACCEPTED);         }         else {             throw new BadRequestException("Friends limit exceeded.");         }         return relationship;     }      private boolean checkingNumberFriends(Long id) throws BadRequestException, InternalServerError {          if (id == null){             throw new BadRequestException("ID does not exist.");         }         return relationshipDAO.getQuantityFriends(id, RelationshipStatusType.ACCEPTED) < 10;     }      @Override     public int getOrder() {         return Ordered.HIGHEST_PRECEDENCE;     } } 

Второй

@Component public class DeletedHandler extends RelationshipHandler {      private final RelationshipDAO relationshipDAO;      @Autowired     public DeletedHandler(RelationshipDAO relationshipDAO) {         this.relationshipDAO = relationshipDAO;     }      @Override     public void setRelationship(Relationship relationship, User user, String status, Long idUserTo, Long idUserFrom) throws BadRequestException, InternalServerError {         if (user != null && (user.getId().equals(idUserFrom) || user.getId().equals(idUserTo)) &&                 checkStatusForChange(relationship, RelationshipStatusType.ACCEPTED, RelationshipStatusType.DELETED, status)){             relationshipDAO.update(delFromFriends(idUserFrom, idUserTo,  relationship));         }     }      private Relationship delFromFriends(Long idUserFrom, Long idUserTo, Relationship relationship) throws BadRequestException, InternalServerError {         if (idUserFrom == null || idUserTo == null || relationship == null){             throw new BadRequestException("IdUserFrom or idUserTo or relationship is not found.");         }          if (checkingAcceptedDate(idUserFrom, idUserTo)){             relationship.setStatusType(RelationshipStatusType.DELETED);             relationship.setAcceptedFriends(null);         }         else {             throw new BadRequestException("You can not perform an action delete from friends.");         }         return relationship;     }      private boolean checkingAcceptedDate(Long idUserFrom, Long idUserTo) throws BadRequestException, InternalServerError{         if (idUserFrom == null || idUserTo == null){             throw new BadRequestException("IdUserFrom or idUserTo is not found.");         }         return relationshipDAO.getQuantityHoursAfterAccepted(idUserFrom, idUserTo, RelationshipStatusType.ACCEPTED) >= 3;     }      @Override     public int getOrder() {         return 2;     } } 

Третий

@Component public class CanceledHandler extends RelationshipHandler {      private final RelationshipDAO relationshipDAO;      @Autowired     public CanceledHandler(RelationshipDAO relationshipDAO) {         this.relationshipDAO = relationshipDAO;     }      @Override     public void setRelationship(Relationship relationship, User user, String status, Long idUserTo, Long idUserFrom) throws BadRequestException, InternalServerError {         if (user != null && user.getId().equals(idUserFrom) &&                 checkStatusForChange(relationship, RelationshipStatusType.REQUESTED, RelationshipStatusType.CANCELED, status)){             relationship.setStatusType(RelationshipStatusType.CANCELED);             relationshipDAO.update(relationship);         }     }      @Override     public int getOrder() {         return 3;     } } 

И четвертый

@Component public class DeclinedHandler extends RelationshipHandler {      private final RelationshipDAO relationshipDAO;      @Autowired     public DeclinedHandler(RelationshipDAO relationshipDAO) {         this.relationshipDAO = relationshipDAO;     }      @Override     public void setRelationship(Relationship relationship, User user, String status, Long idUserTo, Long idUserFrom) throws BadRequestException, InternalServerError {         if (user != null && user.getId().equals(idUserTo) &&                 checkStatusForChange(relationship, RelationshipStatusType.REQUESTED, RelationshipStatusType.DECLINED, status)) {             relationship.setStatusType(RelationshipStatusType.DECLINED);             relationshipDAO.update(relationship);         }     }      @Override     public int getOrder() {         return 1;     } } 

Класс в котором строю цепочку

@Component public class HandlerForUser {      @Autowired     private List<Handler> handlers;      @PostConstruct     public void init(){         handlers.sort(INSTANCE);     }      public void execute(Relationship relationship, User user, String status, Long idUserTo, Long idUserFrom)throws BadRequestException, InternalServerError {         for (Handler handler : handlers){             handler.setRelationship(relationship, user, status, idUserTo, idUserFrom);         }     } } 

И использую это в сервисе:

@Service public class RelationshipService {      private RelationshipDAO relationshipDAO;     private UserDAO userDAO;     private HandlerForUser handlerForUser;      @Autowired     public RelationshipService(RelationshipDAO relationshipDAO, UserDAO userDAO, HandlerForUser handlerForUser) {         this.relationshipDAO = relationshipDAO;         this.userDAO = userDAO;         this.handlerForUser = handlerForUser;     }      public void setRelationship(String userIdTo, String userIdFrom, HttpSession session)throws BadRequestException, InternalServerError{         User userFrom = (User) session.getAttribute(userIdFrom);         if (userFrom == null){             throw new BadRequestException("User with ID " + userIdFrom + " is not logged in.");         }          User userTo = userDAO.findById(Long.parseLong(userIdTo));         if (userTo == null){             throw new BadRequestException("User with ID " + userIdTo + " is not found in DB.");         }          Relationship relationshipFind = relationshipDAO.getRelationship(userFrom.getId(), userTo.getId());         try {             if (relationshipFind == null){                 Relationship relationship = new Relationship();                 relationship.setUserFrom(userFrom);                 relationship.setUserTo(userTo);                 relationship.setStatusType(RelationshipStatusType.REQUESTED);                 save(sendRequest(Long.parseLong(userIdFrom), relationship));             }             else if (relationshipFind.getStatusType().equals(RelationshipStatusType.CANCELED) ||                     relationshipFind.getStatusType().equals(RelationshipStatusType.DECLINED) ||                     relationshipFind.getStatusType().equals(RelationshipStatusType.DELETED)){                 relationshipFind.setStatusType(RelationshipStatusType.REQUESTED);                 relationshipDAO.update(sendRequest(Long.valueOf(userIdFrom), relationshipFind));             }             else {                 throw new BadRequestException("Something is wrong with the input.");             }         }catch (InternalServerError e) {             throw new InternalServerError("Something went wrong...");         }     }      public void setRelationshipByStatus(String status, String userIdTo, String userIdFrom, HttpSession session) throws BadRequestException, InternalServerError {         if (status == null || userIdTo == null || userIdFrom == null){             throw  new BadRequestException("Status or userIdTo or userIdFrom is not exist.");         }          User userFrom = (User) session.getAttribute(userIdFrom);         User userTo = (User) session.getAttribute(userIdTo);         Relationship relationshipFind = relationshipDAO.getRelationship(Long.valueOf(userIdFrom), Long.valueOf(userIdTo));          try {             if (userTo != null){                 handlerForUser.execute(relationshipFind, userTo, status, Long.valueOf(userIdTo), Long.valueOf(userIdFrom));             }              if (userFrom != null){                 handlerForUser.execute(relationshipFind, userFrom, status, Long.valueOf(userIdTo), Long.valueOf(userIdFrom));             }             else {                 throw new BadRequestException("Something is wrong with the input. Method setRelationshipByStatus");             }         }catch (InternalServerError e) {             throw new InternalServerError("Something went wrong...");         }     }      public void validationInputData(String idUserFrom, String idUserTo, HttpSession session)throws BadRequestException{         if (idUserFrom == null || idUserTo == null){             throw  new BadRequestException("UserFrom or userTo does not exist.");         }          if (idUserFrom.equals(idUserTo)){             throw  new BadRequestException("Actions between the same user are not possible.");         }          if (session == null){             throw  new BadRequestException("Session is not exist.");         }     }      private Relationship save(Relationship relationship)throws BadRequestException {         if (relationship != null && relationship.getId() != null){             throw new BadRequestException("This Relationship with ID - " + relationship.getId() + " can not save in DB.");         }         else {             relationshipDAO.save(relationship);         }         return relationship;     }      private Relationship sendRequest(Long idUser, Relationship relationship) throws BadRequestException, InternalServerError {         if (idUser == null || relationship == null){             throw new BadRequestException("User or relationship is not found.");         }          if (checkingNumberRequested(idUser)){             relationship.setStatusType(RelationshipStatusType.REQUESTED);         }         else {             throw new BadRequestException("Limit on sent requests exceeded.");         }         return relationship;     }      private boolean checkingNumberRequested(Long id) throws BadRequestException, InternalServerError{         if (id == null){             throw new BadRequestException("ID does not exist.");         }         return relationshipDAO.getQuantityRequests(id, RelationshipStatusType.REQUESTED) < 10;     } } 

Сейчас получается, что запрос проходит по всему списку обработчиков не прерывая цепочку если запрос обработался успешно. Может я структуру построил не правильно. Наверное в абстрактном классе надо задать поведение для передачи ссылки на следующий обработчик. Что-то ни как не соображу, что делать дальше… Помогите разобраться, как правильно построить цепочку

можно ли создать экземпляр класса при помощи переменной

Допустим есть преременная типа str a= ‘test’ можно ли допустим создать экземпляр класса при помощи значения тест Что я иммею ввиду ‘test’.название_класса

Phaser 3 создать круглую зону

Есть некий класс “монстр”. У него есть зона так называемого Агро. Которая активируется, при вхождении игрока в нее. Но проблема в том, что я не могу, и не знаю как правильно, сделать ее круглой. Есть знатоки в этой области, которые могу подсказать, как это правильно сделать?

Код класса на TS:

import Creature from "./Creature";  export default class Monster extends Creature {     private readonly speed: number;     private agroZone!: Phaser.GameObjects.Zone;     private target!: Phaser.Physics.Arcade.Sprite      constructor(scene: Phaser.Scene, x: number, y: number, texture: string,  frames?: string | number) {         super(scene, x, y, texture, frames);          this.hp.max = 10;         this.hp.current = 10;         this.hpBarConfig = {             x: 250,             y: 10,             color: 0x15fa03,             fixed:true         };          this.updateHpBar();          this.speed = 50;          this.scene.events.on('update', this.updateScene);     }      private updateScene = () => {       this.checkAgroZone(this.target);     };      public initAgroZone = (target: Phaser.Physics.Arcade.Sprite) =>{         this.target = target;         this.agroZone = this.scene.add.zone(this.body.x, this.body.y, 200, 200);         this.agroZone.setOrigin(0.5, 0.5);         this.scene.physics.world.enable(this.agroZone, 0);         this.agroZone.body.moves = false;         this.scene.physics.add.overlap(target, this.agroZone);          this.agroZone.on("enterzone", () => {console.log("!!!!!!!!!!!");});     };      private checkAgroZone = (target) => {         if(target){             const touching = this.agroZone.body.touching;             const wasTouching = this.agroZone.body.wasTouching;              if (touching.none && !wasTouching.none) {                 this.agroZone.emit('leavezone');             }             else if (!touching.none && wasTouching.none) {                 this.agroZone.emit('enterzone');             }              this.agroZone.body.debugBodyColor =  this.agroZone.body.touching.none ? 0x00ffff : 0xffff00;         }     };      chaseTarget(obj: Phaser.Physics.Arcade.Sprite){         this.scene.physics.moveToObject(this, obj, this.speed);     } } 

Proxmox создать ВМ с OS

Стоит задача создать виртуальную машину с операционной системой при помощи http запроса. Это вообще возможно? Если да то как? При создании виртуальной машины: POST /api2/json/nodes/{node}/qemu появляется новая машина, но она, как вы догадываетесь, абсолютно пуста. Среди параметров запроса нашел тип операционной системы, но не нашел ничего больше. Возможно не достаточно внимательно изучал. Возможно ли это и если ответ положительный то каким образом?

Как создать гиперссылку по условию?

Доброго времени суток!

Смысл в следующем: На одном из листов имеем оглавление в виде таблички. Там есть 2 скрытых столбца, D – Имя ссылки, E – имя листа. В столбце C формируем ссылку:

=ЕСЛИ(E6="-";D6;ГИПЕРССЫЛКА("#'"&E6&"'!L24";D6))  

Т.е. если вместо имени листа ‘-‘, то берём просто текст из D, иначе создаём ссылку по имени листа из E. Тут как бы первая проблема… Почему если условие ложно, то ссылка всё равно создаётся? Просто она битая и при клике пишет невозможно открыть указанный файл. Как сделать по условию правильно?

И на каждом листе я делаю ссылку назад(именно на строку вызова), такого вида:

=ГИПЕРССЫЛКА("#'Table of contents'!D"&ПОИСКПОЗ(ПСТР(ЯЧЕЙКА("filename");ПОИСК("]";ЯЧЕЙКА("filename"))+1;31);sheetsTable;0)+2;"Back") 

Поиск по таблице для того, чтобы если оглавление будет отсортировано или отфильтровано, ничего не ломалось.. Оно работает, почти правильно, только я не понимаю почему прыгает на столбец C вместо заданного D?