Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#4011
Olvida TODO eso, esa no es la manera de solucionarlo.

Siempre hay que acordar que el cliente pague ANTES de entregar el programa (ya sea el primer día o el último dia, pero ANTES), los que no valoren el trabajo de esta manera pues buenas tardes y adiós...¿me entiendes?, se más selectivo.

De todas formas si por el motivo que sea el cliente dice de pagar antes y luego cuando ya has terminado la app dice de pagarte despues, entonces lo que debes hacer es tan simple cómo entregarle una demo del programa, es decir, la aplicación con funcionalidad muy limitada, para que el cliente tenga la certeza de que el programa está hecho y cumple con los requisitos, pero que no podrá hacerla funcionar del todo hasta que te pague el trabajo que le hiciste.

Esa es la solución más simple y también la más efectiva, por que directamente le estarías entregando al cliente la "porción" del código fuente a la que tendrá acceso, mientras que al usar soluciones rebuscadas de sistemas de protección se podrían bypassear con ciertas herramientas de ingeniería inversa.




Te he dado mi opinión y sinceramente te aconsejo que lo soluciones de la forma que acabo de explicar, ahora, solamente como información adicional te indicaré un par de buenas herramientas para proteger ensamblados .Net y añadirles un periodo de evaluación o expiración o trial o como quieras llamarlo...:


Puedes usar cualquier otro software para añadirle el periodo de evaluación trial cómo por ejemplo WinLicense, pero los que mencioné son para .Net.

Saludos!
#4012
Una de dos, o te refieres a un libro que se llama "El libro rojo" pero que su portada es amarilla, o tenemos a un nuevo troll en el foro...

Acláranoslo.

PD: No estaría de más que cuando formulases una pregunta dieras DETALLES para poder ayudarte y/o para no hacer perder el tiempo a los que leen tu duda, por que no se entiende nada...

Saludos!
#4013
Cita de: curiosport en 13 Enero 2016, 21:45 PMGracias por la ayuda Eleкtro pero esos datos los voy a copiar y pegar en el programa cuando yo los necesite, no los quiero ingresar directamente al código fuente.

Claro, eso era obvio, pero simplemente tienes que adaptar los ejemplos de arriba a un textbox...

Vb.Net:
Código (vbnet) [Seleccionar]
Dim values As String() = TextBox1.Text.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)

C#:
Código (csharp) [Seleccionar]
string[] values = TextBox1.Text.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries);

saludos
#4014
Cita de: curiosport en 13 Enero 2016, 19:48 PMSi no es posible en Pseint démenlo en cualquier otro lenguaje de programación pero que pueda usarlo.

Es algo simple que puedes hacer en practicamente cualquier lenguaje... te muestro unos ejemplos:

C#:
Código (csharp) [Seleccionar]
public static string RenameValue(string value) {

value = value.Substring(0, value.IndexOf(' ')).Replace('.', '_');
return string.Format("videos/es{0}.flv", value);
}

string[] values = {
"03.02 Ejercicio Lineal",
"03.03 Ejercicio Aritmético",
"03.03.01 Ejercicio Aritmético más complejo"
};

foreach (string value in values) {
Console.WriteLine(RenameValue(value));
}


Vb.Net:
Código (vbnet) [Seleccionar]
Public Shared Function RenameValue(ByVal value As String) As String

   value = value.Substring(0, value.IndexOf(" "c)).Replace("."c, "_"c)
   Return String.Format("videos/es{0}.flv", value)

End Function

Dim values As String() =
   {
       "03.02 Ejercicio Lineal",
       "03.03 Ejercicio Aritmético",
       "03.03.01 Ejercicio Aritmético más complejo"
   }

For Each value As String In values
   Console.WriteLine(RenameValue(value))
Next


Ruby:
Código (ruby) [Seleccionar]
# -*- coding: Windows-1252 -*-

values = [
"03.02 Ejercicio Lineal",
"03.03 Ejercicio Aritmético",
"03.03.01 Ejercicio Aritmético más complejo"
]

def rename_value(value)
   value = value[0, value.index(' ')].gsub!(".", "_")
   return "videos/es%s.flv" % [value]
end

for value in values
  puts rename_value(value)
end

__END__


Python:
Código (python) [Seleccionar]
# -*- coding: Windows-1252 -*-

values = [
       "03.02 Ejercicio Lineal",
"03.03 Ejercicio Aritmético",
"03.03.01 Ejercicio Aritmético más complejo"
]

def rename_value(value):
   value = value[0:value.index(" ")].replace(".", "_")
   return "videos/es{0}.flv".format(value)

for value in values:
   print rename_value(value)


También puedes utilizar reemplazamiento de string mediante expresioens regulares si lo prefieres...

Saludos!
#4015
Cita de: Orb en 13 Enero 2016, 14:44 PM
Respecto a lo que comentan arriba no tiene porque ser asi.
No te digo que quiera infectar a alguien tal vez si, tal vez no

Primeramente, las intenciones del usuario que formuló la pregunta son bastante obvias:

Cita de: Sardox01 en 13 Enero 2016, 14:44 PM¿Que precauciones tomarías para no ser localizado antes y despues de infectar con un Troyano?

Segundo, pongo un ejemplo:
Si una persona NO quiere robar un banco, ¿entonces por qué narices querría aprender cómo robarlo?.
Y en el hipotético caso de que esa persona fuese el jefe de un banco y solamente quisieras conocer esa información por saber cómo reaccionar ante un robo, entonces acudiría a una compañia profesional de seguridad y no lo preguntaría en un maldito foro.

Con esto quiero decir que no veo justificación alguna para pedir orientación sobre algo que está totálmente prohibido en el foro.

Esto se repite una y otra vez, siempre lo mismo y con las mismas excusas, pero ustedes cómo usuarios ya saben de sobra que NO se puede hablar de ello y punto, esto es un foro de hacking ético.

Tema cerrado.

Saludos!
#4016
Los métodos del namespace My son útiles y sencillos ...pero limitados, trata de evitarlos.

Teniendo el web-proxy:
Código (vbnet) [Seleccionar]
Dim proxy As New WebProxy("proxydeprueba", 3128)
proxy.Credentials = New NetworkCredential("yomismo", "mipass,")


Puedes utilizar la class webclient para descargar el archivo de forma sincrónica o asíncrona para utilizar sus eventos de reporte de progreso:
Código (vbnet) [Seleccionar]
Using wc As New WebClient
   wc.Proxy = proxy
   wc.DownloadFile("https://foro.elhacker.net/Themes/converted/selogo.jpg", "C:\selogo.jpg")
End Using


O también la class WebRequest / HttpWebRequest:
Código (vbnet) [Seleccionar]
Dim request As WebRequest = WebRequest.Create("https://foro.elhacker.net/Themes/converted/selogo.jpg")

With request
   .Proxy = proxy
End With

Using sr As Stream = (request.GetResponse.GetResponseStream)

   Using fs As FileStream = File.Create("c:\selogo.jpg")
       sr.CopyTo(fs)
   End Using

End Using

También puedes realizar una copia del stream por bloques si prefieres reportar el progreso de la copia en archivos grandes.




Código fuente sacado de mi API ElektroKit:


Como puedes ver, con el siguiente método se intenta evitar o automatizar la asignación de un nombre de archivo de destino, aunque no es un algoritmo perfecto.
El código original utiliza una lista de MimeTypes para una mejor detección del tipo o extensión del archivo de destino, pero la he eliminado para reducir el código que mostrarte aquí en el foro, y le añadí el parámetro del proxy.
Si descomentas las lineas de variables comentadas puedes extender el método para reportar el progreso mediante eventos.

Ejemplo de uso:
Código (vbnet) [Seleccionar]
DownloadFile(proxy, "http://download.thinkbroadband.com/5MB.zip", "C:\")

Snippet:
Código (vbnet) [Seleccionar]
Public Shared Sub DownloadFile(ByVal proxy As WebProxy,
                              ByVal url As String,
                              ByVal dirpath As String)

   Dim req As HttpWebRequest = DirectCast(HttpWebRequest.Create(url), HttpWebRequest)
   req.Proxy = proxy

   Using resp As WebResponse = req.GetResponse

       Dim filename As String = ""

       Try
           filename = Path.GetFileName(resp.ResponseUri.AbsoluteUri)

       Catch ex As Exception
           filename = String.Format("{0}.{1}", Path.GetFileNameWithoutExtension(Path.GetRandomFileName), "file")

       Finally
           If Not Path.HasExtension(filename) Then
               filename.Insert(filename.Length, ".file")
           End If

       End Try

       Dim buffer As Byte() = New Byte(1023) {}
       Dim bytesRead As Integer
       ' Dim totalBytes As Long
       ' Dim receivedBytes As Long

       Using fs As New FileStream(Path.Combine(dirpath, filename), FileMode.CreateNew, FileAccess.ReadWrite, FileShare.Read)

           Using data As Stream = resp.GetResponseStream

               ' totalBytes = data.Length
               bytesRead = data.Read(buffer, 0, buffer.Length)

               While (bytesRead > 0)
                   fs.Write(buffer, 0, bytesRead)
                   ' receivedBytes += bytesRead
                   bytesRead = data.Read(buffer, 0, buffer.Length)
               End While

           End Using

       End Using

   End Using

End Sub


Saludos!
#4017
Scripting / Re: Barra de progreso [Batch]
13 Enero 2016, 09:13 AM
1. Está prohibido revivir posts antiguos, puedes publicar una nuevo post para formular tus preguntas si lo deseas y poner enlaces a este u otros hilos para referencias su contenido...

2. Respecto a la primera pregunta que hiciste, es el caracter del backspace (BS):

3. Respecto a la última pregunta, aquí puedes encontrar los caracteres de bloques unicode:

Tema cerrado.

Saludos!
#4018
Cita de: phetete en 12 Enero 2016, 21:00 PMalguna sugerencia...

El código del compañero @seba123Neo y cualquier comparer en general no tiene misterio, se implementa la interfáz IComparer o un type que la implemente (ej. para texto: CaseInsensitiveComparer) y se implementan los métodos base, es el modelo standard a seguir para implementar dicha funcionalidad de manera correcta, así que si te tarda digamos más de 2 segundos en ordenar entonces seguramente el problema es ajeno al comparer.

· ¿Tal vez estés utilizando un listview de terceros que sea muy "pesado", o una cantidad de datos muy "pesada"?.

· Si las circunstancias lo permiten siempre puedes probar a utilizar el modo virtual para aumentar en gran medida el rendimiento del listview:
De todas formas, eso es solo una sugerencia adicional y ajena al problema real de los 30 segundos de ordenamiento.

· Revisa los controladores de eventos de tu listview para verificar si estás haciendo algo incorrecto con los items que provoque ese exceso de tiempo en el ordenamiento... y publica el código relevante, de lo contrario dudo mucho que alguien te pueda ayudar, ya que como digo el problema seguramente no sea del comparer (a menos que la lógica del comparer que estés usando sea tan incorrecta como para provocar ese tipo de problema).

Te sugiero reemplazar la lógica de ordenamiento que estés utilizando y probar con el siguiente código fuente extraido de la próxima versión (sin publicar todavía) de mi API ElektroKit:




Ejemplo de uso:
Código (vbnet) [Seleccionar]
Public Class Form1 : Inherits Form

   Friend WithEvents MyListView As New ListView
   Private sorter As New ListViewColumnSorter

   Public Sub New()

       MyClass.InitializeComponent()

       With Me.MyListView

           ' Set the sorter, our ListViewColumnSorter.
           .ListViewItemSorter = sorter

           ' The initial direction for the sorting.
           .Sorting = SortOrder.Ascending

           ' Set the initial sort-modifier.
           sorter.SortModifier = SortModifiers.SortByText

           ' Add some columns.
           .Columns.Add("Text").Tag = SortModifiers.SortByText
           .Columns.Add("Numbers").Tag = SortModifiers.SortByNumber
           .Columns.Add("Dates").Tag = SortModifiers.SortByDate

           ' Adjust the column sizes.
           For Each col As ColumnHeader In Me.MyListView.Columns
               col.Width = 100
           Next

           ' Add some items.
           .Items.Add("hello").SubItems.AddRange({"2", "11/11/2000"})
           .Items.Add("yeehaa!").SubItems.AddRange({"1", "9/9/1999"})
           .Items.Add("El3ktr0").SubItems.AddRange({"100", "21/08/2014"})
           .Items.Add("wow").SubItems.AddRange({"10", "11-11-2000"})

           ' Styling things.
           .Dock = DockStyle.Fill
           .View = View.Details
           .FullRowSelect = True
       End With

       With Me ' Styling things.
           .Size = New Size(400, 200)
           .FormBorderStyle = Global.System.Windows.Forms.FormBorderStyle.FixedSingle
           .MaximizeBox = False
           .StartPosition = FormStartPosition.CenterScreen
           .Text = "ListViewColumnSorter TestForm"
       End With

       Me.Controls.Add(Me.MyListView)

   End Sub

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Handles the <see cref="ListView.ColumnClick"/> event of the <see cref="MyListView"/> control.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   Private Sub MyListView_ColumnClick(ByVal sender As Object, ByVal e As ColumnClickEventArgs) _
   Handles MyListView.ColumnClick

       Dim lv As ListView = DirectCast(sender, ListView)

       ' Dinamycaly sets the sort-modifier to sort the column by text, number, or date.
       sorter.SortModifier = DirectCast(lv.Columns(e.Column).Tag, SortModifiers)

       ' Determine whether clicked column is already the column that is being sorted.
       If (e.Column = sorter.ColumnIndex) Then

           ' Reverse the current sort direction for this column.
           If (sorter.Order = SortOrder.Ascending) Then
               sorter.Order = SortOrder.Descending

           Else
               sorter.Order = SortOrder.Ascending

           End If

       Else
           ' Set the column number that is to be sorted, default to ascending.
           sorter.ColumnIndex = e.Column
           sorter.Order = SortOrder.Ascending

       End If ' e.Column

       ' Perform the sort.
       lv.Sort()

   End Sub

End Class





Cita de: phetete en 12 Enero 2016, 21:00 PMhan pasado pvarios años desde el ultimo post.

Está prohibido revivir temas antiguos, si sigues teniendo ese problema con el listview entonces debes formular tus dudas en un nuevo hilo y si quieres puedes hacer referencia a este u otro hilo poniendo la url para mencionar el contenido/cçodigo del post o contestar a cualquiera de las preguntas que te hice...

Tema cerrado.

Saludos!
#4019
El nombre del directorio del perfil de usuario actual (X:\Users\{Este Usuario}) se puede representar con la variable de entorno %UserProfile%.

Código (dos) [Seleccionar]
@Echo Off
Echo %UserProfile%
Pause&Exit


Lee acerca de otras variables de entorno de Windows:

Saludos.
#4020
Si el archivo .jar se encuentra en el directorio de trabajo del archivo .bat, entonces creo que simplemente podrías hacer esto:

Código (dos) [Seleccionar]
@Echo Off
"java.exe" -jar "%CD%\Eliminar.jar"
Pause


No le des tantas vueltas a los directorios.

Si te sigue saliendo ese error de la consola de java, al parecer puede ser debido a muchos problemas diferentes, entre ellos los permisos de usuario:

Prueba el script en modo normal y en modo administrador, si el modo normal te funciona pues ya sabes de donde viene el problema.

Saludos