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

#3031
Dudas Generales / Re: Novatos/Principiantes/Rookies
10 Diciembre 2016, 22:02 PM
Considero de lo más normal que un usuario reclame al staff de la página por falta de información actualizada, es comprensible, pues si alguien debe mover un dedo para solucionar algo esos deberían ser "los de arriba", pero como ya ha mencionado el compañero Engel Lex hay que ser comprensible también con la parte que nos toca a los moderadores, colaboradores, y co-admines y los de la wiki y demás, la colaboración de aportes/tutoriales es algo opcional y gratuito tanto por parte del usuario como del moderador, y simplemente no se puede con todo por falta de tiempo.

Hay tres tipos de usuarios, los que vienen a preguntar como hackear el Facebook de su novia, los que dedican tiempo a ayudar de forma individual a resolver las dudas informáticas a otros usuarios, y los que además de eso tienen tienen el tiempo de reunir todo su conocimiento en un post/tutorial que le sirva a cientos o miles de personas al mismo tiempo. Usuarios tipo nº2 siempre hay suficientes, ¡y se agradece!, pero usuarios tipo nº3 siempre hay pocos ...en cualquier foro.

Saludos!
#3032
Cita de: #!drvy en 10 Diciembre 2016, 20:33 PMy que beneficio aportaría eso ? (...) no es que no puedas dejar el link..

No se si te das cuenta de lo que supone hacer un click sobre una url para que se abra una nueva y molesta pestaña en el navegador (con la de memoria que eso consume en el Firefox) y me lleve a una página la cual debo esperar a que se cargue y se carguen todos sus scripts y los banners publicitarios, y luego encima esperas que vaya a HACER OTRO CLICK ADICIONAL para darle al botón de play y esperar a que se bufee el video?... nah!, prefiero mil veces los videos embedidos en el foro a realizar un esfuerzo innecesario con el brazo :¬¬. Además, es más cool.




Cita de: El_Andaluz en 10 Diciembre 2016, 20:43 PM
Pues dar un poco mas de comodidad a los usuarios en general ? Por ejemplo de no tener que hacerse una cuenta en You tube por ejemplo para poder subir un vídeo al foro no se a mi me parece exagerado tener que hacer una cuenta en You tube si por ejemplo quiero subir un video tutorial hecho por mi por ejemplo o de lo que sea es mi opinión o si queremos compartir un vídeo que sea vea mejor que poner un simple enlace capta mas la atención mucha gente se le ponen enlaces y no los mira.  

Desconozco cual es la capacidad de tamaño del server, pero eso de hospedar videos... en masa... que se vayan acumulando con el tiempo... en 4k... yo creo que parece inviable xD, además luego estaría la implementación del algoritmo para buscar una relación óptima entre calidad y tamaño de los videos subidos (supongo que ya sabrás que Youtube convierte automáticamente los videos, pues habria que hacer algo parecido si se busca lo mejor)... hablo desde la ignorancia, por que tampoco sé si ya habrá algo parecido para SMF la verdad.

En realidad si pretendes subir un video tutorial, lo más sensato me parece que es hacerse una cuenta en Youtube (o cual sea), así tienes tu canal con tus videos en un mismo sitio y no los pierdes, y puedes compartirlo en otros sitios.

Saludos!
#3033
Cita de: okik en 10 Diciembre 2016, 19:16 PMla clave está en ponerlo entre corchetes {Environment.NewLine}, entonces la función Split si que ya te ofrece la opción de añadir StringSplitOptions

Sé que este tema ya ha quedado solucionado pero me gustaría comentarte algo que podría serte de utilidad en el futuro.

Efectivamente ese overload solo acepta un {Array} de caracteres y/o de strings, no acepta un string individual, yo por eso utilizo las siguientes extensiones (ATENCIÓN, PROPAGANDA GRATUITA :xD) que puedes encontrar en mi set de librerías ElektroKit para acomodar diferentes situaciones de uso en la vida real:

Código (vbnet) [Seleccionar]
''' <summary>
''' Contains custom extension methods to use with the <see cref="System.String"/> type.
''' </summary>
<ImmutableObject(True)>
<HideModuleName>
Public Module StringExtensions

       ''' <summary>
       ''' Splits a string into substrings that are based on the specified string.
       ''' </summary>
       <DebuggerStepThrough>
       <Extension>
       <EditorBrowsable(EditorBrowsableState.Always)>
       Public Function Split(ByVal sender As String,
                             ByVal separator As String,
                             ByVal options As StringSplitOptions) As String()

           Return sender.Split({separator}, options)

       End Function

       ''' <summary>
       ''' Splits a string into a maximum number of substrings based on the specified string.
       ''' </summary>
       <DebuggerStepThrough>
       <Extension>
       <EditorBrowsable(EditorBrowsableState.Always)>
       Public Function Split(ByVal sender As String,
                             ByVal separator As String,
                             ByVal count As Integer,
                             ByVal options As StringSplitOptions) As String()

           Return sender.Split({separator}, count, options)

       End Function

End Module


Lo puedes copiar y pegar y listo (o puedes ignorar lo que te digo xD), siempre viene bien tener utensilios así a mano. En el código he eliminado toda la documentación adicional (que es mucha) de los parámetros y etc. para que no se haga tediosa la lectura.

Como puedes ver, esas funciones no hacen nada más lejos que llamar a las funciones originales de .NET Framework pero pasando el string como array (así que no hay que preocuparse por un error humano por mi parte).

Ejemplo de uso:
Código (vbnet) [Seleccionar]
Dim str As String = "Hello" & Environment.NewLine & "World"
Dim arr As String() = str.Split(ControlChars.NewLine, StringSplitOptions.RemoveEmptyEntries)

For Each item As String In arr
   Console.WriteLine(item)
Next


y:

Código (vbnet) [Seleccionar]
Dim str As String = "Hello" & Environment.NewLine & Environment.NewLine & "World"
Dim arr As String() = str.Split(ControlChars.NewLine, 3, StringSplitOptions.None)

For Each item As String In arr
   Console.WriteLine(item)
Next


¡Un saludo!
#3034
Cita de: RevolucionVegana en 10 Diciembre 2016, 16:30 PMA ver un momento xd esto se está yendo de las manos
...
mi objetivo principal era si sabíais que elemento del café podría causarme esto para eliminarlo y poder seguir tomando café
...
no creo que sea lo de las piedras
...
la duda es si puede ir a más, si el café puede hacer que te salgan piedras

Este hilo empieza a dejar de tener sentido alguno, recuerda que estamos en un foro informático y por el momento la profesión de 'Hacker de Café' no se ha inventado, me refiero, aquí no hay eruditos del café ni consejeros alimenticios, más consejos de los que ya se te han proporcionado no creo que se puedan mejorar mucho más...

Consulta al médico, él sabrá como ayudarte, el resto de opiniones que te proporcionemos (me incluyo, por supuesto) no te resultarán útiles por que son simples especulaciones.

Tema Cerrado también para evitar que se den consejos que resulten perjudiciales para la salud de algunos.

¡Saludos!
#3035
Pues yo me quedo con la duda, ¿suponía alguna diferencia en eliminar usuarios inactivos de hace 10 años, con eliminar usuarios inactivos de hace 5 años? :P simple curiosidad, yo creo que los de 5 años tampoco se volverían a conectar, ¡no hace falta que nadie responda a esa pregunta!.

Cita de: El_Andaluz en 10 Diciembre 2016, 04:57 AMO la posibilidad de subir vídeos de otros servidores que no sean You tube por ejemplo no se Dailymotion.

Interesante, algo como esto quizás:

Saludos!
#3036
Cita de: RevolucionVegana en 10 Diciembre 2016, 12:56 PMYo creo que es por no beber casi agua

No se si es una pregunta muy indiscreta pero, ¿cuando dices que no bebes casi agua lo dices literálmente, o te refieres a que consumes otras bebidas en lugar de agua?.

Suponiendo que nos estemos refiriendo a lo segundo, entonces te aseguro que no es culpa de eso, aunque alguien decidiera reemplazar el agua por la Fanta o la Coca-Cola, son un 90% de agua, y el resto de bebidas gaseosas y no gaseosas habria que mirarlo detenidamente pero igual serán casi todo agua como el resto, así que en ese caso, beber agua estarás bebiendo la suficiente ...aunque no ponga "Agua" en la etiqueta del producto.

Si por otro lado te refieres a lo primero, pues... soy un completo ignorante del veganismo y sus prácticas habituales, pero imagino que no comes carne ni nada producido por un animal, así que estás desperdiciando desaprovechando el 69% de agua que contiene el pollo frito (con la piel), el 63% de agua de la carne magra, el 75% de agua que contiene un huevo frito, y ya no hablemos del marisco. Si, eso y "no beber agua" podría ser muy perjudicial...

Saludos!
#3037
Cita de: RevolucionVegana en 10 Diciembre 2016, 11:45 AMHola a todos no se si os pasa pero estoy perfecto en plan de que no me duele nada y me encuentro super bien y cuando tomo café al rato empiezan a darme muchas ganas de mear y me duele un poco el riñón derecho si a esto le sumo que últimamente no estoy haciendo casi deporte por no decir nada porque estoy con un proyecto estudiando y practicando pues bueno y tampoco es que beba demasiada agua ahora que no hace calor, que me aconsejáis debería dejar de tomar café? O es el azúcar? Yo hago café y le echo dos cucharadas pequeñas de azúcar y después un poco de leche de avena, que debería hacer lo dejo por completo durante un tiempo, tomo más agua y no lo dejo, os ha pasado alguna vez? Muchas gracias!!

No soy médico ni tampoco 100týfico pero yo juraría que el azúcar no es capaz de producir esos síntomas al riñón, yo despues de algunas comilonas he sentido cierto dolor en el riñón (siempre el mismo riñón), más que dolor es como un mal estar, como un escozor interno, algo irritannte, suele durarme unas 5 o 6 horas el muy... y el dolor se extiende casi hasta el hombro por detrás en la parte lumbar.

En fin, yo he llegado a la conclusión de que es un problema de acidez, por que al excederme con alimentos ácidos lo noto (no siempre me ocurre, quizás 3 o 4 veces al año), así que por los síntomas que has descrito, yo creo que puede ser eso, demasiada acidez.

El café contiene muchos ácidos, existen, literalmente, cientos de componentes ácidos en tan solo el café, y al hecharle leche (ácido lacteo), todavía más (aunque la concentración de ácido en la leche varía mucho en el tipo de leche que sea, no se decirte). así que si te duele el riñón lo mejor en mi opinión sería dejar el café de forma determinante y permanente al menos para comprobar si hay una mejora y así verificar que la causa era el café, o también podrías intentar cambiar de marca de café, cuanto menos agrio sea el café por si solo, menos ácido supone.

También podría ser que fueses intolerante a la lactosa y no lo hayas descubierto, y que se te formen "piedras" en el riñón debido a eso, pero vamos... imagino que llevarás desde la infancia consumiendo leche y a estas alturas ya te habrias percatado de ese problema si lo tuvieras, pero si no lo has hecho, entonces asegúrate por que es algo muy peligroso (yo soy intelorante).

LO MÁS SENSATO ES VISITAR A TU MÉDICO PARA QUE TE PUEDAN DAR UN DIAGNÓSTICO REAL.

Saludos!
#3038
En lugar de duplicar un post para formular la misma pregunta (cosa que está prohibido), puedes pedirle al moderador que cerró tu tema que lo reabra, exponiendo tus argumentos, o puedes publicar un nuevo post haciendo referencia a ese post cerrado para extender tu pregunta, lo que sea, pero no duplicar un post copiando y pegando el mismo mensaje...

Tema Cerrado. ...también por que ambos se han "trolleado" entre ustedes, y se ve como va a acabar la cosa otra vez.

Saludos!
#3039
Buenas!

Primero me gustaría aclarar que el propósito de esto es ético, y cualquier persona dispuesta a ayudarme a aclararme las ideas con esta duda que tengo, podría verse recompensada en un futuro próximo, ya que un grupo muy importante (y veterano) de Rom-Hacking está llevando a cabo la traducción al Español del videojuego Persona 3 para PS2, y yo he decidido prestarles ayuda en una pequeña cosa que necesitan, pero me encuentro atascado...

Este es el archivo con el que estoy trabajando:

El archivo se llama datBootsHelp.bmd y el formato del archivo, BMD, es un formato privativo el cual contiene 2 tablas,
necesito parsear una de esas tablas para traducir de forma programática los textos que contiene, y por textos me refiero a estas descripciones en Inglés:



En la siguiente imagen os muestro las especificaciones conocidas del formato BMD, y los valores que he obtenido analizando el archivo de ejemplo datBootsHelp.bmd el cual he compartido al principio del post.



Las filas marcadas con un signo verde son las que he conseguido localizar y parsear de forma programática sin problemas, las filas con un aspa roja son las que todavía no, y la fila con un signo de interrogación es el offset con el que tengo problemas y por ende me impide localizar los valores del aspa roja...

El problema que tengo es que no consigo determinar en que offset se delimita el final de la primera tabla, con el inicio de la segunda tabla, ni tampoco entiendo cual es la longitud exacta (contando los bytes ceros/nulos, se entiende) de los campos/textos de la segunda tabla, es decir, no consigo entender donde empieza el identificador de texto, cual es su longitud/capacidad, y donde empieza la descripción de texto y cual es su longitud/capacidad. Si analizo y comparo cada campo por individual para intentar averiguar la longitud, me da diferentes longitudes así que no me cuadra nada... pero eso solo significa que lo estoy analizando mal, por que deben tener una longitud máxima el identificador la descripción, vaya xD.

Supuestamente y a mi entender, la primera tabla termina en el offset 814 (0x32C) como se menciona en la imagen de arriba; en esta imagen de aquí abajo hago una selección empezando por ese offset hasta encontrar el inicio del primer identificador de texto ...y por medio hay 2 bytes (A4 1D) que no se lo que son:






Por último, comparto el código fuente que he desarrollado en el lenguaje VB.NET para leer los datos de la cabecera del formato y  la primera tabla:

Código (vbnet) [Seleccionar]
''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' Represents the BMD File Format.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
''' <remarks>
''' <see href="http://datacrystal.romhacking.net/wiki/Persona_3_and_4/BMD_%28File_Format%29"/>
''' </remarks>
''' ----------------------------------------------------------------------------------------------------
Public NotInheritable Class BMDFormat

#Region " Private Fields "

   ''' <summary>
   ''' Specifies the offset where the header begins.
   ''' </summary>
   Private ReadOnly HeaderOffset As Integer = &H0

   ''' <summary>
   ''' Specifies the offset where the non-text table begins. This is the first table in the BMD file format.
   ''' </summary>
   Private ReadOnly TableNonTextOffset As Integer = &H24

   ''' <summary>
   ''' Specifies the offset where the text table begins. This is the second table in the BMD file format.
   ''' </summary>
   Private TableTextOffset As Integer ' The value is determined later, at the end of the TableNonTextOffset table.

   ''' <summary>
   ''' Contains the offset location and length of the BMD header offsets.
   ''' </summary>
   Private ReadOnly HeaderOffsets As New Dictionary(Of String, KeyValuePair(Of Integer, Integer))(StringComparer.Ordinal) From {
       {"ChunkID", New KeyValuePair(Of Integer, Integer)(&H0, Nothing)},
       {"Size", New KeyValuePair(Of Integer, Integer)(&H4, &H5)},
       {"MagicIdentifier", New KeyValuePair(Of Integer, Integer)(&H8, &HB)},
       {"EndOfTextTable", New KeyValuePair(Of Integer, Integer)(&H10, &H11)},
       {"OffsetsAmount", New KeyValuePair(Of Integer, Integer)(&H14, &H15)},
       {"EntriesAmount", New KeyValuePair(Of Integer, Integer)(&H18, &H19)}
   } ' Friendly-Name, {Start-Offset, End-Offset}

#End Region

#Region " Properties "

   ''' <summary>
   ''' Gets the raw byte-data of the BMD file.
   ''' </summary>
   Public ReadOnly Property RawData As Byte()
       Get
           Return Me.rawDataB
       End Get
   End Property
   Private ReadOnly rawDataB As Byte()

   ''' <summary>
   ''' Gets the Chunk ID of the file format.
   ''' </summary>
   Public ReadOnly Property ChunkID As Byte
       Get
           Return Me.chunkIDB
       End Get
   End Property
   Private chunkIDB As Byte

   ''' <summary>
   ''' Gets the size of the file.
   ''' </summary>
   Public ReadOnly Property Size As Short
       Get
           Return Me.sizeB
       End Get
   End Property
   Private sizeB As Short

   ''' <summary>
   ''' Gets the Magic Identifier of the file format.
   ''' </summary>
   Public ReadOnly Property MagicIdentifier As Byte()
       Get
           Return Me.magicIdentifierB
       End Get
   End Property
   Private magicIdentifierB As Byte()

   ''' <summary>
   ''' Gets the end of text table of the file format.
   ''' </summary>
   Public ReadOnly Property EndOfTextTable As Short
       Get
           Return Me.endOfTextTableB
       End Get
   End Property
   Private endOfTextTableB As Short

   ''' <summary>
   ''' Gets the amount of offsets in offset table of the file format.
   ''' </summary>
   Public ReadOnly Property OffsetsAmount As Short
       Get
           Return Me.offsetsAmountB
       End Get
   End Property
   Private offsetsAmountB As Short

   ''' <summary>
   ''' Gets the amount of entries of the file format.
   ''' </summary>
   Public ReadOnly Property EntriesAmount As Short
       Get
           Return Me.entriesAmountB
       End Get
   End Property
   Private entriesAmountB As Short

#End Region

#Region " Constructors "

   Private Sub New()
   End Sub

   Public Sub New(ByVal filepath As String)
       Me.New(File.ReadAllBytes(filepath))
   End Sub

   Public Sub New(ByVal file As FileInfo)
       Me.New(file.FullName)
   End Sub

   Public Sub New(ByVal raw As Byte())
       Me.rawDataB = raw
       Me.ReadHeader()
   End Sub

#End Region

#Region " Private Methods "

   ''' <summary>
   ''' Reads the BMD header.
   ''' </summary>
   Private Sub ReadHeader()

       Dim chunkID As KeyValuePair(Of Integer, Integer) = Me.HeaderOffsets("ChunkID")
       Dim size As KeyValuePair(Of Integer, Integer) = Me.HeaderOffsets("Size")
       Dim magicIdentifier As KeyValuePair(Of Integer, Integer) = Me.HeaderOffsets("MagicIdentifier")
       Dim endOfTextTable As KeyValuePair(Of Integer, Integer) = Me.HeaderOffsets("EndOfTextTable")
       Dim offsetsAmount As KeyValuePair(Of Integer, Integer) = Me.HeaderOffsets("OffsetsAmount")
       Dim entriesAmount As KeyValuePair(Of Integer, Integer) = Me.HeaderOffsets("EntriesAmount")

       Me.magicIdentifierB = Me.GetBytes(Me.HeaderOffset, magicIdentifier.Key, magicIdentifier.Value)
       Me.chunkIDB = Me.GetByte(Me.HeaderOffset, chunkID.Key)
       Me.sizeB = BitConverter.ToInt16(Me.GetBytes(Me.HeaderOffset, size.Key, size.Value), 0)
       Me.endOfTextTableB = BitConverter.ToInt16(Me.GetBytes(Me.HeaderOffset, endOfTextTable.Key, endOfTextTable.Value), 0)
       Me.offsetsAmountB = BitConverter.ToInt16(Me.GetBytes(Me.HeaderOffset, offsetsAmount.Key, offsetsAmount.Value), 0)
       Me.entriesAmountB = BitConverter.ToInt16(Me.GetBytes(Me.HeaderOffset, entriesAmount.Key, entriesAmount.Value), 0)

       Me.TableTextOffset = Me.TableNonTextOffset + (8 * (entriesAmountB - 1)) + 2

       Me.ReadNonTextTable()
       Me.ReadTextTable()

   End Sub

   ''' <summary>
   ''' Reads the non-text table of the BMD file format.
   ''' <para></para>
   ''' This table seems not useful.
   ''' </summary>
   Private Sub ReadNonTextTable()

       For x As Integer = 0 To (entriesAmountB - 1)

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

#If DEBUG Then
           Debug.WriteLine(String.Format("Entry.Index.: {0}", (x + 1)))
           Debug.WriteLine(String.Format("Start.Offset: DEC={0,-4} HEX=0x{1}", offset, offset.ToString("X")))
           Debug.WriteLine(String.Format("Raw.Bytes...: {0}", String.Join(" ", From b As Byte In data Select b.ToString("X"))))
           Debug.WriteLine(String.Format("Int16.Value.: {0}", value))
           Debug.WriteLine(String.Empty)
#End If

       Next

   End Sub

   ''' <summary>
   ''' Reads the text table of the BMD file format.
   ''' <para></para>
   ''' This table contains the items identifiers and their descriptions for further translation.
   ''' </summary>
   Private Sub ReadTextTable()

       For x As Integer = 0 To ...
           ' ...?
       Next

   End Sub

   Private Function GetByte(ByVal start As Integer, ByVal offset As Integer) As Byte
       Return Buffer.GetByte(array:=Me.RawData, index:=start + offset)
   End Function

   Private Function GetBytes(ByVal start As Integer, ByVal from As Integer, ByVal [to] As Integer) As Byte()
       Return Me.rawDataB.Skip(start + from).Take(([to] - from) + 1).ToArray()
   End Function

#End Region

End Class


Saludos!
#3040
Hola.

Puedes hacerlo de la siguiente manera ...y de paso formatear un poco el código:
(este ejemplo es para 5 valores, tampoco lo voy a dar todo hecho al 100%)

C#:
Código (csharp) [Seleccionar]
private readonly Random rand = new Random();
Código (csharp) [Seleccionar]
int[] values =
   Enumerable.Range(0, 5).
              Select((int value) => rand.Next(minValue: 0, maxValue: 100000)).
              ToArray();

string tableHeader =
   string.Format("{0}{1,10}{2,10}{3,10}{4,10}",
                 "1", "2", "3", "4", "5");

string tableValues =
   string.Format("{0,-10}{1,-10}{2,-10}{3,-10}{4,-10}",
                 values[0], values[1], values[2],
                 values[3], values[4]);

Console.WriteLine(tableHeader);
Console.WriteLine();
Console.WriteLine(tableValues);

Console.ReadLine();



VB.NET (código original):
Código (vbnet) [Seleccionar]
Private ReadOnly rand As New Random()
Código (vbnet) [Seleccionar]
Dim values As IEnumerable(Of Integer) =
   Enumerable.Range(0, 5).
              Select(Function(value As Integer) rand.Next(minValue:=0, maxValue:=100000))

Dim tableHeader As String =
   String.Format("{0}{1,10}{2,10}{3,10}{4,10}",
                 "1", "2", "3", "4", "5")

Dim tableValues As String =
   String.Format("{0,-10}{1,-10}{2,-10}{3,-10}{4,-10}",
                 values(0), values(1), values(2),
                 values(3), values(4))

Console.WriteLine(tableHeader)
Console.WriteLine()
Console.WriteLine(tableValues)

Console.ReadLine()



Resultado de ejecución:
1         2         3         4         5

1136      21689     8045      69        71260 



Nota Importante:
Recuerda colocar la declaración de la class Random a nivel de clase para evitar que no se repita la misma semilla (que no se repitan números), es decir, decláralo fuera de cualquier método.


Saludos!