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


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Mensajes
Páginas: 1 ... 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 [309] 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 ... 436
3081  Foros Generales / Noticias / Re: Coinbase cierra la cuenta de Wikileaks y pierde sus criptomonedas en: 23 Abril 2018, 15:31 pm
Fantástico........ lo que faltaba por ver con las criptomonedas... que de la noche a la mañana, ni por robo, sino por la fuerza policial asalten tu cuenta y se quede en "Zero Zapatero"  :laugh: :laugh: :laugh: :laugh: :laugh:

Me temo que esto va a volver a tirar abajo la tímida remontada del cambio del Bitcoin...
3082  Programación / Programación Visual Basic / Re: Código QR en: 23 Abril 2018, 14:30 pm
Ok... el archivo que yo me descargue, traía otrascarpetas, y no incluía ninguna específica de vb6.

Me descargo el fichero y veo de ojearlo rápida... a lo noche te comento.



Esperando por la comida me ha dado tiempo a probarlo y funciona correctamente... de hecho he probado a guardar la imagen a fichero y eliminarla del picturebox, y luego cambiar el contenido del texto, guardar varias más, cargar la primera y darle a decodificar... y funciona correctamente.

Si dices que te da, problema, asumo que lo que quizás te pase sea una de estas dos cosas (o las dos, quien sabe):

1 - En el proyecto de origen, la ruta de la librería se indica "G:\.... code.tlb", claramente, no es la misma ruta que nadie vaya a tener en su ordenador, luego vé al menú: proyecto --> Referencias --> verás que la librería está  huérfana, dale al botón 'Examinar..." y localiza la librería de tipos... y dale a Aceptar. Guarda el proyecto.

2 - Que no hayas registrado la librería de tipos, que para colmo, tampoco lo tienes complicado porque aunque proceda de NET, incorpora el comando de registro. En la carpeta lib, donde vienen la dll y la tlb, encontrarás el fichero "regcmd.bat", ejecútalo para registrar la librería. Esto tienes que hacerlo con el proyecto cerrado, si está abierto es probable que falle... revisa el mensaje de regASM (antes del mensaje de pausa, pondrá si hubo un problema o si fue todo bien)...

En cualquier caso, ambos porblemas son de novatos.

Finalmente abre el proyecto de nuevo, y ejecútalo, debería funcionarte bien...

3083  Programación / Programación Visual Basic / Re: Código QR en: 23 Abril 2018, 12:00 pm
No pude bajar el proyecto desde 4shared, te pide login y no tengo cuenta ahí, pero afortunadamente si la tengo en CodeProject, así que lo descargué desde allí...

He probado el sample que viene en la ruta: ...QRCode\QRCodeSampleApp\bin\Release\QRCodeSample.exe
Y simplemente falla. Crea las imágenes, aparentemente bien, pero luego al intentar decodificarlas, no es capaz de leer bien más que una sola letra...
Al principio he pensado que fácilmente el problema posría ser que al proceder de Asia, sea simplemente un problema de codificación (página de códigos), pero lo cierto es que en el sample, permite elegir entre alfanumerico, numerico y byte... entonces que fallara con alfanumérico pudiera tener sentido, pero con 'byte' no. Un byte de valor 45, es igual aquí que en China o en la Antártida. Luego veo que la librería ocupa nada menos que 6Mb.
Así que da cierta pereza ponerse a revisar tanto código por nada más que tratar de ayudar. En realidad yo no creo que generar una librearía QRcode (ambas direcciones), precise tanto código (viva la redundancia)... pero bueno.

Nunca he leído la especificación QRCode, pero no creo que suponga tanta complejidad que venga a requerir 6Mb. para codificar y decodificar. Sí recuerdo en cambio que en los años 80, en las revistas de informatica de la época (y libros), venían códigos en formatos similares (vamos que QRCode, no es ningún invento novedoso), en tiras alargadas (strip, no se qué, ), donde venían codificados algunos programas, que de otro modo ocuparian varias páginas de la revista. ...de hecho debo tener algún libro o revista por ahí con ellas... y ciertamente por aquella época todo andaba con pocos kb.
QRCode, por complejo que sea, seguramente lleve algún sistema de tratamiento o alteración del código, quizás incorpore el algoritmo de Solomon-Reed, posiblemente algna cosa más...

Me pregunto, si has intentado al menos leerte la especificación y ya con conocimiento de causa ver si te crees competente para implementarlo. ...porque probablemente se amás sencillo implementarlo de 0, que reapasar 6 mb, de código, para readaptarlo o corregir errores...
3084  Programación / Programación Visual Basic / Re: Recorrer listview al buscar y que seleccione la siguiente coincidencia en: 23 Abril 2018, 11:17 am
Los mensajes privados, son razonablemente para cosas en las que nadie más tenga ver o saber lo que uno tenga que decir a otro, no para solicitar ayuda...

Holal, me acuerdo de vos, fuiste muy amable al darme un codigo exelente para buscar en un list.

Lo que me pasa ahora es q tengo un listview, (ya cargado todo) La idea es buscar por columnas y que el foco se pare en esa fila (ya esta hecho) Lo que me faltaria es que cada vez q hago click en el commandbuton vuelva a buscar y marque el siguiente, o sea, el ciclo. Tenes idea?

este es el código del boton:


Código:
Dim k As Long
   Dim Opcion As Integer
   Dim dato As String
   Dim Item As ListItem

      ' Busca por la primer columna ( por item )
   If Option2.Value = True Then
      dato = txtSearch.Text
      Opcion = lvwText ' busca por el item
   End If
     
   ' busca por las demás columnas ( por SubItem )
   If Option1.Value = True Then
      dato = txtSearch.Text
      Opcion = lvwSubItem ' busca por los subitems
   End If
     
    ' si lo ingresado es una cadena vacia sale
    If dato = vbNullString Then
        Exit Sub
    End If
 
   ' Busca con el método FindItem, estableciendo la opcion de búsqueda
   Set Item = ListView1.FindItem(dato, Opcion, , lvwPartial)
     
   ' si el item es nothing no se encontró
   If Item Is Nothing Then
      MsgBox " No se encontró el dato", vbInformation
      Exit Sub
   Else
       ' .. si no , selecciona el elemento encontrado
       Item.EnsureVisible
       Item.Selected = True
       ListView1.SetFocus
   End If
   

El problema es que ma pereza tener que armar todo un proyecto sólo para verificar una tontería y que luego no se ajuste a tus necesidades. Ya te dije que un listview es un control complejo y muy completo. en realidad si uno conoce con cierta soltura vb6, el código que te dí para el control listbox, debiera ser suficiente para saber aplicalro a otro control que también disponga de una lista... solo cambian nombres de propiedades, de objetos, y la forma de llagar a ellas...

Por otro lado, si me pasas copia del proyecto (basta con la ventana donde tengas el listview (con la configuración que tengas para el propio control), y el código de respuesta... veo de cargarlo, ejecutarlo y donde está el fallo, error, etc... entonces no es tanto tiempo de mi parte.
(es decir, no necesito chorrocientos formularios, ni módulos de tú proyecto, sólo lo preciso para probarlo con la configuración que mantienes y otros controles que tengas asociados al listview incluso si haces copia del mismo, luego en la copia elimina todo lo superfluo para probarlo (esto es, si tienes un textbox, un label, un botón, etc... que interrelacionan con el listview, se quedan pero si no, sobra solo me hará perder tiempo, de igual modo elimina todo el código no relacionado, esto es si en la carga del formulario hay líneas relacionadas con el listview, se quedan, etc...). Cuando lo que se pide no es puntual, o no se es explícito, da pereza porque conlleva mucho más tiempo y sin la certeza de que sea lo que uno realmente necesita.

Saludos...
3085  Foros Generales / Noticias / Re: Londres amenaza a Twitter y Facebook, tienen que proteger más a los menores en: 23 Abril 2018, 10:51 am
Por supuesto que los padres pintan y mucho...
...pero debe un padre estar vigilando a su hijo las 24 horas del día?... En teoría si está prohibido vender alcohol a menores, como se explica que acaben con alcohol en sus manos?. Obviamente porque hay quien no cumple la ley y vende a menores, luego qué problema hay en que la ley se aplique severamente contra esos que venden alcohol a menores?.
Fuertes multas y a ver si los demás, tienen más claro a elegir: entre un negocio ilegal no sé si muy provechoso y donde puedan arruinarse.

Con las redes sociales, 3/4 de lo mismo.
3086  Foros Generales / Noticias / Re: Londres amenaza a Twitter y Facebook, tienen que proteger más a los menores en: 23 Abril 2018, 02:48 am
Deben caer sanciones gordas, para que las redes sociales empiecen a hacer caso...
3087  Programación / Java / Re: Me pueden ayudar a describir este programa de java por favor. en: 22 Abril 2018, 08:24 am
En la línea 30, empieza la función main. Algunas familias de lenguajes empiezan siempre un programa con una función llamada main (es así incluso aunque no se vea en el código de un lenguaje, pués se crea oculta al compilar).

En la siguiente línea, la 31, declara unas variables, una de ellas es un array las "[]" lo denotan.
En la 32, se asigna un valor a 'tam' reclamando un valor e intentado convertir el valor a entero...
En la siguiente línea, se usa el valor recién adquirido, para dar dimensión al array...
En la siguiente línea seinvoca a la primera función para rellenar el array con valores al azar.
En la siguiente se invoca una función para localizar el valor mayor del array.
En la siguiente lo mismo, pero en valor menor.
Finalmente en la última línea, muestra ambos valores.
3088  Foros Generales / Foro Libre / Re: Escribiendo un compilador en vivo en: 20 Abril 2018, 19:23 pm
Habría mucho por comentar, pero tampoco quiero hacer un mensaje demasiado largo, así que he obviado cosas, respondiendo simplemente a algunas de tus dudas...



1 - Preprocesamiento (directivas de preprocesado):
El preprocesador, actúa en la fase primera de la compilación, de hecho empieza en el analizador léxico.

En VB6 hay algunas directivas de preprocesameinto, seguramente las hayas visto en algún código:


Supongamos que tienes que acceder a la hora del sistema y para ello debes invocar una librería, la cual dependerá del sistema operativo destino, en éste caso, la directiva tiene su fundamento, en que compilará la parte perteneciente al sistema operativo vigente a la hora de solicitar la compilación.
Tú decides si vas a compilar para Linux, o para Microsoft (por ejemplo), cambiando el valor de la contante antes de compilar...
Código:
#const Os as string = "Microsoft"

public Function GetLocalTime as string
    dim hora as string

    #If Os = "Microsoft" then
       hora = ...
    #Elseif Os = "Linux" then
       hora = ...
    #end if

    GetLocalTime = hora
End function

No sólo eso, también por ejemplo para incluir macros...
Supongamos que facilitas la posibilidad de tener 'snippets' (pequeños trozos de código, para tareas frecuentes, pero demasiado largas para escribirlas cada vez).
Una forma sencilla de preprocesamiento, sería porejemplo crear directivas de snippets.
Así esto:
Código:
#snippet = "C:\Mi lenguaje\snippets\copypaste.snippet"
Podría incluir ahí código de forma automática, durante la compilación, yendo a la ruta concreta, leyendo el fichero y pegando el contenido íntegro en donde aparece esa directiva.

Otra forma podría ser funciones que no tienes en librerías, sino que se adjuntan con el ejecutable, así por ejemplo podría tener una función en forma de directiva de esta forma:
Código:
#funcion = Ordenar (elarray)
que básicamente podría ser una función (o sub) llamada ordenar, que recibe como parámetro un array...
Y lo que hará el compilador será remplazar esa línea por el código de la función con el identificador correcto del parámetro (que tiene la línea) a la hora de compilar.
Y esto como alternativa a invocar una función ordenar en una librería externa. Uno sabrá qué razones serían precisas para elegir dicha forma... (que a veces son precisas).
Fíjate que en este último caso, no se indica ruta, el formato lo decides tú, podría constar en un fichero, pero quizás si sean pocas (funciones), decidas cargarlas en memoria todas y por tanto luego basta el nombre para localizarla en una colección en vez de en un fichero.
Las directivas, en definitiva facilitan escribir el código, y se le informa a la fase de compilación que debe hacer algo especial distinto al resto del código con el contenido de la directiva.


2 - Continuadores de línea:
Concuerdo contigo, que los continuadores de línea, son desagradables, sin embargo es preciso incluirlos si respondes afirmativamente a esta cuestión:
Nunca hay que olvidar de vista, si al hacer un compilador lo haces exclusivamente para tí, o para que también sea usado por otros. En tu caso es lo segundo?. Si es esto segundo, debes hacerlo porque habrá mucha gente que lo heche en falta (aunque otros lo odien), si es lo primero, puedes excluirlo.
De todos modos, para un ejercicio de publicación (como es los vídeos que vas a realizar) puedes omitirlo, y ya lo dejarás pendiente para otra ocasión. En general un compilador es siempre la mejora de una versión previa...
En BV6, por ejemplo, el continuador de línea es " _" esto es un espacio seguido de un guión bajo, esto no solo es para las expresiones (líneas de código9, es así incluso para los comentarios (cosa que el 99'995 ignora).
Así esto es válido en vb6:
Código:
 ' Aquí empieza un comentario multilínea _
  _
esto también sigue la línea de comentarios _
 continuador de línea espacio y _
 _
 y aquí acaba, a que parece extraño ver una línea de comentario que no empieza por un apóstrofo?
OJO: los continuadores de línea, no deben dejar líneas en blanco, sin su correspondiente 'token':
continuadorLinea = " _" CRLF
Una línea en blanco, siempre se debe interpretar como espacios, como comentario, excepto que esté entre comillas, porque entonces forma parte del valor de dicha cadena de texto.
Es decir esto otro:
"valor de los días d ela semana
Lunes
Martes
...
Domingo"
No es continuador de línea es el valor de una cadena de texto, que contiene caracteres CRLF, igual que podría contener cualquier otro carácter...

3 - Operadores:
Los operadores limítalo a los propios del procesador (incluyendo shifts), el resto considero conveniente dejarlo como funciones internas añadidas al lenguaje (quizás en una clase Math):
Porciento(Valor, Porcentaje)
Logaritmo(Base, valor)
Random(Maximo, Minimo)
Coseno(angulo)
...etc...
Más preciso aún... (ya que tratas de hacer un compilador orientado a objetos), es que cada función pueda ser nativa del tipo de datos específico que es.
No tengas apuros en crear operadores sinónimos:
éste: ">=", lo mismo que éste otro: "=>"
y éste: "><" puede ser lo mismo que "<>" y lo mismo que "!="
...esto de cara al analizador léxico, luego internamente será solo uno cuando se convierta a código intermedio.

4 - Tabla de atributos en tu lenguaje para todos los caracteres ASCII: Es adecuado, que antes de nada, crees un array con todos los caracteres ASCII, y que a cada uno le des valores conforme al tipo de carácter que es, así, por ejemplo "A", es un carácter alfabético, es un caracter mayúsculas y también es un figito en la base hexadecimal. Esto facilita, que debes hacer después con cada carácter, si evaluas un identificador, "A" es un carácter válido, y si evaluas un número "A" puede o no ser un dígito válido en función de si se trata o no de un número en base hexadecimal.

5 - Especificación del lenguaje: Por último y más importante, lo primero a la hora de crear un compilador es crear la especificación del lenguaje. Es una tarea que puede llevar meses, ahora bien si la basas en otro lenguaje ya conocido, al que sólo cambias determinadas cosas (como creo que es el caso), se puede omitir casi todo, y tan solo especificar esa lista de cambios... por ejemplo como señalabas para utilizar ciertos caracteres diferentes como remplazo de los operadores que incorpora VB6, por ejemplo...
la especifciación de un lenguaje empieza por cosas simples como lo que es un dígito, un número, y para ello lo mejor es el BNF.

Código:
digito = "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
digitos = digito [digitos]
numero = ["+"|"-"] digitos
numeroFlotante = numero ["." numero]  *** podría tambén admitirse la notación científica de E.
digitoHexadecimal = digito|"A"|"B"|"C"|"D"|"E"|"F"|"a"|"b"|"c"|"d"|"e"|"f"
digitosHexadecimal = digitoHexadecimal [digitosHexadecimal]
numeroHexadecimal = "&Hx" digitosHexadecimal    *** esto es, ahora sabrás que "A" es un dígito válido, porque hay un 'prefijo' para indicar la base numerica hexadecimal, en ausencia debe considerarse decimal.

caracterMayuscula = A-Z, a-z    *** es otra forma de indicar "A"|"B"|...."Y"|"Z"
caracterMinuscula = a-z
caracterAlfabetico = caracterMayuscula|caracterMinuscula
caracterAlfanumerico = caracterAlfabetico|digito
caracteresAlfanumericos = caracterAlfanumerico [caracteresAlfanumericos]

identificador = caracterAlfabetico caracteresAlfanumericos   *** esto es debe empezar obligatoriamente por una letra y ser lo largo que sea.  

Entonces puedes llegar a la declaración de variables así:
Código:
byte = identificador "byte" ["=" numero]
El analizador kléxico, verifica que se escribe bien, el sintáctico, que todo está en orden, que no tiene nada extraño, ni le falta algo, el semántico, verifica que si se inicializa un valor esté en el rango del byte (0-255), y si no se inicializa expresamente con un valor le asigna el valor 0 (el valor por defecto)
Código:
valorDefectoByte = "0"

Y así vas especificando todo el lenguaje, pero como mínimo si te basas en otro, especificas aquello que cambie, o aquello donde necesites claridad para en adelante no equivocarte...

Por ejemplo puede definir un bucle 'For... next' en español, así:
Citar
hasta = “Hasta”  exprNumerica [“Salta” exprNumerica] comentFinLinea   
itera = “Itera” identificador “Desde” exprNumerica  
itera1 = itera hasta
itera2 = itera comentFinLinea
declaracionItera = (itera1|itera2)
repite1 = “Repetir” comentFinLinea
repite2 = “Repetir” hasta
*** básicamente señala que el cuerpo interno del bucle puede contener expresiones y también la sentencia "SalirDeAqui" (del bucle), en cualquier parte.... expresiones debe definirse en otra parte, tal que sea la suma de expresiones admisiblea estar dentor del cuerpo de un bucle (incluso otro bucle, pero no una función, por ejemplo)
exprSalirDeAqui = ["SalirDeAqui"] expresiones ["SalirDeAqui"] [exprSalirDeAqui]
bloqueItera = (itera1 exprSalirDeAqui repite1|itera2 exprSalirDeAqui repite2)
Y conviene adjuntar ejemplos de lo que se admite y comentar si algo en espacila no se admite.
Estos ejemplos serían validos con la especificación recién dada:
Citar
   Itera k Desde 5 Hasta 40
      SalirDeAqui  *** esta producción no se ha descrito...
      Mostrar k     *** esta producción no se ha descrito...
      SalirDeAqui  *** es el típico 'exit for', un goto a la dirección siguiente a 'repetir (un jump incondicional a una dirección)
   Repetir

   Itera cuenta Desde 40 Hasta 5 Salta -2
      Mostrar cuenta
   Repetir

   Itera k Desde 5
      Mostrar k
   Repetir Hasta 40 Salta 5

   Itera k Desde 40
      Mostrar k
             Si ((k and X) = j) luego SalirDeAqui
   Repetir Hasta 5 Salta -8
En BNF, cada 'variable' a la izquierda, se llama producción, y es una equivalencia de todo lo que está a la parte derecha del "=". Hay cosas que nunca están en la parte izquierda, se llaman símbolos terminales, y no se describen porque están al punto sumplificados que son 'autoentendibles', típicamente son los caracteres, o alguna secuencia especial de ellos, basta ponerlo entre comillas o en negrita (yo prefiero ambas cosas, porque al portarlo a otro sitio que no admite negritas, desaparece el formato, si queda entre comillas, todavía es claro...

...y bueno, al final me he extendido, más de lo que pretendía...
3089  Programación / Java / Re: Me pueden ayudar a describir este programa de java por favor. en: 20 Abril 2018, 18:36 pm
Creo que pudiera ser una tarea que haya puesto un profesor... entonces explicártelo, implicaría que no entiendes nada y que sólo pretendes 'aprobar'.

En cambio, si resulta que no es una tarea de una clase, curso... lo mínimo es que tú intentaras explicarnos que crees que es, conforme lo que lees y en ese caso tal vez uno se aventure a aclararte donde haya alguna duda.
3090  Foros Generales / Foro Libre / Re: Escribiendo un compilador en vivo en: 20 Abril 2018, 06:53 am
Se me hace muy tarde ya, solo he visto hasta el minuto 27...

Hay varias cosas que comentar, pero ahora antes de nada te comento sobre lo que decías en esos minutos previos... (y ya a la tarde, te comento más cosas).

Señalas que procesas todo desde un bucle y que desde ahí tras procesar los tokens de una línea ya conviertes a ensamblador, y que como querías que el compilador sirviera para más lenguajes y/o para más procesadores destino, no te va bien...

en efecto así es... el esquema para compilar en fases, es más o menos el que sigue:

0a manejador de errores (esto se conecta a todas las fases)
0b tabla de símbolos (ídem, se conecta a todas las fases).
1 analizador léxico
2 analizador sintáctico
3 analizador semántico
--------------------------
Esas tres fases, pueden servir para tratar en origen cualquier lenguaje de origen
aunque en general cuanto más flexible es el compilador de cara a más lenguajes, menos óptimo puede resultar de cara a todos ellos (o bien resultar excesivamente cmplejo hasta resultar inmanejable.
La solución es que esas tres partes pueden implemetar interfaces, y según el lenguaje crear una implementación específica para él (no todos los lenguajes podrían requerirlo, pero si lenguajes cuya 'familia' de origen sea muy distinta.

4 Creador de código intermedio:
Si es muy cercano al ensamblador, será costoso traducirlo a máquinas my diferentes como los ARM de x86, ni debe ser muy 'humano' pués de nuevo requerirá fases de aproximación al final... en general es algo intermedio y se recurre a sistemas llamados "código de 3 direcciones" que son parecidos al ensamblador, un mnemónico de instrucción seguido de 3 operandos, uno es un operando origen, otro el opeando destino y el tercero una direccion (como si fuera un registro).
Probablemente no tuvieras pensado una fase, así, pero precisamente esta fase es la que facilita pasar como destino a  una u otra plataforma.

5 Optimización del código: siempre es posible simplificar algo, por ejemplo multiplicaciones por una potencia de 2 o divisiones (cuando son valores constantes, lógicamente), pueden convertirse a desplazamientos (shift) que son más rápidas... y consumen menos ciclos de reloj.
6 Genera el código: para la maquina destino.
Las fases 5 y 6, al igual que las fases 1-3, pueden implementar una interfz específica para cada plataforma... con lo que al final estaremos usando clases y no tantos módulos como veo.

Fíjateq ue las 3 primeras están centradas en el lenguaje de origen, en tanto las dos últimas en la plataforma de destino (hardware), en cambio la 4 es el punto medio del compilador, es donde se une un lenguaje diferente y de donde podrá derivarse hacia una plataforma distinta... es el centro del embudo....

...ya comentaré más cosas, cuando termine de ver el vídeo en la tarde...

Páginas: 1 ... 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 [309] 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 ... 436
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines