elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 ... 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [29] 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ... 431
281  Programación / Programación Visual Basic / Re: Guardar list2 y leer list1 en: 1 Mayo 2022, 23:25 pm
Sigues usando código de alguna versión anterior... Nuevamente estás usando una función vieja para llamar a la nueva. Te reclama el resto de parámetros que la llamada que expones no contemplaba en esa versión...

Así quedó el código de la última versión:
Código
  1. ' Crear nueva facturación,Abrir una existente.
  2. Private Sub mnuFile_Click(Index As Integer)
  3.    Dim File1 As String, File2 As String, NFacturaInicial As Integer
  4.  
  5.    Call CerrarCarrito
  6.  
  7.    Select Case Index
  8.        Case 0  ' Nueva facturación
  9.            File1 = InputBox("Elija el nombre del fichero para una nueva facturación (no debe existir).", "Nueva Facturacion", "Nueva facturacion" & FILE_EXTENSION_FACTURA)
  10.            NFacturaInicial = InputBox("Si la facturación debe empezar con un número específico, indique cual es a continuación:", "NuevaFacturación: Número de facturación inicial", "1")
  11.            If (Len(File1) > 0) Then
  12.                File1 = AsegurarExtension(File1, FILE_EXTENSION_FACTURA)
  13.                File2 = AsegurarExtension(File1, FILE_EXTENSION_FILES)
  14.                If (CrearNuevaFacturacion(File1, File2, NFacturaInicial) = True) Then
  15.                    Call ActivarInterfaz(True)
  16.                    Call FrmCarrito.Show(vbModeless)
  17.                Else
  18.                    Call ActivarInterfaz(False)
  19.                End If
  20.            Else
  21.                Call MsgBox("Proceso de creación de nueva facturación abortado. No se proporcionó un nombre", vbInformation, "Nueva facturación")
  22.            End If
  23.        Case 1  ' Leer fichero de facturación
  24.            FrmFile.Show 1
  25.            If (Len(FrmFile.File) > 0) Then
  26.                File2 = FrmFile.File
  27.                File1 = (App.Path & "\" & File2)
  28.                File2 = App.Path & "\" & AsegurarExtension(File2, FILE_EXTENSION_FILES)
  29.                If (ListarFacturacion(File1, File2) = True) Then
  30.                    Call ActivarInterfaz(True)
  31.                    Call FrmCarrito.Show(vbModeless)
  32.                Else
  33.                    Call ActivarInterfaz(False)
  34.                End If
  35.            End If
  36.    End Select
  37. End Sub
  38.  
Como se ve, la función (que ni se llama igual, porque procede del nombre de otro menú), cuando llama a la función CrearFacturación precisa más parámetros...
Diríase que no sabes usar el editor de código para siquiera consultar que parámetros requiere la función a invocar, ni que entiendas los errores que te está marcando sobre la marcha la ejecución del código...

Me pregunto si llegaste a descargar, utilizar o intentar comprender el código de la última versión que te puse hace ya casi dos meses (mensaje 34 del hilo).
...
Aquí la descarga, por si lo quieres ir probando:
https://workupload.com/file/9rRxdbcR2wv 76Kb. aprox. comprimido (incluye los ficheros  de ejemplo).
...


Por favor, no me insistas en que te solucione código que quedó solucionado. O usas enteramente una versión previa o enteramente la nueva versión. Los cambos (como te dije entonces), eran tan profundos que exigió retocar prácticamente todo, creo recordar que no quedó ninguna ventana sin que quedara afectada por los cambios. Yo me molesté en actualizar todas esas ventanas con su código para que los cambios que principalmente se solicitaban no dejarán cojo (sin funcionar o malfuncionando) el resto del programa que se vió afectado, además también me tomé la molestia de comentar los cambios que afectaron a cada uno de los módulos de código.

Yo no tengo ninguna forma de saber que cambios has hecho, ni que has tomado de una versión u otra, ni siquiera saber sobre qué versión estás trabajando... ni me siento obligado a resolver tu estulticia una y otra vez, si decides mezclar código de diferentes versiones sin pararte antes a considerar previamente qué implica hacer cambios... porque entonces esto nunca termina.

Es como si alguien comprara un vehículo, le cambia varias piezas de un motor por otro de un vehículo viejo que tenía y espera que el fabricante del nuevo le resuelva los problemas generados de dichos cambios, incluso aunque el fabricante fuera el mismo de ambos vehículos. Incluso aunque por cortesía el fabricante te diera indicaciones de los 'posibles' problemas, si tu sigues haciendo cambios de piezas.  Un fabricante vende su vehículo tal cual viene, cualquier cambio y que deje de funcionar, ahí el fabricante (además de anular su garantía) te dirá que los cambios que hagas serán bajo tu cuenta y riesgo...

Igualmente yo de digo que tú como programador debes ser capaz de resolver los problemas que te surjan cuando acometas cambios en un código que era plenamente funcional. Te solucionaría exclusivamente si algo no funcionara correctamente en el código de la última versión, solo porque aún lo conservo y no me costaría dar con cualquier posible error (en el caso de que no fueras capaz de solucionarlo), pero me desentiendo de resolver tus problemas por hacer cambios (y menos tirando de versiones anteriores, o pero mezcla de ellas) ni de acometer nueva funcionalidad.

Lo que es prestar ayuda en la compresnsión, explicación y/o dando código, creo que está más que satisfecho, el resto es dependiente de tus capacidades. Incluso el código que te he dado, aunque es plenamente funcional no es óptimo, pues te lo hice a modo de ejemplo mínimo para operar con ficheros, lo ideal era reconvertirlo para usar con clases y tablas hash, pero que dadas tus limitaciones entiendo que te quedases sin acometer tales cambios.
282  Foros Generales / Foro Libre / Re: La última amenaza de Kim Jong-un: dijo que Corea del Norte podría usar “preventivamente” sus armas nucleares en: 1 Mayo 2022, 17:29 pm
Seguramente le fastidia que últimamente Putin, le haya quitado 'su silla' de loco maníaco (perseguido) militar amenazante'.

Tiene que hacerse notar, cada cierto tiempo, para satisfacer su ego.
283  Sistemas Operativos / Windows / Re: ¿Bug W11?Sistema se congela completamente en: 1 Mayo 2022, 17:24 pm
Y porqué no reportas tus observaciones en las páginas de Mocosoft????.
Aquí (casi con toda seguridad), no va a haber nadie que haya diseñado o programado las funcionalidades aludidas, y de haberlo, no tendría libertad ni permiso para responder (no es el canal oficial).

...dado que además estás con una versión de pruebas, lo más sensato es actualizar la versión, quizás se trate de un bug, que ya haya sido reportado previamente, corregido y por tanto ya no estar vigente ese problema.
284  Comunicaciones / Dispositivos Móviles (PDA's, Smartphones, Tablets) / Re: dudas memoria ram en: 1 Mayo 2022, 17:14 pm
El control de las pestañas, depende enteramente del navegador (las opciones activas, de las que muchas puedes cambiar a tu gusto en la 'configuración') y del usuario. La pagina web (visitada), no pinta nada en ello.

Por cierto, el título de '...memoria RAM', no tiene nada que ver con tu ocupación, cámbialo por 'dudas con pestañas en navegadores'.
...además en vez de preguntar por navegadores en general puesto que tu 'problema' es determinado, sería preferible indicar que navegador usas, para que quienes respondan puedan ceñirse con más precisión si resulta ser adecuado...
285  Programación / Programación Visual Basic / Re: Guardar list2 y leer list1 en: 1 Mayo 2022, 17:03 pm
El proyecto ha sido cambiado en profundidad en más de una vez... si de último te dí el proyecto completo y funcional, porqué ahora el código en tus funciones no vene a coincidir con el código que te pasé la última vez....?

Veamos, si tratas de crear una nueva facturación... se deben crear dos ficheros un fichero *.data y un fichero *.regdata (resultado de las últimas modificaciones), el caso es que siendo 'nueva' el número de registros será 0... porque se acaba de crear la facturación, el contenido de dichos ficheros será 0 registros...

Así que al invocar 'leer facturación' solo se ejecurtará esa parte del código si se da esta condición:
Código
  1. If (NumRegistros > 0) Then
Así que al crear la facturación no deberia acceder a esa zona... y por qué accede a esa zona si debiera haber 0 registros?. Porque o bien usas la versión vieja del código o bien lo has modificado eliminando código.... hasta probar que los cambios funcionan bien, mejor que eliminar es comentar código, si el cambio es bastante grande que no solo se borren alguna slíneas y tal, entonces es preferible copiar la función y dejarla comentada al completo, y por tanto hacer cambios sobre una copia... así, si algo falla (que antes funcionaba, esto es mismo código) puede verificarse la diferencia entre ambos códigos para reconocer que está sucediendo.

Tu tienes esté código:
Código
  1. Private Function CrearNuevaFacturacion(ByRef NombreFile As String) As Boolean
  2. Dim Ruta As String
  3.  
  4.    If (Abierto = True) Then Call Cerrar(Canal)
  5.  
  6.    Ruta = (App.Path & "\" & NombreFile)
  7.    If (Abrir(Ruta, Canal, True) = True) Then
  8.        Call UpdateHeader(0, 0)
  9.        CrearNuevaFacturacion = True
  10.    Else
  11.        MsgBox "Parece que el fichero que intenta abrir ya existe, elija otro nombre (o bien ocurrio un error)..."
  12.    End If
  13. End Function
Y para la misma función al final cambió a este:

Código
  1. ' La creacion de una NUEVA facturacion supone crear ambos ficheros:
  2. '   1 - "Facturacion xxx.reg"
  3. '   2 - "Facturacion xxx.regdata"
  4. Private Function CrearNuevaFacturacion(ByRef NombreFileLote As String, ByRef NombreFileProd As String, ByVal NFacturaInicial As Integer) As Boolean
  5.    Dim Ruta As String
  6.  
  7.    Call CerrarFacturacion
  8.  
  9.    Ruta = (App.Path & "\" & NombreFileLote)
  10.    If (Abrir(Ruta, CanalLote, True) = True) Then
  11.        Ruta = (App.Path & "\" & NombreFileProd)
  12.        If (Abrir(Ruta, CanalProducto, True) = True) Then
  13.            Get #CanalLote, 1, NumRegsLotes
  14.            Get #CanalLote, , AutoIncLote
  15.  
  16.            ' Usar el parámetro 'NFacturaInicial' (para que funcione correctamente), implica más cambios en el código que no se efectuaron, pues surgió como una sugerencia de una interpretación errónea de cierta petición que hiciste.
  17.            'If (NFacturaInicial > 1) Then
  18.            '    AutoIncLote = (NFacturaInicial - 1) ' cuando se compre se incrementa en 1
  19.                AutoIncLote = 0
  20.                Put #CanalLote, 3, AutoIncLote
  21.            'End If
  22.  
  23.            Get #CanalProducto, 1, NumRegsProds
  24.            Get #CanalProducto, , AutoIncProducto
  25.  
  26.            mnuLotes(0).Enabled = True
  27.            CrearNuevaFacturacion = True
  28.            Exit Function
  29.        End If
  30.    End If
  31.  
  32.    If (Err.Number = 0) Then
  33.        Call MsgBox("Parece que uno o ambos ficheros asociados a la facturacion que intenta abrir ya existe, elija otro nombre (o bien ocurrió un error)...", vbExclamation, "Crear Nueva Facturacion: Ya existe...")
  34.    Else
  35.        Err.Clear
  36.        Call MsgBox("Ocurrio un error inesperado al tratar de abrir la facturacion seleccionada..." & vbCrLf & Err.Description, vbExclamation, "Crear Nueva Facturacion: Error inesperado...")
  37.    End If
  38. End Function
  39.  

Como se ve, recibe dos parámetros para los ficheros, no solo uno, y observo que en tu código falta la llamada a la función 'CerrarFacturacion' que es la que pondrá a 0 todas las variables globales referidas a una facturación como es 'NumRegistros'. La función debe invocarse tanto si había abierta previamente una facturación como si no... allí mismo se verifica si estaba abierta y se cierra.

Además, según veo allí (y que de memoria ya no recordaba), la variable NumRegistros, fue cambiada de nombre al separar en dos ficheros la comprar de los productos de cada compra:
Código
  1. ' Cierra los dos ficheros asociados a la misma facturacion.
  2. Private Function CerrarFacturacion()
  3.    If (Abierto = True) Then
  4.        Call CerrarCarrito
  5.  
  6.        Close #CanalLote
  7.        Close #CanalProducto
  8.        Call ActivarInterfaz(False)  ' desactivar de la interfaz, lo que proceda...
  9.    End If
  10.  
  11.    mnuLotes(0).Enabled = False
  12.    CanalLote = 0: NumRegsLotes = 0: AutoIncLote = 0
  13.    CanalProducto = 0: NumRegsProds = 0: AutoIncProducto = 0
  14.    TotalContado = 0: TotalCredito = 0
  15.    Call ShowTotales
  16. End Function
  17.  

NumRegsLotes y NumRegsProds (creo recordar), remplazan a NumRegistros.


El error que te arroja el código, se produce simplemente porque el tipo de datos del parámetro que se pasa no coincide con el tipo de datos que la función invocada espera... y es razonable porque al separar la factura en 2 ficheros uno que contiene los datos estrictos de la compra y otro el detalle de cada artículo comprado, exigió crear un registro específico para cada fichero, quedando el registro que antes se usaba para el único fichero obsoleto...
si se revisa la función que da el fallo:
Código
  1. Public Function RegCompraToString(ByRef Registro As RegLote, Optional ByRef Separador As String = CHAR_SEP) As String
  2.    Dim R As String, S As String, T As String
  3.  
  4.    With Registro
  5.        R = (FillSizeStr(CStr(.IdPedido), 5, True) & Separador & FillSizeStr(CStr(.Cantidad), 5, True))
  6.        S = (FillSizeStr(CStr(.Descuento), 7, True, 3) & Separador & FillSizeStr(CStr(.Total), 7, True, 3))
  7.        T = GetMetodoPago(.MetodoDePago) & Separador & CStr(.FechaCompra)
  8.  
  9.        RegCompraToString = (R & Separador & S & Separador & T)
  10.    End With
  11. End Function
  12.  
Reclama un parámetro del tipo 'RegLote' (ByRef Registro As RegLote). Dicha función fue modificada, para adaptarse a los cambios de la separación de la compra en sendos ficheros. No recuerdo si además cambié el nombre de la estructura (probablemente):
Código
  1. ' Ahora el registro de lote, va aparte de los registro de los articulos especificos comprados en el lote.
  2. Public Type RegLote                                         ' 32 bytes por registro
  3.    IdPedido                            As Integer          ' 01  Cada lote, comprado tiene su id unico que se aplica a todos los articulos comprados en ese lote.
  4.      Reservado1                        As Integer          ' 03     (Reservado: Por si se debe cambiar el Id a tipo long, sin alterar los ficheros).
  5.      Reservado2                        As Integer          ' 05     Para futurible ampliacion
  6.      Reservado3                        As Long             ' 07     Para futurible ampliacion
  7.    Descuento                           As Single           ' 11  Descuento (Solo se aplica, para las ofertas de tipo: 1,2 y 4, en otro caso el valor es siempre 0).
  8.    Total                               As Single           ' 15  Coste total del lote comprado.
  9.    FechaCompra                         As Date             ' 19  Fecha de compra del lote (fecha y hora)
  10.    MetodoDePago                        As Byte             ' 27  Metodo de pago
  11.    Cantidad                            As Byte             ' 29  Cantidad de productos comprados en el lote.
  12.    Index                               As Long             ' 29  Puntero a un fichero que contiene los idCompra de cada articulo comprado en el lote.
  13. End Type
  14.  
Como se ve, el registro solo contiene datos informativos del lote comprado, entre los que incluye los necesarios para rescatar los registros asociados con los detalles de los artículos comprados (campos: 'Cantidad' e 'Index'). Los comentarios, no se ponen por poner... detallan que son o porque están.


Tu tienes la función 'LeerFacturación', con el siguiente código:
Código
  1. Private Function LeerFacturacion(ByRef Ruta As String) As Boolean
  2.   Dim k As Integer
  3.  
  4.    If (Abierto = True) Then Call Cerrar(Canal)
  5.  
  6.    If (Abrir(Ruta, Canal) = True) Then
  7.        Get #Canal, 1, NumRegistros
  8.        Get #Canal, , AutoIncLote
  9.        Get #Canal, , AutoIncProducto
  10.  
  11.        If (NumRegistros > 0) Then
  12.            With List1
  13.                .Clear
  14.                For k = 1 To NumRegistros
  15.                    Get #Canal, , RegX
  16.                    Call .AddItem(RegCompraToString(RegX, CHAR_SEP))
  17.                Next
  18.  
  19.                ' Ahora si se quiere puede leerse de nuevo el primer registro para transferirlo a los textbox...
  20.                .ListIndex = 0 ' para ello delegamos en el codigo que pondremos al listbox...
  21.            End With
  22.        End If
  23.  
  24.        LeerFacturacion = True
  25.    End If
  26. End Function
  27.  

Revisando, en el último proyecto que te pasé.., ni siquiera tengo una función con ese nombre, la que se encarga de la lectura de una facturación se llama 'ListarFacturacion', y tiene este código:
Código
  1. ' Abre y carga el fichero de facturacion. Tambien abre el fichero de productos comprados (solo carga los productos asociados al primer lote en el listado).
  2. ' NOTA: No establecer la propiedad SORTED a TRUE, en los listados afectados.
  3. Private Function ListarFacturacion(ByRef Ruta1 As String, ByRef Ruta2 As String) As Boolean
  4.    Dim k As Integer
  5.  
  6.    Call CerrarFacturacion
  7.  
  8.    If ((Abrir(Ruta1, CanalLote) = True) And (Abrir(Ruta2, CanalProducto) = True)) Then
  9.        Get #CanalLote, 1, NumRegsLotes
  10.        Get #CanalLote, , AutoIncLote
  11.  
  12.        Get #CanalProducto, 1, NumRegsProds
  13.        Get #CanalProducto, , AutoIncProducto
  14.  
  15.        If (NumRegsLotes > 0) Then
  16.            With LisLotes
  17.                .Clear
  18.  
  19.                Call PosicionarRegLote(1)       ' alli se resta 1
  20.                For k = 0 To NumRegsLotes - 1
  21.                    Get #CanalLote, , RegX
  22.                    Call .AddItem(RegCompraToString(RegX))
  23.                    .ItemData(k) = RegX.IdPedido
  24.  
  25.                    If (RegX.MetodoDePago = MetodosDePago.PAGO_AL_CONTADO) Then
  26.                        TotalContado = (TotalContado + RegX.Total)
  27.                    Else
  28.                        TotalCredito = (TotalCredito + RegX.Total)
  29.                    End If
  30.                Next
  31.  
  32.                Call ShowTotales
  33.  
  34.                ' Ahora si se quiere puede leerse de nuevo el primer registro para transferirlo a los textbox...
  35.                .ListIndex = 0 ' para ello delegamos en el codigo que pondremos al listbox...
  36.            End With
  37.        End If
  38.  
  39.        mnuLotes(0).Enabled = True
  40.        ListarFacturacion = True
  41.    End If
  42. End Function
  43.  
Como se puede ver, se abren 2 ficheros, el *.data y el *.regdata, e igualmente se lee de ambos, su cabecera y detrás los registros que tuviere el *.reg, si los tiene y en cuyo caso, se hace actual el primer registro (listindex =0) que exigirá leer los registros en *.regdata asociados al registro *.reg actual.

Lo siento, pero no tiene sentido que pidas cambios a un proyecto, y luego operes con código de alguna versión anterior que ahora no encaja con los cambios de la versión actual...
No puedes coger código de una versión anterior y remplazarlo alegremente por el código de una nueva versión y esperar que funcione así, sin más (si fue ampliamente cambiado, como sucede en este caso). Tampoco conservo el código de las versiones previas.


Tienes que proceder con cierto orden y no mezclar versiones sin empaparte a fondo de los cambios que tiene una versión nueva respecto de la anterior (y desde luego al hacer cambios, conservar siempre copia del original, esto es, de la versión que funciona) y por tanto si al hacer cambios afectan o no y a qué afectan.
Esos detalles no suelen estar todos en la cabeza a un tiempo, especialmente cuando transcurre tiempo de olvidan, pero deberían constar en las especificaciones que uno debe haciendo previo al proyecto y mantener actualizado con los cambios. Como es un proyecto pequeño (y ni siquiera es para mi), yo no tengo necesidad de hacer tal especificación por escrito (susbsiste en mi cabeza mientras lo hago), y en cualquier caso la profusión de comentarios a los largo del código debería bastar al interesado...
286  Foros Generales / Foro Libre / Re: Conflicto Ucrania-Rusia,EEUU, OTAN, Europa. (Todas las noticias relacionadas irán aquí) en: 29 Abril 2022, 17:42 pm
A estas alturas, queda bastante patente que Putin está loco. Quizás aparte de enfermo...
Está empeñado en una guerra mundial y como no ha conseguido que la OTAN intervenga ya no sabe que hacer para justificar lanzar misiles nucleares adónde sea...

Mandó la chatarra (esos viejos carros de combate que estaban de maniobras conducidos por soldados cumpliendo se servicio militar), reservándose los más novedosos a la espera de la ocasión y al final no podrá lucirlos, ni tampoco tantas otras armas que tienen... ya no puede esperar más, quería una guerra contra la OTAN e ir escalando en el conflicto para finalmente justificar que lanzaba los ICBM, ahora está por lanzarlos sin más... según le dé el día cuando se levante.

Alguien que está más cerca del otro mundo que de éste, no debiera comandar ningún país especialmente teniendo el botón nuclear en sus manos, se le debe declarar 'no apto'.  Alguien con un pie en la tumba es alguien peligroso, no teniendo nada que perder, todo le da igual, le da igual si mueren 5 personas o 500 millones.

Esperemos que esos 'atentados' logren acabar con él antes que se decida a pulsar el botón, porque razones no hay ninguna. Invade un país, amenaza al mundo y está decidido a lanzar los misiles nucleares, sí o sí... es como si le hubiera poseído el espíritu del "gordito de Corea del Norte"... que como niños, parecen distrutar lanzando misles y que muera la gente, solo para su disfrute.

Me temo que las fronteras rusas al final de este conflicto, acabarán más estreechas de lo que lo eran antes de la invasión. ...Tras una fuerte aspiración le sigue una fuerte expiración, son leyes universales que no saben leer...
287  Informática / Tutoriales - Documentación / Re: Actualización del servidor de elhacker.net sobre cursos y tutoriales.... en: 29 Abril 2022, 16:43 pm
Cuando esté todo más ordenado en el servidor, podemos hacer una limpieza de tutoriales y cursos viejos que ya no sirvan.
No soy partidario de borrar...
Algo que sea antiguo, no necesariamente es ni malo ni no requerido.

Creo que lo adecuado es adjuntar siempre el año al nombre del archivo en cuestión, y ya cualquiera viendo el año decide si le interesa descargarlo o no.
En el caso de 'versiones' quizás el año debiera diferenciar el nombre del archivo (antes que su versión), así quedarían ordenados en el listado desde el más actual al más antiguo, y se evitaría fácilmente que por error uno eligiera el que no es de su interés o necesidad.
nombre - año - otros datos adjunto al nombre - version.extension

No siempre va uno a querer o necesitar ejecutar un programa u otra documentación desde el último modelo de PC... a veces se requiere precisamente ejecutar en un equipo viejo (o virtualizar), por necesidades específicas que precisan una versión antigua. La salida al mercado de nuevos equipos, no elimina automáticamente los más viejos, siguen conviviendo a veces durante 3 y hasta 4 décadas. Estos pués se varían privados de ciertos usos... si son sistemáticamente eliminados todos los contenidos que 'alguien considere obsoleto'.


288  Seguridad Informática / Seguridad / Re: Ayuda con una suplantación de identidad en: 29 Abril 2022, 16:16 pm
Cada plataforma suele tener un formulario para reportar este tipo de abusos de su plataforma. Hay que aportar detalles suficientemente claros y verificables y ya ellos les cerrarán la  cuenta.

Si son operaciones automáticas, posiblemente no puedan llegar a la raíz (a la persona u organización tras ello), pero siempre podrán pasar los datos a la policía para que ellos investiguen a partir de ahí.
289  Foros Generales / Noticias / Re: Un grupo de hackers de Corea del Norte hizo el robo más grande de criptomonedas de la historia en: 25 Abril 2022, 18:23 pm
Si no son ciudadanos ¿qué son? Con ciudadanos me refiero a que viven en ese país y tienen los derechos y obligaciones que dicta la constitución o el libro de reglas que haya en ese país. ¿Acaso es gente que tienen secuestrada más o menos y que los obligan a estudiar hacking?
Son ciudadanos, pero al servicio del gobierno... pagados o no, ya es otra historia. Y si son pagados, bien o mal pagados, apostaría a que mal pagados.

Corea del Norte, es un régimen dictatorial. El ciudadano está al servicio del gobierno, el 'yo' carece de valor. La individualidad no existe como derecho ni está reconocido. En el caso de este páis, ni siquiera prevalece 'el bien del país sobre el interés personal', si no que prima el ínterés del líder, sus palabras son leyes a cumplirse, así sea un completo analfabeto... estudió en occidente y no es un inculto, aunque si un imbécil ególatra.
Si él llora, ay de aquel que no 'llore' también... a ese extremo llegan las 'libertades' en ese país.
290  Informática / Electrónica / Re: Duda con amperaje de baterías en: 24 Abril 2022, 23:33 pm
Con las mismas pilas, puedes obtener diferentes niveles de salida, en función de cuántas se conexionen en paralelo y cuántas en serie. Las pilas suelen ser iguales entre sí para una misma batería
Casi que podría fabricarse uno mismo la batería si dispusiera de un soldador de puntos. Pero es importante el regulador que evita que la batería arda en determinadas circunstancias.

...otra cosa importante a tener en cuenta si quieres aumentar la autonomía comprando una batería d emás capacidad, es el tamaño de la bateria... asegúrate que cabe en el alojamiento y que luego  puedes cerrar bien el compartimento para que no le entre agua cuando llueva, etc...
Páginas: 1 ... 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [29] 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ... 431
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines