Como diminuir tempo de execução desse código

To resolvendo um desafio aqui, que é esse aqui: https://justpaste.it/2277i

E minha solução foi essa:

https://justpaste.it/71ken

Ele passou em 10 dos 15 testes, e os outros 5 deu timeout. alguém tem alguma sugestão para otimizar o código? O erro que deu foi “Terminated due to timeout”, porque o codigo ficou executando por mais de 10 segundos (ele dá timeout qunado chega em 10). Como faço pra otimizar esse código?

Como pegar o tempo de duração de um vídeo em Java?

Estou desenvolvendo um player que vai passar imagens, paginas Web e Videos. As imagens e Paginas Web precisam de um temporizador que vai ser executado por 30 Segundos, só que agora preciso de um método que pegue o tempo de execução dos vídeos que insira o código aqui serão mostrados e colocar o valor na Trhead.sleep.

public void testeVideo(int indice){         ArrayList<Uri> listaExecucao = getListaExecucao();         String midia = listaExecucao.get(indice).toString();         Uri midia1 = Uri.parse(midia);         vv.setVisibility(View.VISIBLE);         vv.setVideoURI(midia1);         duracao = vv.getDuration();         String duracaoS = String.valueOf(duracao);          Toast.makeText(WebPlayerActivity.this,duracaoS, Toast.LENGTH_SHORT).show();     }

Tentei usar essa função e coloquei um Toast para saber qual o valor que foi passado porém o valor passado foi -1.

Como é possível não utilizar uma dependência para compilar, mas utiliza-la em tempo de execução?

Estudando ferramentas de build como maven, vi que é possível declarar o escopo de uma dependência apenas como runtime, o que impossibilitaria a compilação de um código que utiliza ela. Como isso é possível, não compilar uma dependência mas utiliza-la em runtime?

Usando input radio e fazendo operações em tempo real com javascript

Sobre dar aulas, quero que a aula iniciante custe 20 por aula e a avançada 40, diferenciando usando radio buton, e a quantidade de aula com input type range, mas não entendo muito de js e queria essa ajuda, ae vai o codigo que adaptei da internet mas ele só serve para aula iniciante pois faz a quantidade de aula vezes 20 e queria que coletasse a variavel do radio e usasse no lugar do 20.

OBG

<!DOCTYPE html> <html>   <head>     <title></title>     <meta charset="utf-8">   </head>   <body> 	<section>       <h3>Escolha o pacote desejado</h3><hr>         Iniciante<input type="radio" name="radio" id="iniciante" checked /><br>         Avançado<input type="radio" name="radio" id="avancado" />          <h4>Quantidade de Aulas:</h4>          <input id="price" class="slider" type="range" min="1" max="30" value="1"/>           <span id="resultado1" style="font-size: 25px;"></span>        <h4>Total:</h4>         <p id="resultado2">Preço: </p> </section> <script>  var p = document.getElementById("price"),     res1 = document.getElementById("resultado1"),     res2 = document.getElementById("resultado2");  p.addEventListener("input", function () {     res1.innerHTML = p.value; }, false); p.addEventListener("mouseup", function () {     res2.innerHTML = "Preço: " + p.value * 20 + ",00"; }, false);  </script>   </body> </html>

Tempo de envio de dados

Estou a desenvolver uma pequena estação de meteorologia para aplicar num terreno agricola, que consiste em ter um sensor de temperatura, um sensor de chuva e um sensor de humidade este a incoporar mais tarde pois ainda não o tenho. No entanto queria pôr a enviar os dados de temperatura com um delay de 600000ms e que o sensor de chuva tivesse um delay de 1000. Não estou ver a forma como faze-lo. O que fiz de código até agora é o seguinte:

#include <ESP8266WiFi.h> #include <PubSubClient.h> #include <Wire.h> #include <farmerkeith_BMP280.h>  int rainSensor = A0; int rainLED = 2; int dryLED = 3; int sensorVal; int sensortrigger = 350; /*    Conexao ao AP    Credenciais de acesso    SSID - Nome do AP de acesso    Password - Passsword de acesso */ #define wifi_ssid "xxxxxxxx" #define wifi_password "xxxxxxxxx" /*    Endereço IP do MQTT Broker (Mosquitto) */ #define mqtt_server "192.168.1.10" /*    Definição dos tópicos dos dados dos sensores */ #define bmp_temperature_topic "temperaturebmp" #define bmp_pressure_topic "pressurebmp" #define rain_sensor_topic "rainstate"  /*    Inicialização das classes */ WiFiClient espClient; PubSubClient client(espClient); bmp280 bmp0;  void setup() {   Serial.begin(115200);   pinMode(rainSensor, INPUT);   pinMode(rainLED, OUTPUT);   pinMode(dryLED, OUTPUT);   digitalWrite(rainLED, LOW);   digitalWrite(dryLED, LOW);   setup_wifi();   client.setServer(mqtt_server, 1883);   bmp0.begin(); } void setup_wifi() {   delay(10);   /*      Inicio de conexão á rede Wi-Fi   */   Serial.println();   Serial.print("Connecting to ");   Serial.println(wifi_ssid);   WiFi.begin(wifi_ssid, wifi_password);   while (WiFi.status() != WL_CONNECTED) {     delay(500);     Serial.print(".");   }   Serial.println("");   Serial.println("WiFi connected");   Serial.println("IP address: ");   Serial.println(WiFi.localIP()); }  void reconnect() {   /*    *Loop de reconexão até que se conecte na rede Wi-Fi e no MQTT Broker    */   while (!client.connected()) {     Serial.print("Attempting MQTT connection...");     // Attempt to connect     // If you do not want to use a username and password, change next line to     // if (client.connect("ESP8266Client")) {     if (client.connect("changeMe")) {       Serial.println("connected");     } else {       Serial.print("failed, rc=");       Serial.print(client.state());       Serial.println(" try again in 5 seconds");       // Wait 5 seconds before retrying       delay(5000);     }   } } void loop() {   if (!client.connected()) {     reconnect();   }   client.loop();   // Segundos de espera entre medidas        int sensorVal = analogRead(rainSensor);       if (sensorVal < sensortrigger) {         Serial.println("Rain");         digitalWrite(dryLED, LOW);         digitalWrite(rainLED, HIGH);         client.publish(rain_sensor_topic, String("Raining").c_str(), true);       }       else {         Serial.println("Not Rain");         digitalWrite(rainLED, LOW);         digitalWrite(dryLED, HIGH);         client.publish(rain_sensor_topic, String("Not Raining").c_str(), true);       }       // Leitura da temperatura e pressão       double temperature = bmp0.readTemperature (); // measure temperature       Serial.print("Temperature = ");       Serial.print(temperature, 3); // print with 3 decimal places       Serial.println( " degrees Celsius");       client.publish(bmp_temperature_topic, String(temperature).c_str(), true);        double pressure = bmp0.readPressure (); // measure pressure       Serial.print("Atmospheric pressure = ");       Serial.print(pressure, 4); // print with 4 decimal places       Serial.println( " mbar");       client.publish(bmp_pressure_topic, String(pressure).c_str(), true);       delay(2000); } 

Problema com gráfico em tempo real C#

Estou tentando desenhar um gráfico em tempo real.

Nesse gráfico eu vou desenhando o sinal do ponto (0,y) até ao ponto (Width,y) usando um cursor vermelho para saber onde está desenhando atualmente. Quando o gráfico atingir o valor da propriedade Width, deve retornar ao início (ponto(0,y)). Ao iniciar novamente o desenho do gráfico eu devo ir apagando as colunas de pixels a frente do cursor vermelho.

Para exemplificar estou anexando o código:

public class GraphControl : Control {     int contador = 0;     public int _minValue;     public int _maxValue;     public int _dataCount;     private List<float> _values1 = new List<float>();      public GraphControl()     {         SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw, true);     }      public void AddValue(float value1)     {         _values1.Add(value1);         contador++;         if (contador == 3)         {             Invalidate();             contador = 0;         }     }      protected override void OnPaint(PaintEventArgs e)     {         using (var p = new Pen(Color.FromArgb(95, 95, 95), 1.5f)) e.Graphics.DrawRectangle(p, 0, 0, Width - 1, Height - 1);         e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;         var wid = (float)Width / (float)_dataCount;          var total = _maxValue - _minValue;          var lastPoint1 = new PointF(0F, (float)(Height / 2));         PointF newPoint1 = new PointF();          for (int i = 0, a = 0; i < _values1.Count; i++, a++)         {             float value;             try             {                 value = (float)(_values1[i]);             }             catch             {                 value = (float)(_values1[i - 1]);             }              var porcent = value / total;              if (porcent > 1) porcent = 1;             var hg = porcent * (Height / 4);              newPoint1.X = (a + 1) * wid;              if (porcent >= 1) newPoint1.Y = Height / 4 - hg;             else newPoint1.Y = Height / 4 - hg - 1;              using (var p = new Pen(Color.Lime, 0.1f)) e.Graphics.DrawLine(p, lastPoint1, newPoint1);              lastPoint1 = newPoint1;              //cursor vermelho             using (var p = new Pen(Color.Red, 2)) e.Graphics.DrawLine(p, new PointF((a+1)*wid,0), new PointF((a+1)*wid,Height));              //apagando coluna de pixel (com cinza, cor do grafico)             using (var p = new Pen(Color.FromArgb(53, 53, 53))) e.Graphics.DrawLine(p, new PointF((a + 2) * wid, 0), new PointF((a + 2) * wid, Height));              if (a == _dataCount) a = 0;         }         base.OnPaint(e);     } } 

Há dois problemas com o código:

  • O cursor vermelho é desenhado várias vezes durante todo o percurso fazendo um borrão vermelho na tela
  • O jeito que eu estou apagando os próximos pixels não funciona.

Alguém pode me ajudar com esse problema ou dar dicas da resolução? Procurei em vários fóruns e não encontrei nada relacionado.

Como manter a requisição aberta para usar o método write() depois de muito tempo

Eu preciso manter a conexão aberta para depois de 180 segundos escrever os novos dados. O problema é que dessa forma que eu fiz, a stream simplesmente para depois da primeira musica. Como posso fazer para continuar aberta a conexão e tocar a segunda musica também ?

app.get('/current', async (req, res) => {     let stream = fs.createReadStream('sounds/musica 1.mp3')      stream.on('data', chunk => {         res.write(chunk)     })      setInterval(() => {         let temp = fs.createReadStream('sounds/musica 2.mp3')          temp.on('data', chunk => {             res.write(chunk)         })     }, 180*1000) })  server.listen(3005, async function () {     console.log('Server is running on port 3005...') }); 

Atualização em tempo real firebase

Tenho um método que quero que verifique a todo momento no banco de dados se um campo do nó filho é modificado(no caso, o campo “status”), quando ele é alterado, quero que o texto na tela do android seja modificado. Estou conseguindo fazer a alteração no texto, porém quando saio e entro na tela de novo a mensagem some (mesmo quando o status no banco de dados é alterado). Código:

@Override protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_principal);      circleImageViewUser = findViewById(R.id.circleImageViewUser);     txtOcorrencias = findViewById(R.id.txtOcorrencias);     txtStatus = findViewById(R.id.txtStatus);     txtPendencias = findViewById(R.id.txtPendencias);     txtSaudacao = findViewById(R.id.txtSaudacao);      Toolbar toolbar = findViewById(R.id.toolbarPrincipal);     setSupportActionBar(toolbar);       recuperarUsuario();     recuperarFotoUsuario();      verificaStatusOcorrencia();  }   public void verificaStatusOcorrencia() {     String idUsuario = UserFirebase.getDadosUsuarioLogado().getIdUsuario();     usuarioRef = firebaseRef.child("ocorrencias").child(idUsuario);      usuarioRef.addValueEventListener(new ValueEventListener() {         @Override         public void onDataChange(@NonNull DataSnapshot dataSnapshot) {             for (DataSnapshot snapshot : dataSnapshot.getChildren()) {                 Ocorrencia ocorrencia = snapshot.getValue(Ocorrencia.class);                  if (ocorrencia.getStatus() == "1") {                     txtStatus.setText(Ocorrencia.A_CAMINHO);                     txtStatus.setTextColor(Color.MAGENTA);                     txtStatus.setTextSize(16);                 } else if (ocorrencia.getStatus() == "0") {                     txtStatus.setText(Ocorrencia.AGUARDANDO);                     txtStatus.setTextColor(Color.RED);                     txtStatus.setTextSize(16);                 } else if (ocorrencia.getStatus() == "2"){                     txtStatus.setText(Ocorrencia.OK);                     txtStatus.setTextColor(Color.GREEN);                     txtStatus.setTextSize(17);                 }             }         }          @Override         public void onCancelled(@NonNull DatabaseError databaseError) {          }     }); } 

Banco de dados:

inserir a descrição da imagem aqui