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

#2961
Hola!.

Algunas personas me han preguntado por que ElektroKit ha desaparecido de Github y NuGet (esto está en proceso todavía), pues bien, voy a explicarlo:

Para mi ha sido un placer compartir este gran proyecto de manera gratuita y desinteresada durante más de un año, actualización tras actualización, esfuerzo tras esfuerzo por perfeccionar este framework, pero ha llegado el momento de intentar sacarle un beneficio convirtiéndolo en un producto de pago, sobre todo con la nueva llegada de la versión (privada) 2.1

Así pues, les comunico que a partir de ahora ElektoKit se vuelve un producto de pago.

Si alguien estuviese interesado en adquirir ElektroKit, por favor, que esa persona se comunique conmigo mediante el e-mail que se muestra en mi perfil de usuario de este foro, y le informaré los pasos a seguir.

[youtube=640,360]https://www.youtube.com/watch?v=9l4EAk4dSOA[/youtube]

Espero que vosotros también hayais disfrutado de esta librería y os haya servido tanto como a mi. Ya no tiene sentido que este tema siga abierto... Cierro El Tema.

NOTA: PUEDEN ENCONTRAR ELEKTROKIT Y OTROS DE MIS PRODUCTOS A LA VENTA EN CODECANYON.

¡Un saludo y feliz año!
#2962
Hola. Dejé a un lado este proyecto por un tiempo y hoy he vuelto a ponerme. @ivancea96, estoy adaptando tu código, pero tengo una duda...

¿Cómo determinas la longitud del campo "id" (9 caracteres legibles en este caso, 42 de espacio en total creo) y del texto/descripción del item?.

En esta iteración no veo que determines la longitud de "id" ni tampoco de "entries[0]", ¿como es posible entonces?, no lo entiendo.

Código (cpp) [Seleccionar]
   for(int i=0; i<header.entryAmount; i++){
       uint16_t offset = *(uint16_t*)&file[0x24 + 8 * i];
       string id = string(&file[0x20 + offset]);
       entries[id] = string(&file[0x20 + offset + id.size() + 0x20]);
   }


En serio, ¿como determinas el tamaño que tiene "id" y cada elemento del array "entries"?.

EDITO: Estoy leyendo una referencia online de C++, no se si esto tiene algo que ver pero creo que cuando usas string file(inFile.tellg(), '\0'); devuelve la posición del caracter evaluado "\0" (¿está \escapado?, no me queda muy claro si eso es un "0", no se nada de c/c++).




Esta sería mi adaptación de tu iteración, INACABADA... por que desconozco la longitud de esos campos.
Código (vbnet) [Seleccionar]
For x As Integer = 0 To (entryAmountB - 1)

   Dim offset As Integer = Me.TableNonTextOffset + (8 * x)
   Dim value As Short = BitConverter.ToInt16(Me.GetBytes(offset, 0, 1), 0)

   Dim idOffset As Short = (&H20 + value)
   Dim id As String = Encoding.UTF8.GetString(Me.GetBytes(idOffset, 0, LONGITUD_DE_ID))

   Dim textOffset As Short = (idOffset + id.Length() + &H20)
   Dim text As String = Encoding.UTF8.GetString(Me.GetBytes(textOffset, 0, LONGITUD_DE_TEXTO))

   Debug.WriteLine(String.Format("Entry.Id...: {0}", id))  ' boots_nnnn
   Debug.WriteLine(String.Format("Entry.Text.: {0}", text)) ' el texto/descripción del item

Next


Cada texto de "boots_nnnn" termina con una secuencia de bytes parecida a estas:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 FF FF 44 03 00 00 0F 00 00 00 F2 08 FF FF F1 3F
00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 FF FF 78 03 00 00 20 00 00 00 F2 08 FF FF F1 3F
00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 FF FF C4 05 00 00 2D 00 00 00 F2 08 FF FF F1 3F


Despues de esa secuencia comienza el texto/descripción del item, y ese texto siempre parece terminar con la secuencia de bytes 2E 0A.

Sabiendo eso, creo que puedo determinar facilmente la longitud de cada campo, pero me gustaría comprender como lo haces en tu código, por que pareces conocer la longitud de forma más simple y eficiente.

Saludos!
#2963
Cita de: Coffee en 31 Diciembre 2016, 05:31 AM
esto lo ordena de menor a mayor como podría ordenarlo de mayor a menor .

Simplemente añade el modificador ascending o descending después de la clausula orderby para indicarle expresamente que se ordene de forma ascendente o descendente.

Sintaxis:
Código (csharp) [Seleccionar]
from object in collection
orderby (expression) ascending
select object;


Código (csharp) [Seleccionar]
from object in collection
orderby (expression) descending
select object;


Saludos
#2964
Cuando añades un recurso al proyecto, se genera un archivo Xml que contiene los bytes serializados de ese recurso binario. En los recursos de la aplicación no se inserta un archivo .exe como tal.

- La metodología más cotidiana sería extraer los bytes de tu recurso binario para escribirlos en un archivo local, y luego, ejecutar ese archivo de forma corriente ...con las ventajas que proporciona la class Process.

- La metodología alternativa, y suponiendo que el archivo .exe sea un ensamblado .NET, sería pasarle la secuencia de bytes de tu recurso al método Assembly.Load() para crear un nuevo ensamblado (todo en memoria), leer el punto de entrada de la aplicación con la propiedad Assembly.EntryPoint, y por último llamar al método Assembly.CreateInstance() e invocar el método principal del ensamblado.

- La metodologia usando código no-administrado, sería llamando a la función Win32 VirtualAlloc como explican aquí: http://stackoverflow.com/questions/959087/is-it-possible-to-execute-an-x86-assembly-sequence-from-within-c/959144#959144

El siguiente código lo he sacado de mi API gratuita ElektroKit, allí puedes encontrar más utilidades interesantes para administrar los recursos.


( click en la imagen para visitar el código fuente y/o descargar la librería. )

Código original escrito en VB.NET:
Código (vbnet) [Seleccionar]
''' <summary>
''' Extracts a resource to disk.
''' </summary>
<DebuggerStepThrough>
Public Shared Sub ExtractResourceToDisk(ByVal resource As Byte(),
                                       ByVal targetFilepath As String,
                                       Optional ByVal overwrite As Boolean = False)

   Dim mode As FileMode
   If (overwrite) Then
       mode = FileMode.Create
   Else
       mode = FileMode.CreateNew
   End If

   Dim bufferSize As Integer = 4096
   Using fs As New FileStream(targetFilepath, mode, FileAccess.Write, FileShare.Read, bufferSize)
       fs.Write(resource, 0, resource.Length)
   End Using

End Sub


Conversión a C#:
Código (csharp) [Seleccionar]
/// <summary>
/// Extracts a resource to disk.
/// </summary>
[DebuggerStepThrough()]
public static void ExtractResourceToDisk(byte[] resource, string targetFilepath, bool overwrite = false) {

FileMode mode = default(FileMode);
if (overwrite) {
mode = FileMode.Create;
} else {
mode = FileMode.CreateNew;
}

int bufferSize = 4096;
using (FileStream fs = new FileStream(targetFilepath, mode, FileAccess.Write, FileShare.Read, bufferSize)) {
fs.Write(resource, 0, resource.Length);
}
}


Ejemplo de uso:
Código (csharp) [Seleccionar]
string filepath = Path.Combine(Path.GetTempPath(), "File.exe");
ExtractResourceToDisk(My.Resources.MyExecutableFile, filepath);
Process p = Process.Start(filepath);

#2965
Puedes simplificar bastante el algoritmo usando LINQ:

Código (csharp) [Seleccionar]
using System.Linq;

Código (csharp) [Seleccionar]
string[] lines = {
   "Nombre=paco    puntos=11 dia=26/11/2004",
   "Nombre=jacinto puntos=1  dia=26/11/2004",
   "Nombre=bartolo puntos=10 dia=26/11/2004"
};

IOrderedEnumerable<string> sorted =
   from line in lines
   orderby Convert.ToInt32(line.Remove(line.LastIndexOf(' ')).
                                Remove(0, line.IndexOf("puntos=", StringComparison.OrdinalIgnoreCase) + "puntos=".Length).
                                TrimEnd(' '))
   select line;

foreach (string line in sorted) {
   Trace.WriteLine(line);
}


Saludos
#2966
Cita de: Adrian96 en 28 Diciembre 2016, 18:59 PMno era eso exactamente lo que pretendia que se entendiera con parejas

Muestra un ejemplo del resultado que esperas obtener.

Saludos!
#2967
¿Esos métodos solo los has declarado con la intención de imprimir texto?. Entonces, sencillamente declara variables o constantes de tipo string...

Código (csharp) [Seleccionar]
using System;

namespace ConsoleApplication1 {

   public sealed class Program {

       static void Main(string[] args) {

           Console.WriteLine(Fields.Message01);
           Console.WriteLine(Fields.Message02);
           Console.Read();

       }
   }
}


Código (csharp) [Seleccionar]
namespace ConsoleApplication1 {

   public sealed class Fields {

       public static readonly string Message01 = "Hello World";
       public static readonly string Message02 = "Welcome to this program.";

       private Fields() { }

   }
}


Lo mismo es aplicable en caso de que tengas declarado un método que no solo imprima texto sinog que además cumpla otro propósito, entonces separa ese texto a imprimir de la lógica del algoritmo del método.

Saludos!
#2968
Tengo un poco olvidado el procedimiento de registro de nuevos usuarios, pero creo que tienes razón en que no se muestra ningún enlace al CAREN al momento de registrarse (no recuerdo si dicho enlace tal vez se incluye por email despues de aceptar el formulario de registro en el foro), en ese caso considero oportuno que se incluyese el CAREN ahí.

De todas formas, muchos moderadores llevamos puesto un enlace a las reglas del foro en nuestra firma de usuario, de hecho, los dos moderadores globales que te han respondido a esta pregunta, lo tienen. Si no lo has visto, es por que no has fijado demasiado bien tu atención en los comentarios que te hemos escrito. Yo sinceramente considero que esta imagen es lo suficientemente llamativa para cualquier usuario y no es necesario hacer modificaciones en el foro, vaya:




Saludos!
#2969
Cita de: Hason en 27 Diciembre 2016, 08:47 AMNada, pedia consejos de que hacer, si esperarme , denunciar, intentar volverme a poner en contacto con el vendedor....
Cualquier sugerencia de que hacer en estos casos, os ruego me digais algo.

Hola. Si tienes la más mínima sospecha de que el vendedor intenta estafarte, entonces no esperes más, lo primero de todo que deberías hacer es contactar, pero no con el vendedor, sino con el soporte de milanuncios.com para denunciar la estafa:




No se como administran estos asuntos, pero en el mejor de los casos podrían ocurrir dos cosas: que milanuncios te devolviera el dinero, o que ellos contactasen con el vendedor y éste te enviase la placa o te devolviese el dinero para que su reputación en milanuncios.com no se vea más afectada. Suerte.

Si el asunto no se arregla, pues creo que perderás el dinero, por que... pf, para que vas a perder tiempo con una denuncia a la policía por 30€, ya sé que para ti eso no es poco dinero, pero es que es mucho embrollo...

Por último, si te interesa adquirir productos de 2ª mano entonces yo te aconsejo que compres en e-Bay, más que nada por que te ofrecen mucha seguridad sobre este tipo de fraudes, y si hay algún problema te acaban devolviendo el importe de la compra (espero equivocarme, pero sinceramente pongo en duda que una página de mercado libre tan "polémica" (en el mal sentido) como milanuncios.com se vaya a hacer responsable de esos 30€ que has "perdido", pero si estuviesemos hablando de e-Bay tendrías esa devolución asegurada, recuérdalo para la próxima vez)

Saludos!
#2970
Muchas gracias a todos por las recomendaciones.

El hosting entonces será Hostinger o 000webhost.

Yo también uso Sublime Text (desde hace varios años ya), en lo referente a Html lo he usado muchísimas veces pero solo para analizar documentos Html (para temas de web-scrapping), pero ya sabeis que no es una IDE como tal, es un editor de código, y un intento de IDE, con breakpoints y características de debugging pero... sinceramente yo no me imagino a nadie programando un sitio web completo usando solamente un editor de texto (tampoco en Notepad++), al menos en mi humilde opinión personal si yo hiciera eso no sentiria que estoy utilizando la herramienta más productiva para ese propósito, quiero algo más completo y orientado especificamente al desarrollo de webs. De todas formas, siguiendo la linea de ejemplos que ustedes me han dado, yo creo que otra opción interesante sería utilizar Visual Studio Code: https://code.visualstudio.com/, lo comento por que es una heramienta no tan conocida y algo infravalorada, pero me ha salvado de un apuro en más de una ocasión. Lo que me encanta de este editor es la característica Microsoft IntelliSense (autocompletado de nombres) y el motor de análisis de codígo Roslyn, son cositas que comparte con su hermano mayor Visual Studio, algo que nos ahorra una infinidad de tiempo al escribir código, y también se puede depurar códiogo y etc. Sublime Text también tiene un autocompletado, pero no me convence.

Se ha comentado también sobre ASP.NET, bueno, podría intentarlo, para ser sinceros no había pensado en esa posibilidad, simplemente no lo tuve en cuenta. El problema es que me ciego con las IDEs WYSIWYG por que tienen cientos de presets, osea, elementos prediseñados como barras de progreso, reproductores multimedia, slideshows, carrousels, plantillas de sitios web (cientos o miles), y etc, y eso como ya digo es algo que me ciega, por que me imagino que me ahorraría mucho tiempo utilizar esos presets en lugar de desarrollar el algoritmo desde Cero. Evidentemente ASP.NET tiene un set por defecto de controles web, sin embargo, no es ni el 1% de lo que podemos encontrar en la IDE WYSIWYG Web Builder.
Aparte de eso, y aunque estoy acostumbrado al uso de Visual Studio, nunca he desarrollado nada en ASP.NET, debería aprenderlo desde cero, y ahora empiezo a pensar en conceptos como "Responsive" y... supongo que será algo muy distinto de implementar en este tipo de tecnología, no lo sé, supongo que no lo sabré hasta que lo intente hacer por mi mismo, y eso es lo que haré...

Pues, recapitulando tengo 4 opciones, WYSIWYG Web Builder, ASP.NET (Visual Studio), VSCode y Sublime Text por este orden de preferencia. Lo que haré será intentar desarrollar una página sencillita (un Hola Mundo xD) en estos 4 programas, y buscarle los pros y los contras que le encuentro a cada uno... para ir descartando. Ya veré.

EDITO: Con respecto a Jekyll, habia escuchado hablar de eso pero nunca supe ni tampoco busqué lo que era, lo tendré en cuenta y también lo probaré, si es tan sencillo con el uso de plantillas supongo que será una opción genial!.

Ah... y lo de WordPress también me lo apunto, ya me habian hablado cosas buenas de ello, y hay una infinidad de plantillas para WordPress :D ...creo que en realidad no necesito nada que sea más avanzado ni completo que WordPress, pero todavía no lo sé, primero debo probarlo.

De nuevo, MUCHAS GRACIAS A TODOS. Doy el tema por solucionado.

Saludos!