javascript – Porque los dropdowns de bootstrap toman el e.target solo una vez?

tengo una delegacion de eventos click de esta manera:

document.addEventListener("click",function(e){

console.log(e.target)

},false);

con esto cada vez que hago click sobre algun item del menu de bootstrap (o sobre cualquier cosa del viewport) me imprime en consola dicho item, si sigo haciendo click sobre el mismo item sigue imprimiendo como deberia esperarse, pero cuando dicho item tiene un submenu (dropdown) solo toma el evento 1 vez, lo imprime por consola 1 vez, si sigo dando click ya no lo toma.
por que sucede esto? como podria captar el click cada vez que lo hago?
me di cuenta como cambiar de posicion los carets con css y queria usar un toggler para cambiar la clase, pero me encontre con este problema, ya que solo lo cambia una vez, por el dichoso comportamiento del dropdown

git – Commits vs tags for the solo developer

I’ve been a solo developer using git for years and haven’t yet used the tagging feature. Typically I’ll create a “new_feature” branch, make several commits, then merge back to my master branch. However, these are individual commits, and don’t map to the feature all at once. I do like keeping them separate in case I notice a bug. However, it would be nice to group the commits together once back on master. My question is whether developers will typically just combine the branch commits into one commit before merging back to master so that they have a single commit with a description of the new feature or whether they tag the last commit when they merge it back to master.

Are there pros and cons to each method?

Hay alguna forma de obtener solo los numeros sin repetir de una lista en python?

Tengo estos datos, y estaba pensando en crear un loop para que me diga cuantas veces se repiten los números, pero tendría que hacerlo con cada uno ¿hay algún comando que me facilite solo contar los numero que no se repitan?

datos = [3,2,0,3,0,3,0,2,0,0,3,1,1,0,1,0,1,0,2,3,0,1,0,4,1,0,2,1,3,1,1,2,1,2,0,2,4,0]

Get 19 Free Solo Ads!

Hello,

Every Marketer needs advertising and here you can get it for FREE!

Just a few of the features you will
find here:
*Get up to 19 FREE Solo Ads!
*Earn Your Pro Upgrade for FREE
*Daily Prizes
*Weekly Prizes
*Monthly Prizes
(I just got $10 bonus to my Uphold account!)

Join me today by clicking the link below.

https://viralmailerforyou.com/splashpage.ph…0&r=ads4all

(After joining go to “Redeem promocodes” menu and enter the promo codes for Free advertising that you will find in the members`area – valued some 100s of dollars !!)

Thank you!

Actualizar un solo campo de una tabla de acces desde c#

Tengo una duda acerca del metodo de actualizar un registro pues estoy guardando los datos en un archivo de acces y al hacer todas las funciones que he realizado funcionan correctamente pero me pregunto como puedo hacer para que al momento de actualizar y solo haber llenado un solo texbox
solo se modifique el campo correspondiente en acces y los de más que ya contengan algun datos no cambien su valor a 0 por la función string.IsNullOrWhiteSpace ¿existe alguna funcion que realice esto? espero puedan ayudarme
de antemano muchas gracias.
Ejemplo:

id Nombre Clabe   C1  C2 
1  juan   2020A   3   3

quiero Modificar c1

id Nombre Clabe   C1  C2 
1  juan   2020A   1   3

ya que la funcion ” string.IsNullOrWhiteSpace”
la use para solo ingresar algunos valores y devolveria esto

id Nombre Clabe   C1  C2 
1    0      0      1   0

Metodo para actualizar

public string Actualizar(ALUMNO p)
        {
           string Act = p.Periodo;
            switch (Act)
            {
                case "1° PARCIAL":
                    
                    break;
                case "2° PARCIAL":
                    break;
                case "3° PARCIAL":
                    break;

            }

            bool bandera = true;
            OleDbCommand cmd = new OleDbCommand();
            string mensaje = "";
            cmd.CommandText = string.Format
      ("update TablaAlumnos set " +
        "CLABE = '{0}',NOMBRE= '{1}', C1 = {2},C2= {3}, C3 = {4},C4= {5}, R1 = {6},H1= {7}, H2 = {8},H3= {9}, H4 = {10},R2= {11}, ACTYVAL1 = {12},ACTYVAL2= {13}, ACTYVAL3 = {14},ACTYVAL4= {15}, R3 = {16},DES1= {17}, DES2 = {18},DES3= {19}, DES4 = {20},R4= {21}, SUMA = {22},COMP_ADQ= '{23}'," +
        " INA={24}  where Id = {25}"
      , p.CLABE, p.NOMBRE, p.C1, p.C2, p.C3, p.C4, p.R1, p.H1, p.H2, p.H3, p.H4, p.R2, p.ACTYVAL1, p.ACTYVAL2, p.ACTYVAL3, p.ACTYVAL4, p.R3, p.DES1, p.DES2, p.DES3, p.DES4, p.R4, p.SUMA, p.COMP_ADQ, p.INA, p.Id);

            cmd.Connection = cn;
            try
            {
                cn.Open();
                if (cmd.ExecuteNonQuery() > 0)
                    bandera = true;
                mensaje = "Registro actualizado";
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex.Message);
                mensaje = ex.Message;
            }
            finally
            {
                cn.Close();
            }
            return mensaje;
        }

Evento del botón

private void btnActualizar_Click(object sender, EventArgs e)
        {
            try
            {
                ALUMNO p = new ALUMNO();

                p.Id = Convert.ToInt32(txtId.Text);
                p.CLABE = this.txtNombre.Text;
                p.NOMBRE = this.txtClabe.Text;

                // p.C1 = int.Parse(txtCon1.Text);
                p.C1 = (!string.IsNullOrWhiteSpace(txtCon1.Text)) ? Convert.ToInt32(txtCon1.Text) : 0;
                //p.C2 = int.Parse(txtCon2.Text);
                p.C2 = (!string.IsNullOrWhiteSpace(txtCon2.Text)) ? Convert.ToInt32(txtCon2.Text) : 0;
                // p.C3 = int.Parse(txtCon3.Text);
                p.C3 = (!string.IsNullOrWhiteSpace(txtCon3.Text)) ? Convert.ToInt32(txtCon3.Text) : 0;
                //p.C4 = int.Parse(txtCon4.Text);
                p.C4 = (!string.IsNullOrWhiteSpace(txtCon4.Text)) ? Convert.ToInt32(txtCon4.Text) : 0;
                p.R1 = Convert.ToInt32(p.C1 + p.C2 + p.C3 + p.C4);

                //p.H1 = int.Parse(txtHab1.Text);
                p.H1 = (!string.IsNullOrWhiteSpace(txtHab1.Text)) ? Convert.ToInt32(txtHab1.Text) : 0;
                //p.H2 = int.Parse(txtHab2.Text);
                p.H2 = (!string.IsNullOrWhiteSpace(txtHab2.Text)) ? Convert.ToInt32(txtHab2.Text) : 0;
                //p.H3 = int.Parse(txtHab3.Text);
                p.H3 = (!string.IsNullOrWhiteSpace(txtHab3.Text)) ? Convert.ToInt32(txtHab3.Text) : 0;
                //p.H4 = int.Parse(txtHab4.Text);
                p.H4 = (!string.IsNullOrWhiteSpace(txtHab4.Text)) ? Convert.ToInt32(txtHab4.Text) : 0;
                p.R2 = Convert.ToInt32(p.H1 + p.H2 + p.H3 + p.H4);

                //p.ACTYVAL1 = int.Parse(txtAct1.Text);
                p.ACTYVAL1 = (!string.IsNullOrWhiteSpace(txtAct1.Text)) ? Convert.ToInt32(txtAct1.Text) : 0;
                //p.ACTYVAL2 = int.Parse(txtAct2.Text);
                p.ACTYVAL2 = (!string.IsNullOrWhiteSpace(txtAct2.Text)) ? Convert.ToInt32(txtAct2.Text) : 0;
                //p.ACTYVAL3 = int.Parse(txtAct3.Text);
                p.ACTYVAL3 = (!string.IsNullOrWhiteSpace(txtAct3.Text)) ? Convert.ToInt32(txtAct3.Text) : 0;
                //p.ACTYVAL4 = int.Parse(txtAct4.Text);
                p.ACTYVAL4 = (!string.IsNullOrWhiteSpace(txtAct4.Text)) ? Convert.ToInt32(txtAct4.Text) : 0;
                p.R3 = Convert.ToInt32(p.ACTYVAL1 + p.ACTYVAL2 + p.ACTYVAL3 + p.ACTYVAL4);

                //p.DES1 = int.Parse(txtDes1.Text);
                p.DES1 = (!string.IsNullOrWhiteSpace(txtDes1.Text)) ? Convert.ToInt32(txtDes1.Text) : 0;
                // p.DES2 = int.Parse(txtDes2.Text);
                p.DES2 = (!string.IsNullOrWhiteSpace(txtDes2.Text)) ? Convert.ToInt32(txtDes2.Text) : 0;
                //p.DES3 = int.Parse(txtDes3.Text);
                p.DES3 = (!string.IsNullOrWhiteSpace(txtDes3.Text)) ? Convert.ToInt32(txtDes3.Text) : 0;
                //p.DES4 = int.Parse(txtDes4.Text);
                p.DES4 = (!string.IsNullOrWhiteSpace(txtDes4.Text)) ? Convert.ToInt32(txtDes4.Text) : 0;
                p.R4 = Convert.ToInt32(p.DES1 + p.DES2 + p.DES3 + p.DES4);

                p.SUMA = p.R1 + p.R2 + p.R3 + p.R4;

                p.COMP_ADQ = txtComp.Text.ToString();

                p.INA = 10;

                p.Periodo = cbPeriodo.Text;
                if (crud.Actualizar(p).Equals("registro Actualizado correctamente"))
                {
                    MessageBox.Show(crud.Actualizar(p));
                    llenargrid();
                }
                else
                {
                    MessageBox.Show(crud.Actualizar(p));
                    llenargrid();
                }
            }
           catch (Exception)
            {

                MessageBox.Show("Ingreso algun valor desconocido o faltan campos por llenar");
            }
        }

el código funcionaba solo cuando era orientado a funcion, lo cambié a clases y no ejecuta

users.js // controller

‘use strict’;

const user = require(‘../models/user’);
const User = require(‘../models/user’)

                class Usuarios{

                    constructor(req,res){
                        this.req= req;
                        this.res= res;
                        this.usuarios()
                        }
                        
                async usuarios(req, res){
                        
                    const us = await User.find();
                     const data = {
                        title: 'Users',
                        us
                       };
                       console.log(us)
                    //  res.status(200).json(us);
                       }
                
                       usuarios(users= String) {
                        this(users);
                    }                       
                }
                
                 const classUsuarios = users => {
                     return (req, res, next)=>{
                         const us = new Usuarios();
                         us.usuarios(users);
                     }
                 }

         
                 
                 module.exports = classUsuarios ;
                

models

‘use srtict’

const mongoose = require(‘mongoose’)
const Schema = mongoose.Schema

const UserSchema = Schema({
name:String,
})

module.exports = mongoose.model(‘User’, UserSchema)

users.js // router
‘use strict’
const express = require(‘express’);
const classUsuarios = require(‘../controllers/user’); /mediante class/

const api = express.Router();

api.get(‘/users’,classUsuarios(‘usuarios’));
module.exports = api

java – ¿Porqué solo lee primera línea de readobject?

tengo 3 clases, una llamada Mueble que implementa la serialización, otra Utilidades que tiene los métodos para visualizarMensaje, leerTeclado, etc.. y finalmente la appGestionMuebles la cual crea la aplicación que permite añadir muebles. Cuando pruebo a añadir muebles funciona perfectamente, es más si visualizo el archivo MUEBLES1.DAT puedo ver como si se ha añadido, pero al imprimir con readObject, solo me visualiza el primero que añadí, ¿cuál es el error que estoy cometiendo? Gracias.

private static void listarMuebles() {

try (ObjectInputStream fichMueble = new ObjectInputStream(new FileInputStream(new File("MUEBLES1.DAT")));){
    Mueble m ;
    Utilidades.visualizarMensaje(String.format("%10s", "ID MUEBLE") + String.format("%10s", "NOMBRE")
            + String.format("%10s", "TIPO") + String.format("%18s", "PRECIO UNITARIO")
            + String.format("%20s", "UNID. ALMACEN") + String.format("%10s", "TOTAL"));

    Utilidades.visualizarMensaje(String.format("%10s", "=========") + String.format("%10s", "======")
            + String.format("%10s", "====") + String.format("%18s", "===============")
            + String.format("%20s", "=============") + String.format("%10s", "====="));
    int i=0;
    while (i<5) {
        m = (Mueble) fichMueble.readObject();
        String tipoMueble = "";
        switch (m.getTipoMueble()) {
            case 'h':
            case 'H':
                tipoMueble = "HOGAR";
                break;
            case 'd':
            case 'D':
                tipoMueble = "DESPACHO";
                break;
            case 'c':
            case 'C':
                tipoMueble = "COLEGIOS";
                break;
            default:
                break;
        
        }

        Utilidades.visualizarMensaje(String.format("%10s", m.getIdMueble())
                + String.format("%10s", m.getDescripMueble()) + String.format("%10s", tipoMueble)
                + String.format("%18s", m.getPrecioUnario()) + String.format("%20s", m.getUnidadesMinimas())
                + String.format("%10s", m.getUnidadesAlmacen()));
        i++;
    }

} catch (IOException e) {
    System.out.println("Fin del fichero");

} catch (ClassNotFoundException ex) {
}

}

api – ¿Debería desarrollar una web app completamente en flask o solo usar flask para pequeños servicios?

No tengo conocimientos de buenas conductas de programación, y cuando estuve haciendo un pequeño proyecto con openCV, hice una pequeña “API” con flask si es que se le puede llamar así. Y aprovechando que flask puede devolver ‘templates’ en HTML lo estaba usando también como ‘backend’… ahora que me propongo hacerle un ‘login’, me detengo a pensar…

Me pregunto, no es este el territorio de PHP? ¿debería hacer todo esto en python con flask? o ¿solo debería usar el servicio de procesamiento de imagen de openCV en flask y utilizar otro lenguaje para backend?

La pregunta:

Es una buena práctica desarrollar un sitio web completo en flask, o lo recomendado es utilizarlo solo para API’s y servicios? Luego utilizar un backend con PHP o node js. No se si se pueda juzgar en terminos de velocidad, cantidad de peticiones que puede manejar al mismo tiempo, la modularidad y escalabilidad que tenga poner todo en un mismo código de flask, y otros detalles de producción.

JQL para solo mostrar el incurrido de una persona de una tarea incurrida por un grupo de gente

Por curiosidad, ¿se podría sacar/mostrar/separar por JQL en JIRA el incurrido de una persona en una tarea incurrida por más de una persona? Si fuese así, ¿cómo sería?

Muchas gracias.

Un saludo,
Moi Hs

html – Qué debo poner en el atributo pattern de un input, para que solo me permita la entrada de números, puntos y guiones medios?

Tengo el siguiente input

<input type="text" name="ejemplo" pattern="[0-9]{8,12}" title="formato incorrecto">

con el que quiero permitir solo la entrada de números, guiones medios -, y puntos .. Y que el largo mínimo sea 8 y máximo 12.
Ejemplos:

  • 23-21.23,
  • 2302..134,
  • -3-7867567,
  • 12345678910,
  • 1-2345678.91, etc.