Задать вопрос
  • Как сделать автоинкремент в колонке MySQL аннотациями Spring?

    jaxtr
    @jaxtr
    JavaEE/Spring-разработчик
    Вариант 1: в рамках открытой транзакции можно сделать запрос на получение последнего значения и вручную установить значение новой записи.
    Вариант 2: написать хранимую процедуру в MySQL, в которой будет происходить вычисление нового значения свойства number, и дёргать её при создании новой записи.
    Вариант 3: убрать number и использовать id, если это возможно
    Ответ написан
    Комментировать
  • Как реализовать peer-to-peer соединение в не локальной сети?

    Peer-to-peer соединение в интернет зачастую затруднительно реализовать из-за того, что каждый участник может находится за некоторым количеством фаерволов и NAT, потребует открытия портов и проброс их или вовсе у участнкиа соединения будет "серый" адрес. В любом случае понадобится некий сервер-посредних с белым адресом в интернете, которым может выступать Asterisk или FreeSwitch. Собственно они и будут выполнять роль "sip-провайдера", устанавливая соединение между 2-мя или более пирами. Так же, у данных АТС есть настройка, по которой сервер после первичного контакта между 2-мя участнкиами, попытается связать их голосовой трафик уже напрямую, однако из-за уже озвученной проблемой с ptp в интернет, данная конфигурация может не работать в "не-локальных сетях".
    Ответ написан
    Комментировать
  • Как в mySQL найти id ряда по строковому значению?

    @ponaehal
    SELECT TOP 1 id FROM people WHERE name = 'Ann'
    Ответ написан
    Комментировать
  • Как запросить случайную строку mySQL, исключая некоторые строки?

    SELECT * 
    FROM tbl
    WHERE 
      id & 1 = 0        # проверка четности
      OR
      id NOT IN (1,2,3) # не из конкретных значений
    ORDER BY RAND()     # случай
    LIMIT 1
    Ответ написан
    Комментировать
  • Как отзеркалить текстуру в libgdx?

    @exenza
    Вот такой код у меня отражает вашу текстуру слева направо:
    sb.begin();
    Texture unnamed = new Texture("unnamed.png");
    int width = unnamed.getWidth();
    int height = unnamed.getHeight();
    sb.draw(unnamed, 350, 350, width, height, 0, 0, width, height, true, false);
    sb.end();


    Но я бы предпочел спрайт:
    sb.begin();
    Texture unnamed = new Texture("unnamed.png");
    Sprite sprite = new Sprite(unnamed);
    sprite.flip(true, false);
    sprite.setCenter(700, 600);
    sprite.draw(sb);
    sb.end();
    Ответ написан
    1 комментарий
  • Как связать KeyListener с gui в java?

    @Che_Bu_Rashka
    наверное добавить лисенер на саму форму окна приложения, тогда событие будет обрабатываться во всех случаях, когда окно приложения активно.

    frame.addKeyListener(new MyKey());

    И нахрена там 2 раза создается
    Snake s = new Snake();
    в разных местах.

    Сделал. Вот так работает

    /src/application/Application.java
    package application;
    
    public class Application {
    
        public static Snake s;
    
        public static void main(String[] args) {
            s = new Snake();
            s.go();
        }
    }


    /src/application/Snake.java
    package application;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyAdapter;
    import javax.swing.*;
    import java.awt.event.KeyEvent;
    
    public class Snake extends JComponent {
    
        int x = 350;
        int y = 350;
        public MyPan drawPanel;
        JFrame frame;
        Timer timer = new Timer(100, new MyKey());
    
        public void go() {
            frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            drawPanel = new MyPan(this);
            timer.start();
            frame.getContentPane().add(drawPanel);
            frame.setSize(700, 700);
            frame.setVisible(true);
    
            frame.setFocusable(true);
            frame.setFocusTraversalKeysEnabled(false);
            frame.addKeyListener(new MyKey());
            frame.setFocusable(true);
        }
    
        public void moveRight() {
            x += 10;
            try {
                Thread.sleep(20);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public void moveLeft() {
            x -= 10;
            try {
                Thread.sleep(20);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public void moveDown() {
            y += 10;
            try {
                Thread.sleep(20);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public void moveUp() {
            y -= 10;
            try {
                Thread.sleep(20);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public class MyKey extends KeyAdapter implements ActionListener {
    
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
                    moveRight();
                }
                if (e.getKeyCode() == KeyEvent.VK_UP) {
                    moveUp();
                }
                if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                    moveLeft();
                }
                if (e.getKeyCode() == KeyEvent.VK_DOWN) {
                    moveDown();
                }
            }
    
            @Override
            public void actionPerformed(ActionEvent e) {
                drawPanel.repaint();
            }
        }
    }


    /src/application/MyPan.java
    package application;
    
    import javax.swing.*;
    import java.awt.*;
    
    public class MyPan extends JPanel {
        //  Snake snake = new Snake();
    
        private Snake s;
    
        public MyPan(Snake ss) {
            s = ss;
        }
    
        public void paint(Graphics g) {
            g.setColor(Color.BLACK);
            g.fillRect(0, 0, 700, 700);
            g.setColor(Color.GREEN);
            g.fillRoundRect(s.x, s.y, 50, 50, 40, 40); 
        }
    }
    Ответ написан
    1 комментарий