Código que se ejecuta pero no parece terminar

Diseñé un juego de mesa en el que dibujo un texto en el que pregunto el color que el jugador quiere elegir antes de jugar. Entonces debería desaparecer pero no desaparece.

def runGame():     # Juega un solo juego cada vez que se llama a esta función.     # Restablece el tablero y el juego.      mainBoard, moveBoard = getNewBoard()     resetBoard(mainBoard)      # Reset the sailors and boat     sailors = []     white_sailors = []     black_sailors = []      sailors = resetSailors(sailors,mainBoard)      turn = random.choice(['player1', 'player2'])      # Dibuja el tablero de partida     drawBoard(mainBoard, sailors)     # ask the player what color they want.     playerTile, computerTile = enterPlayerTile() # <-- AQUÍ EL CÓDIGO QUE MUESTRA EL TEXTO      # Crea los objetos Surface y Rect para los botones "New Game" y "Hints"     newGameSurf = FONT.render('New Game', True, TEXTCOLOR, TEXTBGCOLOR2)     newGameRect = newGameSurf.get_rect()     newGameRect.topright = (WINDOWWIDTH - 8, 10)  def enterPlayerTile():     # Dibuja el texto y maneja los eventos de clic del mouse para permitir # el jugador elige el color que quiere ser. Devuelve     # [WHITE_TILE, BLACK_TILE] si el jugador elige ser WHITE,     # [BLACK_TILE, WHITE_TILE] si Black.      # Create the text.     textSurf = FONT.render('Do you want to be white or black?', True, TEXTCOLOR, TEXTBGCOLOR1)     textRect = textSurf.get_rect()     textRect.center = (int(WINDOWWIDTH / 2), int(WINDOWHEIGHT / 2))      xSurf = BIGFONT.render('White', True, TEXTCOLOR, TEXTBGCOLOR1)     xRect = xSurf.get_rect()     xRect.center = (int(WINDOWWIDTH / 2) - 60, int(WINDOWHEIGHT / 2) + 40)      oSurf = BIGFONT.render('Black', True, TEXTCOLOR, TEXTBGCOLOR1)     oRect = oSurf.get_rect()     oRect.center = (int(WINDOWWIDTH / 2) + 60, int(WINDOWHEIGHT / 2) + 40)      while True:         # Keep looping until the player has clicked on a color.         checkForQuit()         for event in pygame.event.get(): # event handling loop             if event.type == MOUSEBUTTONUP:                 mousex, mousey = event.pos                 if xRect.collidepoint( (mousex, mousey) ):                     return [WHITE_TILE, BLACK_TILE]                 elif oRect.collidepoint( (mousex, mousey) ):                     return [BLACK_TILE, WHITE_TILE]          # Draw the screen.         DISPLAYSURF.blit(textSurf, textRect)         DISPLAYSURF.blit(xSurf, xRect)         DISPLAYSURF.blit(oSurf, oRect)         pygame.display.update()         MAINCLOCK.tick(FPS) 

Mientras que deberia crearse los objetos Surface y Rect para los botones “New Game” y “Hints” despues enterPlayerTile() pero no desaparecie, incluso si dejo la función después de clic.

Por el contrario, en el código que me inspiró no tengo este problema.

Si lo necesites aqui esta el repositorio de mi entero codigo.

Se usa una conexión a base de datos por cada PreparedStatement que ejecuta cada hilo?

La pregunta es simple, uso hilos de ejecución y a cada hilo le paso la misma conexión a base de datos (Solo abro una conexión) lo que no se es, por ser una sola conexión, ¿se ejecutan los PreparedStatement paralelamente (por cada hilo simultáneamente) o se ejecuta uno a la vez haciendo un cuello de botella (se espera a que termine uno para ejecutar otro)?

Adjunto fragmento de codigo, aunque en realidad no es muy necesario.

NOTA: los PreparedStatement son independientes para cada hilo

    public int actualizaMetadata(PreparedStatement ps, DatosMetadata datosMetadata) throws Exception, SQLException {     int resultado;     int registrados = 0;     try {         ps.setBigDecimal(1, datosMetadata.getSubtotal());         ps.setBigDecimal(2, datosMetadata.getTotal_retenidos());         ps.setBigDecimal(3, datosMetadata.getTotal_trasladados());         ps.setBigDecimal(4, datosMetadata.getDescuento());         ps.setString(5, datosMetadata.getMetodoPago());         ps.setString(6, datosMetadata.getSerie());         ps.setString(7, datosMetadata.getFolio());         ps.setString(8, datosMetadata.getUsoCFDI());         ps.setString(9, datosMetadata.getMoneda());         ps.setString(10, datosMetadata.getUuid());         resultado = ps.executeUpdate();         if (resultado <= 0) {             throw new Exception("El UUID: " + datosMetadata.getUuid() + " No esta registrado en la tabla de Metadatos. ");         }         if (resultado > 0) {             registrados++;         }     } catch (SQLException e) {         throw new Exception(e.getMessage());     } catch (Exception ex) {         throw new Exception(ex.getMessage());     } finally {         ps.clearParameters();     }      return registrados; } 

no se ejecuta un envio de datos de un formulario

hola estoy tratando de guardar los datos de un formulario HTML básico en mi base de datos, en el primer código podrán ver cómo accedo al valor de los inputs del formulario y en el segundo como los envió a la base de datos el problema radica en que no me da errores ni nada de hecho no me guarda los datos en la base de datos,el segundo código utilizando esa condicional descubrí que no se esta ejecutando alguien sabe cual podrías ser el error ya busque en varias paginas pero ninguna me da una respuestas.

estoy trabajando bajo MVC, si necesitan mas codigo me lo indican y lo agrego Gracias

/*============================================= 			CREACION DE USUARIO 	=============================================*/ 	public static  function ctrCrearUsuario(){ 		if (isset($  _POST["nuevoUsuario"])) { 				 if(preg_match('/^[a-zA-Z0-9ñÑáéíóúÁÉÍÓÚ ]+$  /', $  _POST["nuevoNombre"]) &&    preg_match('/^[a-zA-Z0-9]+$  /', $  _POST["nuevoUsuario"]) &&    preg_match('/^[a-zA-Z0-9]+$  /', $  _POST["nuevaContraseña"])){ 			                    $  tabla = "usuarios";                    $  datos = array("nombre"=>   $  _POST["nuevoNombre"],                    	          "usuario" => $  _POST["nuevoUsuario"],                    	          "password"=> $  _POST["nuevaContraseña"], 				  "perfil"  => $  _POST["nuevoPerfil"]);                              $  respuesta =ModeloUsuarios::mdlIngresarUsuarios($  tabla, $  datos);                                        if ($  respuesta==="ok"){                         echo "guardado"                    }

 public static function mdlIngresarUsuarios($  tabla, $  datos){  	$  stmt = Conexion::conectar()->prepare("INSERT INTO $  tabla(nombre, usuario, password, perfil, foto) VALUES (:nombre, :usuario, :password, :perfil, :foto)");  	$  stmt->bindParam(":nombre", $  datos["nombre"], PDO::PARAM_STR); 	$  stmt->bindParam(":usuario", $  datos["usuario"], PDO::PARAM_STR); 	$  stmt->bindParam(":password", $  datos["password"], PDO::PARAM_STR); 	$  stmt->bindParam(":perfil", $  datos["perfil"], PDO::PARAM_STR); 	$  stmt->bindParam(":foto", $  datos["foto"], PDO::PARAM_STR);     if ($  stmt->execute()) {        return "ok";    }    else{        return "error";    }   	$  stmt->close(); 	 	$  stmt = null;  }

Como optimizar un proceso que se ejecuta cada 3 segundos sin que cargue el servidor

Tengo la siguiente situación: estoy realizando un proceso cada 3 segundos con la función de javascript (setInterval) donde me conecto a una api (twilio), que leo los datos y después los inserto en la base de datos.

El proceso comienza a funcionar desde el momento en que el usuario inicia sesión en el sistema y se mantiene ejecutando. Aproximadamente como la hora de estar usando el sistema, se comienza a poner lento las peticiones que le hago al servidor medianamente el navegador, lo mismo me sucede si me aumenta el numero de usuarios conectado al sitio. En cuanto detengo el proceso, el servidor se normaliza y a la hora de cargar las paginas lo hace rápido.

Mi pregunta es de que forma puedo poner a correr este proceso de que no me cargue el servidor.

A continuación les dejo el código para ver si me pueden ayudar.

Gracias.

En el javascript:

setInterval('loadnoti()', 3000);  function loadnoti() {     $  .post('index.php?c=sendsms&f=sendnoti', function (data) {         $  ("#idnoti").html(data);     }); } 

En el php:

case 'sendnoti':      $  twilio = new Client($  sid, $  token);      $  messages = $  twilio->messages         ->read(array(), 20);     //print_r($  messages);      foreach ($  messages as $  record) {          if ($  record->status == 'received') {              if (substr($  record->sid, 0, 2) == 'MM') {                 $  media = $  twilio->messages($  record->sid)                     ->media                     ->read(array(), 20);                 foreach ($  media as $  records) {                     $  media = $  twilio->messages($  record->sid)                         ->media($  records->sid)                         ->fetch();                     $  uriimages =  substr("https://api.twilio.com" . $  media->uri, 0, -5);                 }             }              $  datos = array(                 'sfrom' => $  record->to,                 'sto' => $  record->from,                 'sbody' => $  record->body,                 'sid' => $  record->sid,                 'status' => $  record->status,                 'imagen' => $  uriimages             );             $  sen->get_smsval($  record->sid, $  datos);         }         echo $  sen->get_smsnoti($  sfrom, $  tipo);     }      break; 

.html no ejecuta lo que he escrito

tengo un pequeño problema con un html que estoy practicando. Resulta que estoy tomando un pequeño curso de programación en el cual estamos viendo Html y me ha tocado una “tarea” sobre el comando “if” a modo de práctica, el problema es que he escrito el código, tal cual me ha dicho el profesor, pero al momento de ejecutar el archivo, éste no hace nada, a continuación, dejaré lo que he escrito para que me puedan ayudar, de antemano muchas gracias.

Aqui está

PHPMAILER ejecuta todo menos $mail->Send();

estoy con un script para informar de la falta de stock mediante e-mail y no hay manera de hacerlo funcionar llevo todo el dia con este problema y no hay manera de hacerlo funcionar.

colo cando echos ejecuta absolutamente todo menos el Send();

Ademas estoy usando la ultima version de php mayler que deveria de ser la mas estable y en el proyecto de un compañero funciona pero este no los tenemos casi iguales y no funciona.

 <?php     session_start();     error_reporting(E_ERROR);     if ($  _GET[id]!='') {         require('conexion.php');         require 'class.phpmailer.php';         $  id = $  _GET[id];         $  select=mysqli_query($  con,"SELECT Cantidad FROM g_stock WHERE Id = '$  id'");         $  cantidad=mysqli_fetch_array($  select);         if($  cantidad['Cantidad']>0){             $  sql = "UPDATE g_stock SET Cantidad=Cantidad-1 WHERE Id = '$  id'";             if (mysqli_query($  con, $  sql)) {                 echo "OK";             } else {                 echo "Error operando registro";             }             $  select1=mysqli_query($  con,"SELECT Cantidad, Cantidad_minima FROM g_stock WHERE Id = '$  id'");             $  cantidad=mysqli_fetch_array($  select1);             echo $  cantidad;             if ($  cantidad['Cantidad'] <= $  cantidad['Cantidad_minima']){                 $  id=$  _GET[id];                 $  select3=mysqli_query($  con,"SELECT * FROM g_stock WHERE Id = '$  id'");                 $  articulo=mysqli_fetch_array($  select3);                 $  mensaje="<p>Se acaba de reducir el stock de ".$  articulo['Articulo']." ahora mismo hay ".$  articulo['Cantidad']." unidades de ".$  articulo['Cantidad_minima']."que deberia haber como minimo.</p>";                 $  mail = new PHPMailer;                 $  mail->IsSMTP();                 $  mail->Host = 'smtp.cysnet.info';                  $  mail->SMTPAuth=true;                 $  mail->From = 'alchemymachinelearning@gmail.com';                 $  mail->Username = 'alchemymachinelearning@gmail.com';                 $  mail->FromName = 'Web ERP';                 $  mail->Password ='alchemyVerifications';                 $  mail->AddAddress('miniguez@skootik.com');                 $  mail->WordWrap = 50;                                                  $  mail->IsHTML(true);                  $  mail->Subject = "Mensaje de falta de Stock";                 $  mail->Body = $  mensaje;                 echo $  mail->Body;                 /*?>                     <script>console.log('<?php echo $  mail; ?>');</script>                 <?php*/                 $  exito = $  mail->Send();                 echo $  exito;                 /*if(!$  mail->Send()) {                    echo "<span style='color:red;'>Tu mensaje no se ha podido enviar. EscrĂ­benos a info@skootik.com</span>";                    echo 'Mailer Error: ' . $  mail->ErrorInfo;                 }*/             }             mysqli_close($  con);             header('Location: ../stock.php');             exit;         }     } ?>  

¿Por qué la vista no ejecuta repaint() en update()?

Tengo problemas, al pintar una vista, siguiendo el patrón MVC.

El problema es que cuando el modelo indica que el objeto observable ha cambiado, se ejecuta la actualización de la vista, pero al llamar al repaint() no ejecuta su contenido. Lo que quiero pintar es una imagen, el problema puede ser que la clase extiende la vista, no sea apropiada (Canvas).

Al depurar, lo que sucede es que el modelo notifica a la vista que el objeto se ha modificado, luego ejecuta el método update (), pero no ejecuta el contenido de paint ().

El modelo se modifica cuando la “anguloRotacion”, en la que aumento o disminuyo, el ángulo de rotación de la imagen. Este código se encuentra dentro del método anguloRotacion (), dentro del modelo.

Si necesitáis más explicaciones o aclaraciones, por favor hacermelo saber. Realmente necesito resolver este problema.

Controller code:

/*  * To change this license header, choose License Headers in Project Properties.  * To change this template file, choose Tools | Templates  * and open the template in the editor.  */ package controlador;  import Auxiliares.Canon; import Auxiliares.Casilla; import Auxiliares.ContenedorFinal; import Vistas.*; import Vistas.VistaCanon; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.*; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.geom.AffineTransform; import java.awt.geom.Line2D; import java.awt.image.AffineTransformOp; import java.awt.image.BufferedImage; import java.io.IOException; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; import javax.imageio.ImageIO; import javax.swing.*; import javax.swing.plaf.basic.BasicProgressBarUI;  /**  *  * @author ignacioaranguren  */ public class Controlador extends JFrame {      private JPanel contenedorFinal;     private JProgressBar barra;     private ActionListener ac;     private Timer t;     private int puntuacion = 0;     private DecimalFormat timeFormatter;     private JLabel etiquetaFin;     private JButton finalizar;     private Graphics2D offGraphics;     private Image offImage;     private Modelo modelo;     private VistaCanon vistaCanon;     private VistaBala vistaBala;     private VistaCasillas vistaCasillas;     private VistaCorazon vistaCorazon;     private VistaHaCaidoAgua vistaHaCaidoAgua;     private VistaSegundero vistaSegundero;     private VistaPuntuacion vistaPuntuacion;      public Controlador() {          setLayout(null);         modelo = new Modelo();         vistaCanon = new VistaCanon(modelo);          modelo.addObserver(vistaCanon);          modelo.initComponents();         timeFormatter = new DecimalFormat("00");         etiquetaFin = new JLabel("Juego finalizado");         etiquetaFin.setFont(new Font("Arial", Font.PLAIN, 35));         etiquetaFin.setBounds(250, 330, 300, 100);         etiquetaFin.setVisible(false);         finalizar = new JButton("Menu principal");         finalizar.setBounds(300, 410, 150, 30);         finalizar.addActionListener(new ActionListener() {             @Override             public void actionPerformed(ActionEvent e) {                 System.exit(0);             }         });         finalizar.setVisible(false);         contenedorFinal = new ContenedorFinal();         contenedorFinal.setBackground(Color.red);         contenedorFinal.setVisible(false);         contenedorFinal.setBounds(0, 0, 940, 900);          barra = new JProgressBar(JProgressBar.HORIZONTAL, 0, 100);         barra.setBounds(450, 730, 200, 40);         barra.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 2, true));         barra.setUI(new BasicProgressBarUI() {             @Override             protected void paintDeterminate(Graphics g, JComponent c) {                 Graphics2D g2d = (Graphics2D) g;                 int ancho = barra.getWidth();                 int alto = barra.getHeight();                  int espacioAncho = ancho;                 int espacioAlto = alto;                 barra.setPreferredSize(new Dimension(200, 40));                 double porcentajeProgres = barra.getPercentComplete();                  espacioAncho = (int) (espacioAncho * porcentajeProgres);                 if (porcentajeProgres <= 0.25) {                     g2d.setColor(Color.GREEN);                 } else if (porcentajeProgres > 0.25 && porcentajeProgres <= 0.5) {                     g2d.setColor(Color.yellow);                 } else if (porcentajeProgres > 0.5 && porcentajeProgres <= 0.75) {                     g2d.setColor(Color.orange);                 } else {                     g2d.setColor(Color.red);                 }                 Rectangle rec1 = new Rectangle(0, 0, espacioAncho, espacioAlto);                 g2d.fill(rec1);             }          });            ac = new ActionListener() {             @Override             public void actionPerformed(ActionEvent e) {                 modelo.BarraProgreso();             }          };          modelo.setBarra(barra);         modelo.setBotonFinalizar(finalizar);         modelo.setContenedorFinal(contenedorFinal);         modelo.setEtiquetaFin(etiquetaFin);         modelo.setTimerFormater(timeFormatter);          t = new Timer(35, ac);         t.start();          addKeyListener(new KeyAdapter() {             @Override             public void keyPressed(KeyEvent evento) {                 switch (evento.getKeyCode()) {                     case KeyEvent.VK_LEFT:                         modelo.anguloRotacion(1);                         break;                     case KeyEvent.VK_RIGHT:                         modelo.anguloRotacion(2);                         break;                     case KeyEvent.VK_ENTER:                         modelo.anguloRotacion(3);                         break;                     case KeyEvent.VK_ESCAPE:                                  repaint();                         modelo.salirJuego(JOptionPane.showConfirmDialog(null, "¿Volver al menú principal?", "Juego", JOptionPane.YES_NO_OPTION));                         break;                     case KeyEvent.VK_H:                         JOptionPane.showMessageDialog(null, "-Pulsa las teclas izquierda y derecha para mover el cañón.\n-Selecciona una "                                 + "intensidad mediante la barra de fuerza:\n   -Rojo = Disparar fuerte.\n   -Amarillo = disparar medio fuerte"                                 + ". \n   -Verde = disparar suave.\n-Pulsa Enter para disparar. \n-Durante el disparo puedes modificar su trayectoria mediante la teclas izquierda y derecha."                                 + "\n-La puntuación: \n   -Los cangrejos (+1). \n   -Los tesoros (+2). \n   -Las botellas de ron (-1) vidas.", "Cómo jugar", JOptionPane.QUESTION_MESSAGE);                         break;                 }                 requestFocus();             }             });          addWindowListener(new java.awt.event.WindowAdapter() {             @Override             public void windowClosing(java.awt.event.WindowEvent evt) {                 close();             }         });          setSize(940, 900);         setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);         add(finalizar);         add(etiquetaFin);         setResizable(false);         add(contenedorFinal);         add(barra);         setVisible(true);      }      @Override     public void paint(Graphics g) {         Graphics2D g2d = (Graphics2D) g;         Image fondo = new ImageIcon(getClass().getResource("/imagenes/fondo.jpeg")).getImage();         g2d.drawImage(fondo, 0, 0, null);         g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,         RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);         g2d.setFont(new Font("Marker Felt", Font.PLAIN, 30));         g2d.setColor(Color.white);         g2d.drawString("Cómo jugar, Pulsa H", 710, 330);         g2d.drawString("Pulsa ESC para salir", 710, 380);               Image img2 = new ImageIcon(getClass().getResource("/imagenes/fondoMapa.png")).getImage();         g2d.drawImage(img2, 30, 30, this);     }      private void close() {         if (JOptionPane.showConfirmDialog(rootPane, "¿Volver al menú principal?",                 "Juego", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {             System.exit(0);         }     }      } 

Model manipulation:

   package controlador;  import Auxiliares.Canon; import Auxiliares.Casilla; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.IOException; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Observable; import java.util.logging.Level; import java.util.logging.Logger; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.Timer;  /**  *  * @author ignacio  */ public class Modelo extends Observable {      private double anguloRotacion, anguloMin, anguloMax;     private boolean teclaPresionada, flag, flagBala, pintarCasilla, balaAgua;     private JProgressBar barra;     private double vX, vY, x1, x2, x1Anterior, x2Anterior, alfa, escala, i;     private Timer animacion, timer;     private Canon canon;     private int progreso, x, y, puntuacion, vidas, posVidaX, contadorCasilla;     private Casilla[][] casilla;     private double posX[], posY[];     private BufferedImage imgB;     private Image img2, fondo, fondoMapa, vida, img;     private ArrayList<Casilla> arrayCasilla;     private JLabel etiquetaFin;     private JButton finalizar;     private JPanel contenedorFinal;     private byte seconds;     private short minutes;     private DecimalFormat timeformater;       public void setBarra(JProgressBar b){         this.barra = b;     }      public void setEtiquetaFin(JLabel f){         this.etiquetaFin = f;     }      public void setTimerFormater(DecimalFormat d){         timeformater = d;     }      public void setContenedorFinal(JPanel p){         contenedorFinal = p;     }      public void setBotonFinalizar(JButton b){         this.finalizar = b;     }       public void initComponents(){         seconds = 00;         minutes = 03;          timer = new Timer(1000, new ActionListener() {             @Override             public void actionPerformed(ActionEvent e) {                  if (seconds == 0 && minutes == 0) {                     timer.stop();                     etiquetaFin.setVisible(true);                     finalizar.setVisible(true);                     contenedorFinal.setVisible(true);                  } else if (seconds > 0) {                     seconds--;                     setChanged();                     notifyObservers();                  } else if (minutes > 0) {                     minutes--;                     seconds = 59;                     setChanged();                     notifyObservers();                 }              }         });         timer.start();          posX = new double[]{30, 79, 128.0, 177.0, 226.0, 275.0, 324.0, 373.0, 422.0, 471.0, 520.0, 569.0, 618};         posY = new double[]{30, 83.0, 136.0, 189.0, 242.0, 295.0, 348.0, 401.0, 454.0, 507.0, 560.0, 613.0, 613};         casilla = new Casilla[13][13];         inicializarCasillas();         anguloRotacion = Math.PI / 2;         vidas = 3;         anguloMax = 0.81986726449;         anguloMin = anguloMax = 2.32172538679;         teclaPresionada = false;         flag = false;         flagBala = false;         pintarCasilla = false;         balaAgua = false;         i = 0;         progreso = 0;         this.canon = canon = new Canon();         this.barra = barra;         arrayCasilla = new ArrayList<>();         llenarCasillas();     }      public void cargarImagenes() {         try {             img2 = new ImageIcon(getClass().getResource("/imagenes/fondoMapa.png")).getImage();             fondo = new ImageIcon(getClass().getResource("/imagenes/fondo.jpeg")).getImage();             vida = new ImageIcon(getClass().getResource("/imagenes/vida.png")).getImage();             img = new ImageIcon(getClass().getResource("/imagenes/BalaCanon.png")).getImage();             imgB = ImageIO.read(getClass().getResource("/imagenes/canon.png"));         } catch (IOException ex) {             Logger.getLogger(Modelo.class.getName()).log(Level.SEVERE, null, ex);         }      }      public void anguloRotacion(int direccion) {         switch (direccion) {             case 1:                 if (anguloRotacion > anguloMin && anguloRotacion < anguloMax) {                     anguloRotacion = anguloRotacion + 0.05;                 } else {                     anguloRotacion = anguloRotacion - 0.05;                 }                 setChanged();                 notifyObservers();                 break;             case 2:                 if (anguloRotacion > anguloMin && anguloRotacion < anguloMax) {                     anguloRotacion = anguloRotacion - 0.05;                 } else {                     anguloRotacion = anguloRotacion + 0.05;                 }                 setChanged();                 notifyObservers();                 break;              default:                 break;         }      } } 

View code:

package Vistas;  import controlador.Modelo; import java.awt.Canvas; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; import java.util.Observable; import java.util.Observer;   public class VistaCanon extends Canvas implements Observer {      private Modelo m;      public VistaCanon(Modelo m) {         this.m = m;     }      @Override     public void paint(Graphics g) {         super.paint(g);         Graphics2D g2d = (Graphics2D) g;         g2d.setColor(Color.gray);         g2d.fillRect(30, 720, 646, 122);         AffineTransform tx = AffineTransform.getRotateInstance(Math.PI / 2 - m.getAnguloRotacion(), m.getImB().getWidth(this) / 2, m.getImB().getHeight(this) / 2);         AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);         tx.rotate(Math.PI / 2 - m.getAnguloRotacion());         System.out.println(tx.toString());          g2d.drawImage(op.filter(m.getImB(), null), 360, 740, null);     }      @Override     public void update(Observable o, Object arg) {         repaint();     }  } 

Awk se ejecuta en consola pero cuanto lo meto a un archivo .sh da error

El script sirve par insertar informacion a mariadb, mi base de datos se llama “Top” y mi tabla se llama “Procesos”, los campos que estoy llenando son

(User, Pid,  Cpu, Mem, Vsz, Rss, Tty, Stat, Start, Time, Command) 

con los valores que están en el archivo “texto.txt”.

elias@elias-VirtualBox:~$   mysql -u root -p Top < <(awk '/ [0-11]+/ {print "INSERT INTO Procesos (User, Pid,  Cpu, Mem, Vsz, Rss, Tty, Stat, Start, Time, Command) VALUES (\""$  1"\", \""$  2"\", \""$  3"\", \""$  4"\", \""$  5"\", \""$  6"\", \""$  7"\", \""$  8"\", \""$  9"\", \""$  10"\", \""$  11"\");"}' /var/www/html/texto.txt) Enter password:  

Después de ingresar la contraseña de la base de datos y revisarla, efectivamente se cargan los datos, el problema es que estoy tratando de automatizarlo y cuando lo ejecuto en un archivo .sh me da el siguiente error

elias@elias-VirtualBox:/var/www/html$   ./insert.sh ./insert.sh: línea 2: error sintáctico cerca del elemento inesperado `<' ./insert.sh: línea 2: `mysql -u root -p Top < <(awk '/ [0-11]+/ {print "INSERT  INTO Procesos (User, Pid,  Cpu, Mem, Vsz, Rss, Tty, Stat, Start, Time, Command) VALUES (\""$  1"\", \""$  2"\", \""$  3"\", \""$  4"\", \""$  5"\", \""$  6"\", \""$  7"\", \""$  8"\", \""$  9"\", \""$  10"\", \""$  11"\");"}' /var/www/html/texto.txt)' 

Muchas gracias por su ayuda.

P.D.: Estoy usando Ubuntu 18.04.2 LTS

Mi script en php se ejecuta dos veces desde xampp

Tengo un script sencillo en php es cual solo ejecuta un query a la base de datos, pero resulta que se ejecuta dos veces, pensé que era la cache ya que cuando lo ejecuto desde el modo incognito (Chrome) y solo ejecuta una vez. Lo corro desde xampp. Quizá sea alguna configuración del apache.

class Conectar{     public static function conexion(){         $  conexion=new mysqli("localhost", "root", "", "alquiler");         $  conexion->query("SET NAMES 'utf8'");         return $  conexion;     } } $  conexion = new Conectar(); $  mysqli = $  conexion->conexion(); $  randon = rand(); $  sql = "INSERT INTO correo (randon) values ('".$  randon."')"; if($  mysqli->query($  sql)){     echo $  sql; } else {     echo $  mysqli->error; } 

¿Por que mi función no ejecuta el primer if en mi validación en Javascript?

¿Por que mi función no ejecuta el primer if en mi validación en Javascript? tengo este problema con mi código en javascript que si entra la función pero no las condiciones por lo tanto no entra la evaluación de los datos y envia los datos aun que los campos estes vacíos. No tengo idea cual es el error. Les dejo mi código html y mi javascript ojalá me puedan ayudar saludos.

Este es mi codigo js

function vale() {     alert("Entra la Fucncion");     var nombre, apellidos, correo, password, cofpassword, telefono, celular, expression, calle, colonia, ciudad, estado, cp, terminos;      nombre = document.getElementById("nombre").value;     apellidos = document.getElementById("apelli").value;     correo = document.getElementById("correo").value;     password = document.getElementById("contra").value;     cofpassword = document.getElementById("confcont").value;     telefono = document.getElementById("telf").value;     celular = document.getElementById("celu").value;     calle = document.getElementById("calle").value;     colonia = document.getElementById("colonia").value;     ciudad = document.getElementById("ciudad").value;     estado = document.getElementById("estado").value;     cp = document.getElementById("cp").value;     terminos = document.getElementById("terminos").checked;      expression = /\w+@\w+\.+[a-z]/;      alert("Entra la Fucncion"); if (nombre == "" || apellidos == "" || correo == "" || password == "" || cofpassword == "" || telefono == "" || celular == "" || calle == "" || colonia == "" || ciudad == "" || estado == "" || cp == "") {         alert("Todos los campos son obligatorios");         return false;     } else if (nombre.length > 30) {         alert("El nombre es muy largo");         return false;     } else if (apellidos.length > 80) {         alert("Los apellidos son muy largos");         return false;     } else if (correo.length > 100) {         alert("El correo es muy largo");         return false;     } else if (!expression.test(correo)) {         alert("El correo no es valido");         return false;     } else if (password.length > 20 || cofpassword.length > 20) {         alert("La contraseña es muy larga");         return false;     } else if (password != cofpassword) {         alert("La contraseña no coincide");         return false;     } else if (telefono.length > 10 || celular.length > 10) {         alert("Los numeros de telefono o celular son debe ser de 10 digitos");         return false;     } else if (isNaN(telefono)) {         alert("El telefono no es un numero");         return false;     } else if (isNaN(celular)) {         alert("El celular no es un numero");         return false;     } else if (calle.length > 100) {         alert("La calle es muy larga");         return false;     } else if (colonia.length > 50) {         alert("La colonia es muy larga");         return false;     } else if (ciudad.length > 50) {         alert("La ciudad es muy larga");         return false;     } else if (estado.length > 50) {         alert("La estado es muy larga");         return false;     } else if (isNaN(cp)) {         alert("El CP debe ser un numero");         return false;     } else if (terminos == false) {         alert("Deve de Aceptar los terminos y Condiciones");         return false;     } else {         return true;     }  } 

este es mi codigo html

<!DOCTYPE html> <html>  <head>     <title>Registro</title>     <meta charset="UTF-8">     <link rel="stylesheet" type="text/css" href="../css/header.css">     <link rel="stylesheet" type="text/css" href="../css/estilos.css">     <script src="validar.js"></script> </head>  <body>     <header>         <div class="Contenedor">             <div class="fondo">                  <a href="../index.html"><img src="../Img/UembekuaLogo.png" id="Logo" alt="Logo Uembekua" onsubmit="return vale()"></a>              </div>             <nav>                 <ul class="nav">                     <li><a href="../index.html">Home</a></li>                     <li><a href="Servicios.html">Servicios</a>                         <ul class="Submenu">                             <li><a href="Paquetes.html">Paquetes</a></li>                             <li><a href="Cursos.html">Cursos</a></li>                             <li><a href="Vacaciones.html">Vacaciones</a></li>                             <li><a href="Masajes.html">Masajes</a></li>                             <li><a href="Precios.html">Precios</a></li>                             <li><a href="Reservacion.html">Reserva tu Servicio</a></li>                         </ul>                     </li>                     <li><a href="Conocenos.html">Conocenos</a></li>                     <li><a href="Instalaciones.html">Instalaciones</a></li>                     <li><a href="Informacion.html">Info</a></li>                  </ul>             </nav>          </div>     </header>     <main>          <section>             <form style="padding: 20px; margin-top: 20px" method="post" action="reg.php" onsubmit=" return vale()">                  <font style="font-family: Rockwell;">                     <center>                          <table align="Center" cellpadding="5px" cellspacing="5px">                             <tr>                                 <td align="center" colspan="3">                                     <h2>Crear cuenta</h2><br>                                 </td>                              </tr>                             <tr>                                 <td>Nombre:</td>                                 <td colspan="2"><input type="text" placeholder="Nombre" id="nombre" name="nombre"><br></td>                             </tr>                              <tr>                                 <td>Apellidos: </td>                                 <td colspan="2"><input type="text" placeholder="Apellidos" id="apelli" name="apelli"><br></td>                             </tr>                                <tr>                                 <td>Correo:</td>                                 <td colspan="2"><input type="email" placeholder="example@correo.com" id="correo" name="correo"><br></td>                             </tr>                             <tr>                                 <td>Contraseña:</td>                                 <td colspan="2"><input type="password" placeholder="Contaseña" id="contra" name="contra"><br></td>                             </tr>                              <tr>                                 <td>Confirmar contraseña:</td>                                 <td colspan="2"><input type="password" placeholder="Contaseña" id="confcont"><br></td>                             </tr>                             <tr>                                 <td>Teléfono:</td>                                 <td colspan="2"><input type="text" placeholder="Tu teléfono" id="telf" name="telf"><br></td>                             </tr>                             <tr>                                 <td>Celular:</td>                                 <td colspan="2"><input type="text" placeholder="Tu celular" id="celu" name="celu"><br></td>                             </tr>                                <tr>                                 <td>Calle#:</td>                                 <td colspan="2"><input type="text" placeholder="Tu Calle#" id="calle" name="calle"><br></td>                             </tr>                             </tr>                                <tr>                                 <td>Colonia:</td>                                 <td colspan="2"><input type="text" placeholder="Tu colonia" id="colonia" name="colonia"><br></td>                             </tr>                             </tr>                                <tr>                                 <td>Ciudad:</td>                                 <td colspan="2"><input type="text" placeholder="Ciudad" id="ciudad" name="ciudad"><br></td>                             </tr>                               <tr>                                 <td>Estado:</td>                                 <td colspan="2"><input type="text" placeholder="Estado" id="estado" name="estado"><br></td>                             </tr>                             <tr>                                 <td>CP:</td>                                 <td colspan="2"><input type="text" placeholder="CP" id="cp" name="cp"><br></td>                             </tr>                                <tr cellpadding="5" align="center">                                  <td colspan="2"><input type="checkbox" name="terminos"><a href="https://www.timeinc.net/subs/privacy/termsofservice/pptos.html">Terminos y Condiciones</a></td>                                 </tr>                              <tr cellpadding="5" align="center">                                  <td colspan="2"><input type="submit" id="save" value="Registrarse"></td>                                 </tr>                          </table>                     </center>                 </font>             </form>             <center>              <a href="Reservacion.html"><input type="submit" name="cancel" value="Cancelar"></a>             </center>         </section>      </main>      <footer>         <p align="center" id="copyright">Uémbekua &mdash; Todos los derechos reservados &copy; </p>         <a href="#"><img src="../Img/facebook1.png" id="img1"></a>         <a href="#"><img src="../Img/instagram1.png" id="img2"></a>     </footer>  </body>  </html>