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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ... 1235
121  Foros Generales / Sugerencias y dudas sobre el Foro / Sección de Criptomonedas: Las Reglas en: 28 Febrero 2024, 14:42 pm
Buen día. Simplemente abro este hilo para sugerir que se formalice un hilo donde se establezcan las reglas para la sección de Criptomonedas: https://foro.elhacker.net/criptomonedas-b97.0/

Eso sería útil para entender cómo participar adecuadamente. ¿Qué tipo de contenido sería válido?. ¿Tutoriales, consejos de utilización para principiantes, consejos de inversión en general, noticias sobre eventos del mercado de criptomonedas?...

En definitiva, creo que sería buena idea unas normas para despejar las dudas. El resto de secciones suelen tener un hilo específico con las reglas exclusivas para dicha sección (ya sé que también se aplican las reglas generales del foro).

También me gustaría saber si existen planes para añadir más contenido a esa sección.

Aténtamente,
Elektro.
122  Programación / .NET (C#, VB.NET, ASP) / Re: Librería de Snippets para VB.NET !! (Compartan aquí sus snippets) en: 28 Febrero 2024, 13:07 pm
La siguiente función, por nombre "GetAssemblyNetTargetType", sirve para determinar si el tipo de un archivo de ensamblado es .NET Framework, .NET Standard o .NET Core.

Modo de empleo:
Código
  1. Dim assembly As Assembly = Assembly.LoadFile("C:\Assembly.dll")
  2. Dim assemblyType As NetTargetType = GetAssemblyNetTargetType(assembly)
  3. Console.WriteLine(assemblyType.ToString())

La función contiene tres validaciones diferentes, separadas por Regiones, aunque por lo general solamente se procesará el bloque de código de la primera validación.

Se ha diseñado así con la intención de funcionar correctamente en diversos escenarios, con errores esperados e inesperados de Reflection, y ya sea teniendo en cuenta si se usa esta función desde una aplicación .NET Framework, o .NET Core.

Código
  1. ''' <summary>
  2. ''' Specifies the type of a .NET assembly.
  3. ''' </summary>
  4. Public Enum NetTargetType
  5.    ''' <summary>
  6.    ''' An assembly that targets .NET Framework.
  7.    ''' </summary>
  8.    NetFramework
  9.  
  10.    ''' <summary>
  11.    ''' An assembly that targets .NET Standard.
  12.    ''' </summary>
  13.    NetStandard
  14.  
  15.    ''' <summary>
  16.    ''' An assembly that targets .NET Core.
  17.    ''' </summary>
  18.    NetCore
  19. End Enum

Código
  1. ''' ----------------------------------------------------------------------------------------------------
  2. ''' <summary>
  3. ''' Determines whether the specified assembly ia a .NET Framework, .NET Standard or .NET Core assembly.
  4. ''' </summary>
  5. ''' ----------------------------------------------------------------------------------------------------
  6. ''' <returns>
  7. ''' A <see cref="NetTargetType"/> value that indicates the type of assembly.
  8. ''' </returns>
  9. ''' ----------------------------------------------------------------------------------------------------
  10. <DebuggerStepThrough>
  11. Public Shared Function GetAssemblyNetTargetType(assembly As Assembly) As NetTargetType
  12.  
  13. #Region " Primary validation "
  14.    Dim parimaryValidationException As Exception = Nothing
  15.  
  16.    Dim attrib As TargetFrameworkAttribute
  17.    Try
  18.        attrib = assembly.GetCustomAttributes.OfType(Of TargetFrameworkAttribute).SingleOrDefault()
  19.        If attrib?.FrameworkName.StartsWith(".NETFramework", StringComparison.OrdinalIgnoreCase) Then
  20.            Return NetTargetType.NetFramework
  21.  
  22.        ElseIf attrib?.FrameworkName.StartsWith(".NETStandard", StringComparison.OrdinalIgnoreCase) Then
  23.            Return NetTargetType.NetStandard
  24.  
  25.        ElseIf attrib?.FrameworkName.StartsWith(".NETCore", StringComparison.OrdinalIgnoreCase) Then
  26.            Return NetTargetType.NetCore
  27.  
  28.        Else
  29.            Throw New NotImplementedException($"Cannot determine type of {NameOf(TargetFrameworkAttribute)}.")
  30.  
  31.        End If
  32.  
  33.    Catch ex As FileNotFoundException When ex.FileName.StartsWith("System.Runtime", StringComparison.OrdinalIgnoreCase)
  34.        ' This exception will be thrown generally when the current
  35.        ' running application is targetting .NET Framework
  36.        ' and Reflection (via method "GetCustomAttributes")
  37.        ' tries to load "System.Runtime" assembly.
  38.  
  39.        Dim assName As New AssemblyName(ex.FileName)
  40.        If assName.Version.Major >= 4 AndAlso assName.Version.Minor <> 0 Then
  41.            Return NetTargetType.NetCore
  42.        Else
  43.            ' Ignore and continue with the alternative .NET Core validation.
  44.        End If
  45.  
  46.    Catch ex As Exception
  47.        parimaryValidationException = ex
  48.        ' Ignore for now, and continue with the alternative validations.
  49.  
  50.    End Try
  51. #End Region
  52.  
  53. #Region " .NET Standard alternative validation (when Primary validation failed) "
  54.    Dim isNetStandard As Boolean =
  55.        assembly.GetReferencedAssemblies().
  56.                 Any(Function(x) x.Name.Equals("netstandard", StringComparison.OrdinalIgnoreCase))
  57.  
  58.    If isNetStandard Then
  59.        Return NetTargetType.NetStandard
  60.    End If
  61. #End Region
  62.  
  63. #Region " .NET Core alternative validation (when Primary validation failed) "
  64. Dim isNetCore As Boolean =
  65.    assembly.GetReferencedAssemblies().
  66.             Any(Function(x As AssemblyName)
  67.                     Return (x.Name.Equals("System.Runtime", StringComparison.OrdinalIgnoreCase) _
  68.                             AndAlso x.Version.Major >= 4 _
  69.                             AndAlso x.Version.Minor <> 0) _
  70.                             OrElse ({"System.Collections",
  71.                                      "System.ComponentModel.Primitives",
  72.                                      "System.Drawing.Primitives",
  73.                                      "System.Windows.Forms"
  74.                                     }.Contains(x.Name) _
  75.                             AndAlso x.Version.Major > 4)
  76.                 End Function)
  77.  
  78.    If isNetCore Then
  79.        Return NetTargetType.NetCore
  80.    End If
  81. #End Region
  82.  
  83.    If parimaryValidationException IsNot Nothing Then
  84.        Throw parimaryValidationException
  85.    End If
  86.    Throw New Exception("Cannot determine type of assembly.")
  87. End Function
123  Programación / .NET (C#, VB.NET, ASP) / Re: [SOLUCIONADO] ¿Cómo activar el modo oscuro en un navegador (ChromiumWebBrowser) de la librería CefSharp? en: 28 Febrero 2024, 08:01 am
puedes poner alguna imagen de como se ve ? para comparar, podrias mostrar como se veria la pagina de youtube , porfa?

Claro, no hay problema. He subido un video en Youtube:



También dejo por aquí enlaces al código fuente de ese programa, a modo de snippets para usar con CefSharp:

 - ChromiumWebBrowserExtensions.vb
Citar
(Function: SetDarkModeAsync)

 - RequestHandlerByUrlCondition.vb
Citar
Provides functionality to allow or restrict navigation requests based on whether the requested URL satisfies the condition of a specified predicate function.

 - RequestHandlerRestrictedToHostName.vb
Citar
Provides functionality to restrict navigation requests within a specific hostname.

 - CefSharpUtil.vb
124  Foros Generales / Foro Libre / Re: ¡Que chulada lo que me comprado! en: 27 Febrero 2024, 23:37 pm
no as dicho nada del pedazo de cuadro de Goku en nivel ultra instinto. Ese si que no creo que haya mucha gente que lo tenga

Mis respetos hacia el linaje de los Bardok, pero es que tampoco hay mucho que opinar sobre un cuadro con la cara de Gokuh. Se ve bien, y si te gusta, pues genial, no hay más. Si he obviado comentar a algunas cosas es por que no me gustan del todo o me resultan algo indiferentes (como una pegatina del Quake), vamos, que no tengo nada mejor que aportar opinando sobre ese tipo de cosas, por que es evidente que no a todos nos gusta lo mismo, ¿y qué clase de capullo sería yo si me pongo a comentar en tu hilo que algunas de las cosas no me gustan, no?.

Y el marco pues... cuestión de preferencias también. Tobo bien en general, al que le tiene que gustar es a ti, obvio, y está claro que te gusta mucho ese cuadro. A mi el aspecto de Gokuh me gusta más en 3ª o 4ª forma, o en forma "AF", todo lo demás creo que es igual y solo cambia el color del "aura".

Ya te digo que yo para estas cosas... si me viese forzado a colgar un cuadro de la franquicia Dragon Ball para verlo todos los días en el salón, habría elegido otro rostro, y no tendría por que ser un rostro facial precisamente, podría ser un plano del pompis de la cyborg C-17 haciendo alguna posturita graciosa, mismamente.

Anda que no habrán fotos obscenas, creativas y muy divertidas de todo eso para colgar y que se queden flipando, échale imaginación, rey de los Sayanos (bueno, ese sería el rey Vegetta, pero tú ya me entiendes).

Y nada, pues eso. Ya que me he visto inclinado a opinar sobre el cuadro para no dejarte sin respuesta, al menos que te haya servido para sugerirte ideas nuevas :D.

Pero a ver, que el cuadro, y lo que es la imágen de Gokuh, estar chulo, lo está, @Songoku. Al menos desde mi perspectiva y mis preferencias personales. Casi como cualquier otra buena imagen de Dragon Ball que haya sido seleccionada meticulosamente para ser comercializada así en plan para el lienzo de un cuadro. Solo es que... para tenerlo en casa y verlo a diario o exhibirlo... no va conmigo, me resultaría muy repetitivo ver la cara de Gokuh, que ya la he visto en cientos de episodios, y en películas.



He visto todas las páginas de este hilo, ya las había visto. Pero ahora no me vayas a preguntar sobre el fusil en miniatura del COD, ¿he? :P, eso si que no me gusta nada de nada. Tampoco esos video juegos. En general no me gustan las réplicas de cosas en miniatura. Ni los coches ni las figuritas, por ese motivo, su tamaño. Bueno, las que son articuladas si, por que al menos además de para mirarlas se pueden usar y colocar la postura que quieras, se puede ser algo creativo teniendo suficientes figuras articuladas, por ejemplo, colocarlas verticalmente apoyándose en las manos, en plan haciendo una torre de figuritas, pero es que les falta eso, más tamaño.

Soy de los que piensan que las cosas buenas son las que te permite admirar todos sus detalles con los ojos... sin tener que usar una lupa. Por eso, las armas de mentira cuanto más grandes e impresionantes, mejor.

Un BFG 9000 del Doom a escala 1:1, por ejemplo:


(Por que "Size matters.")

Eso por no mencionarte la espada de Cloud o la katana de Sephirot del FFVII, por que se que no te gusta el video juego, ¡pero vaya espadones quienes se hacen con una réplica a escala real!.

Un saludo.
125  Foros Generales / Foro Libre / Re: ¡Que chulada lo que me comprado! en: 27 Febrero 2024, 17:33 pm
¿El Tekken?, Howarang de siempre mi favorito. Las palizas eran mortales, me aprendía la lista de combos al dedillo y nadie se atrevía a acercarse a mi personaje con la pierna alzada :xD :xD :xD

...Al menos hasta el Tekken 5, los demás no los he jugado en grupo.

El Yoshimitsu, otro clásico del que me acuerdo bien, por que también era un mamonazo quien supiera jugarlo hábil y estratégicamente con la técnica del harakiri, que no recuerdo el nombre exacto y oficial, pero creo que era "self-suicide", y creo que era un movimiento inesquivable, ya no lo recuerdo. Aunque después del Tekken 3 ese personaje ya no se sentía tan "imbatible".



El cubo originario del continente de los canguros mola bastante. Muchísimo. Aunque yo para estas cosas, si me lo comprase para mi, siempre iría única y exclusivamente a intentar pillarme lo que tuviese más... como decirlo... bultos femeninos.

Por que para exhibir un cuerpo masculino ya tengo el mío propio (mi cuerpo escombro quiero decir :xD) y me lo veo todos los días en el espejo, por eso aparte también soy el típico que siempre se elige al personaje femenino en los video juegos si me dan la opción. Por cierto, ¿eso es algo que sigue estando mal visto con prejuicios negativos e insultos en la sociedad actual?, pues no lo sé, pero prefiero mil veces jugar con personajes femeninos que jugar viendo como se le mueve el trasero y el "pecho palomo" a un tío solo para "sentirse identificado con el personaje y su masculinidad". Así que si el "salido" o el "rarito" con los video juegos soy yo, pues vale, y a mucha honra xD.

Lo del Howarang es una excepción, como Ryu o Ken (Street Fighter) y otros tantos, si es por competitividad no distingo entre masculino y femenino.

Bueno. A lo mejor he divagado demasiado en toda esta parte, me he dejado llevar y he escrito una opinión muy larga, lo siento. Es el foro libre.

¡Estoy hablando casi todo el rato de mi!, no puede ser. @Songoku, dime que tipo de preferecias tienes tú para jugar a los Tekken, o para coleccionar ese tipo de objetos. A lo mejor no te fijas en lo masculino ni en lo femenino (a ver, no estoy diciendo que te fijes en las curvas de ese personaje del Tekken llamado Kuma que es un oso, sino que no le das importancia al género).

En mi opinión (otra vez yo, hablando de mi), habría que hacer un amplio debate solo dedicado a eso: Las preferencias de los jugadores por la elección del género de los personajes de video juegos. Hay todo un mundo por explorar ahí.



Y la pequeña batalla campal entre coleccionistas de maquetas de coches ha estado divertido. Es que contra @simorg no se puede competir en eso. Aunque uno exponga con ilusión la foto de su nuevo Lamborghini (escala real) y todos nos mordamos las uñas, si el tito simorg le pone esa estanteria encima, se abolla, se rompe en mil pedacitos y, si es eléctrico, explota.

Está bien exhibir las cosas de cada uno, para eso están. Y cada uno tiene lo que tiene, o lo que quiere tener. Yo no puedo competir con inguno de los dos, soy pobre. xD Tengo una colección de mangas y libros, y ya está, algo muy básico y e incompleto, pero especial, como vuestras colecciones.

(Última vez que vuelvo a hablar de mi mismo.)



En fin, @Songoku, me parece buen merchandising en general, y da para que hablar. El cubo, en serio, está muy chulo y acertado (un personaje masculino y otro con tetas, así no hay quejas).

Ya irás coleccionando y mostrando más cosas, supongo.

Un saludo!
126  Programación / .NET (C#, VB.NET, ASP) / Re: Librería de Snippets para VB.NET !! (Compartan aquí sus snippets) en: 27 Febrero 2024, 13:38 pm
Los dos siguientes métodos sirven para truncar nombres de archivos que superen los 255 caracteres (incluyendo la longitud de la extensión del archivo), acortando la longitud cuanto sea necesario para no sobrepasar dicho límite, y añadiendo puntos suspensivos (…) al final del nombre del archivo.

Eso es lo que hace con los nombres de archivo (file name), no con las rutas (file path).

En caso de enviar como parámetro a cualquiera de estos dos métodos una ruta de archivo (file path), aparte de realizar los ajustes mencionados con el nombre del archivo y, en caso de que la ruta exceda el límite máximo permitido de 260 caracteres (definido en MAX_PATH), se añadirá el prefijo "\\?\" a la ruta para garantizar la compatibilidad de uso con sistemas NTFS que tengan habilitado el soporte para rutas de longitud extendida (es decir, mayores de 260 caracteres).

De esta forma, y además de prevenir el uso de nombres de archivo (file names) inválidos / demasiado largos, además se garantiza que la aplicación que utilice estos métodos para la manipulación o creación de archivos sea "LONG PATH AWARE".

Nota: Los métodos han pasado pruebas usando rutas locales (relativas y absolutas). No han sido probados con rutas UNC ni adaptados para ello.

Leer con detenimiento el bloque de documentación XML para más información.

Código
  1. ''' ----------------------------------------------------------------------------------------------------
  2. ''' <summary>
  3. ''' If needed, truncates the length of the specified file name or full file path  
  4. ''' to comply with Windows OS maximum file name length of 255 characters
  5. ''' (including the file extension length).
  6. ''' <para></para>
  7. ''' If the file name exceeds this limit, it truncates it and
  8. ''' adds a ellipsis (…) at the end of the file name.
  9. ''' <para></para>
  10. ''' If the path exceeds the MAX_PATH limit (260 characters),
  11. ''' it adds the "\\?\" prefix to support extended-length paths.
  12. ''' <para></para>
  13. ''' See also: <see href="https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation"/>
  14. ''' </summary>
  15. ''' ----------------------------------------------------------------------------------------------------
  16. ''' <remarks>
  17. ''' This method is particularly useful when dealing with file names or file paths that might exceed
  18. ''' the maximum allowed length, preventing potential errors related to file name length limitations
  19. ''' when creating files in the drive.
  20. ''' </remarks>
  21. ''' ----------------------------------------------------------------------------------------------------
  22. ''' <param name="filePath">
  23. ''' The file name or full file path.
  24. ''' </param>
  25. '''
  26. ''' <param name="maxFileNameLength">
  27. ''' Optional. The maximum character length that the file name can have.
  28. ''' Default (and maximum) value is 255.
  29. ''' </param>
  30. ''' ----------------------------------------------------------------------------------------------------
  31. ''' <returns>
  32. ''' The truncated file name or full file path.
  33. ''' </returns>
  34. ''' ----------------------------------------------------------------------------------------------------
  35. <DebuggerStepThrough>
  36. Public Shared Function TruncateLongFilePath(filePath As String, Optional maxFileNameLength As Byte = 255) As String
  37.  
  38.    If String.IsNullOrEmpty(filePath) Then
  39.        Throw New ArgumentNullException(paramName:=NameOf(filePath))
  40.    End If
  41.  
  42.    If filePath.StartsWith("\\?\", StringComparison.Ordinal) Then
  43.        filePath = filePath.Substring(4)
  44.    End If
  45.  
  46.    Dim fileInfo As New FileInfo(If(filePath.Length <= 255, filePath, $"\\?\{filePath}"))
  47.    TruncateLongFilePath(fileInfo, maxFileNameLength)
  48.    Return fileInfo.FullName
  49.  
  50. End Function
  51.  
  52. ''' ----------------------------------------------------------------------------------------------------
  53. ''' <summary>
  54. ''' If needed, truncates the length of the file name in
  55. ''' the source <see cref="FileInfo"/> object to comply with
  56. ''' Windows OS maximum file name length of 255 characters
  57. ''' (including the file extension length).
  58. ''' <para></para>
  59. ''' If the file name exceeds this limit, it truncates it and
  60. ''' adds a ellipsis (…) at the end of the file name.
  61. ''' <para></para>
  62. ''' If the path exceeds the MAX_PATH limit (260 characters),
  63. ''' it adds the "\\?\" prefix to support extended-length paths.
  64. ''' <para></para>
  65. ''' See also: <see href="https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation"/>
  66. ''' </summary>
  67. ''' ----------------------------------------------------------------------------------------------------
  68. ''' <remarks>
  69. ''' This method is particularly useful when dealing with file paths that might exceed
  70. ''' the maximum allowed length, preventing potential errors related to file name length limitations
  71. ''' when creating files in the drive.
  72. ''' </remarks>
  73. ''' ----------------------------------------------------------------------------------------------------
  74. ''' <param name="refFileInfo">
  75. ''' The source <see cref="FileInfo"/> object representing a full file path.
  76. ''' <para></para>
  77. ''' When this method returns, this object contains the file path with the file name truncated.
  78. ''' </param>
  79. '''
  80. ''' <param name="maxFileNameLength">
  81. ''' Optional. The maximum character length that the file name can have.
  82. ''' Default (and maximum) value is 255.
  83. ''' </param>
  84. ''' ----------------------------------------------------------------------------------------------------
  85. <DebuggerStepThrough>
  86. Public Shared Sub TruncateLongFilePath(ByRef refFileInfo As FileInfo, Optional maxFileNameLength As Byte = 255)
  87.  
  88.    If refFileInfo Is Nothing Then
  89.        Throw New ArgumentNullException(paramName:=NameOf(refFileInfo))
  90.    End If
  91.  
  92.    If maxFileNameLength = 0 Then
  93.        Throw New ArgumentException("Value must be greater than zero.", paramName:=NameOf(maxFileNameLength))
  94.    End If
  95.  
  96.    If refFileInfo.Name.Length >= maxFileNameLength Then
  97.        Dim fileExt As String = refFileInfo.Extension
  98.        Dim fileName As String = refFileInfo.Name.Substring(0, maxFileNameLength - 1 - fileExt.Length) & $"…{fileExt}"
  99.  
  100.        Dim directoryName As String = Path.GetDirectoryName(refFileInfo.FullName)
  101.        If directoryName.Equals("\\?", StringComparison.Ordinal) Then
  102.            refFileInfo = New FileInfo($"\\?\{fileName}")
  103.  
  104.        ElseIf directoryName.StartsWith("\\?\", StringComparison.Ordinal) Then
  105.            refFileInfo = New FileInfo(Path.Combine(refFileInfo.DirectoryName, fileName))
  106.  
  107.        Else
  108.            Dim fullpath As String = Path.Combine(refFileInfo.DirectoryName, fileName)
  109.            refFileInfo = If(fullpath.Length >= 260, ' MAX_PATH
  110.                          New FileInfo($"\\?\{fullpath}"),
  111.                          New FileInfo(fullpath))
  112.        End If
  113.    End If
  114.  
  115. End Sub
127  Programación / .NET (C#, VB.NET, ASP) / Re: Librería de Snippets para VB.NET !! (Compartan aquí sus snippets) en: 27 Febrero 2024, 13:19 pm
Convertir un objeto Datatable a una tabla en formato Markdown:

Código
  1. ''' ----------------------------------------------------------------------------------------------------
  2. ''' <summary>
  3. ''' Converts the elements of a <see cref="DataTable"/> into a Markdown table.
  4. ''' </summary>
  5. ''' ----------------------------------------------------------------------------------------------------
  6. ''' <example> This is a code example that shows how to convert a DataTable object to Markdown table.
  7. ''' <code language="VB.NET">
  8. ''' Dim dt As New DataTable()
  9. ''' dt.Columns.Add("ID", GetType(Integer))
  10. ''' dt.Columns.Add("Name", GetType(String))
  11. ''' dt.Rows.Add(1, "John")
  12. ''' dt.Rows.Add(2, "Doe")
  13. '''
  14. ''' Dim markdownTable As String = EnumerableToMarkdownTable(dt)
  15. ''' Console.WriteLine(markdownTable.ToString())
  16. ''' </code>
  17. ''' </example>
  18. ''' ----------------------------------------------------------------------------------------------------
  19. ''' <param name="table">
  20. ''' The source <see cref="DataTable"/>.
  21. ''' </param>
  22. ''' ----------------------------------------------------------------------------------------------------
  23. ''' <returns>
  24. ''' A string representing the Markdown table.
  25. ''' </returns>
  26. ''' ----------------------------------------------------------------------------------------------------
  27. Public Shared Function DataTableToMarkdownTable(table As DataTable) As String
  28.  
  29.    If table Is Nothing Then
  30.        Throw New ArgumentNullException(paramName:=NameOf(table))
  31.    End If
  32.  
  33.    If table.Rows.Count = 0 Then
  34.        Throw New ArgumentNullException("The source table does not contain any row.", paramName:=NameOf(table))
  35.    End If
  36.  
  37.    Dim columnNames As IEnumerable(Of String) = table.Columns.Cast(Of DataColumn)().Select(Function(column) column.ColumnName)
  38.    Dim maxColumnValues As Integer() = columnNames.Select(Function(name) table.AsEnumerable().Max(Function(row) If(row.IsNull(name), 0, row(name).ToString().Length))).ToArray()
  39.  
  40.    Dim headerLine As String = "| " & String.Join(" | ", columnNames) & " |"
  41.    Dim headerDataDividerLine As String = "| " & String.Join(" | ", maxColumnValues.Select(Function(length) New String("-"c, length))) & " |"
  42.  
  43.    Dim lines As IEnumerable(Of String) = {headerLine, headerDataDividerLine}.Concat(
  44.        table.AsEnumerable().Select(
  45.            Function(row) "| " & String.Join(" | ", columnNames.Select(Function(name, i) If(row.IsNull(name), "".PadRight(maxColumnValues(i)), row(name).ToString().PadRight(maxColumnValues(i))))) & " |"
  46.        )
  47.    )
  48.  
  49.    Return String.Join(Environment.NewLine, lines)
  50.  
  51. End Function



Convertir un objeto IEnumerable a una tabla en formato Markdown:

Código
  1. ''' ----------------------------------------------------------------------------------------------------
  2. ''' <summary>
  3. ''' Converts the elements of an <see cref="IEnumerable(Of T)"/> into a Markdown table.
  4. ''' </summary>
  5. ''' ----------------------------------------------------------------------------------------------------
  6. ''' <remarks>
  7. ''' Original C# concept: <see href="https://github.com/jpierson/to-markdown-table/blob/develop/src/ToMarkdownTable/LinqMarkdownTableExtensions.cs"/>
  8. ''' </remarks>
  9. ''' ----------------------------------------------------------------------------------------------------
  10. ''' <example> This is a code example that shows how to convert a List(Of String) object to Markdown table.
  11. ''' <code language="VB.NET">
  12. ''' Dim list As New List(Of String)
  13. ''' list.Add("John")
  14. ''' list.Add("Doe")
  15. '''
  16. ''' Dim markdownTable As String = EnumerableToMarkdownTable(list)
  17. ''' Console.WriteLine(markdownTable.ToString())
  18. ''' </code>
  19. ''' </example>
  20. ''' ----------------------------------------------------------------------------------------------------
  21. ''' <example> This is a code example that shows how to convert a List of a custom type to Markdown table.
  22. ''' <code language="VB.NET">
  23. ''' Public Class TestClass
  24. '''     Public Property ID As Integer
  25. '''     Public Property Name As String
  26. '''     Public Property Age As Integer
  27. ''' End Class
  28. '''
  29. ''' Dim list As New List(Of TestClass) From {
  30. '''     New TestClass() With {.ID = 1, .Name = "John", .Age = 30},
  31. '''     New TestClass() With {.ID = 2, .Name = "Doe" , .Age = 40}
  32. ''' }
  33. '''
  34. ''' Dim markdownTable As String = EnumerableToMarkdownTable(list)
  35. ''' Console.WriteLine(markdownTable.ToString())
  36. ''' </code>
  37. ''' </example>
  38. ''' ----------------------------------------------------------------------------------------------------
  39. ''' <typeparam name="T">
  40. ''' The type of elements in the collection.
  41. ''' </typeparam>
  42. '''
  43. ''' <param name="source">
  44. ''' The generic collection to convert into a Markdown table.
  45. ''' </param>
  46. ''' ----------------------------------------------------------------------------------------------------
  47. ''' <returns>
  48. ''' A string representing the Markdown table.
  49. ''' </returns>
  50. ''' ----------------------------------------------------------------------------------------------------
  51. Public Shared Function EnumerableToMarkdownTable(Of T)(source As IEnumerable(Of T)) As String
  52.    If source Is Nothing OrElse Not source.Any() Then
  53.        Throw New ArgumentNullException(paramName:=NameOf(source))
  54.    End If
  55.  
  56.    If GetType(T).IsPrimitive OrElse GetType(T) = GetType(String) Then
  57.        Return $"| Items |{Environment.NewLine}| ----- |{Environment.NewLine}{String.Join(Environment.NewLine, source.Select(Function(s) $"| {s} |"))}"
  58.    End If
  59.  
  60.    Dim properties As PropertyInfo() = GetType(T).GetProperties(BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.GetProperty)
  61.    Dim fields As IEnumerable(Of FieldInfo) = GetType(T).GetRuntimeFields().Where(Function(f) f.IsPublic)
  62.  
  63.    Dim gettables As IEnumerable(Of MarkdownColumnData) =
  64.        Enumerable.Union(properties.Select(Function(p As PropertyInfo)
  65.                                               Return New MarkdownColumnData With {
  66.                                                   .Name = p.Name,
  67.                                                   .GetValue = Function(obj) p.GetValue(obj),
  68.                                                   .Type = p.PropertyType
  69.                                               }
  70.                                           End Function),
  71.                         fields.Select(Function(f As FieldInfo)
  72.                                           Return New MarkdownColumnData With {
  73.                                               .Name = f.Name,
  74.                                               .GetValue = Function(obj) f.GetValue(obj),
  75.                                               .Type = f.FieldType
  76.                                           }
  77.                                       End Function))
  78.  
  79.    Dim maxColumnValues As Integer() = source.
  80.            Select(Function(x) gettables.Select(Function(p) If(p.GetValue(x)?.ToString()?.Length, 0))).
  81.            Union({gettables.Select(Function(p) p.Name.Length)}).
  82.            Aggregate(
  83.                Enumerable.Repeat(0, gettables.Count()).AsEnumerable(),
  84.                Function(accumulate, x) accumulate.Zip(x, Function(a, b) System.Math.Max(a, b))).
  85.            ToArray()
  86.  
  87.    Dim columnNames As IEnumerable(Of String) =
  88.        gettables.Select(Function(p) p.Name)
  89.  
  90.    Dim headerLine As String =
  91.        "| " & String.Join(" | ", columnNames.Select(Function(n, i) n.PadRight(maxColumnValues(i)))) & " |"
  92.  
  93.    Dim isNumeric As Func(Of Type, Boolean) =
  94.        Function(type As Type)
  95.            Return type = GetType(Byte) OrElse type = GetType(SByte) OrElse type = GetType(UShort) OrElse type = GetType(UInteger) OrElse type = GetType(ULong) OrElse type = GetType(Short) OrElse type = GetType(Integer) OrElse type = GetType(Long) OrElse type = GetType(Decimal) OrElse type = GetType(Double) OrElse type = GetType(Single)
  96.        End Function
  97.  
  98.    Dim rightAlign As Func(Of Type, String) =
  99.        Function(type As Type)
  100.            Return If(isNumeric(type), ":", " "c)
  101.        End Function
  102.  
  103.    Dim headerDataDividerLine As String =
  104.            "| " &
  105.            String.Join("| ", gettables.Select(Function(g, i) New String("-"c, maxColumnValues(i)) & rightAlign(g.Type))) &
  106.            "|"
  107.  
  108.    Dim lines As IEnumerable(Of String) =
  109.        {
  110.            headerLine,
  111.            headerDataDividerLine
  112.        }.Union(source.
  113.            Select(Function(s)
  114.                       Return "| " & String.Join(" | ", gettables.Select(Function(n, i) If(n.GetValue(s)?.ToString(), "").PadRight(maxColumnValues(i)))) & " |"
  115.                   End Function))
  116.  
  117.    Return lines.Aggregate(Function(p, c) p & Environment.NewLine & c)
  118. End Function
128  Programación / .NET (C#, VB.NET, ASP) / Re: Librería de Snippets para VB.NET !! (Compartan aquí sus snippets) en: 27 Febrero 2024, 13:15 pm
Cifrar código fuente de Visual Basic Script (VBS):

 - https://foro.elhacker.net/programacion_visual_basic/cogravemo_puedo_cifrar_archivos_vbs-t409714.0.html;msg2277482#msg2277482
129  Foros Generales / Dudas Generales / Re: TFG Antropología en: 27 Febrero 2024, 06:20 am
Quiero presentarme. Soy Emilio, estudiante del Grado de Antropología en la UNED. Estoy haciendo el Trabajo de Fin de Grado sobre la Inteligencia Artificial en los foros de internet y me han pedido que entreviste a usuarios (será totalmente anónimo), para hacer una etnografía. Por favor, ¿alguien puede ayudarme? Sólo se trata de hacerles una serie de preguntas sobre sus motivaciones, sus resultados, problemas éticos y grado de satisfacción con la IA.

Si por entrevista entendemos ofrecer una lista con una serie de preguntas por mensaje privado, y que el entrevistado puede tomarse su tiempo de reflexión para responderlas por el mismo método utilizado del mensaje por privado, entonces me ofrezco voluntario. De hecho, y si ese fuese el tipo de entrevista, creo que sería buena idea publicar aquí las preguntas y solicitar que los usuarios interesados te envién un mensaje privado con sus respuestas.

Si por lo contrario hablamos de una entrevista con respuestas más inmediatas mediante un servicio de mensajeria, o mediante conversación telefónica, entonces no.

En cualquier caso, considero que tengo opiniones muy valiosas para contribuir al debate y el estudio sobre cuestiones relacionadas con la IA, en concreto sobre los modelos de lenguaje generativo como GPT y comenzando por sus (únicas y compartidas) inclinaciones políticas subyacentes derivadas de las decisiones empresariales por parte de sus desarrolladores, que solo sirven para la imposición de límites arbitrarios y absurdos, con una única visión e ideología (woke) del mundo que nos rodea, y con lo cual impide otorgarle una verdadera "libertad" de expresión a la IA, o al menos impide la capacidad de poder ofrecer respuestas que no estén limitadas por reglas ideológicas predefinidas e impuestas por sus propios creadores.

PD: No soy experto en el estudio ni el desarrollo de la IA, sino un consumidor de servicios basados en IA, como por ejemplo ChatGPT y Midjourney.

Aténtamente,
Elektro.
130  Programación / .NET (C#, VB.NET, ASP) / Re: Como puedo crear mi propio speech synthesizer?? en: 18 Noviembre 2021, 15:13 pm
Basicamente quieres crear un modelo de voz.

Esto no lo he leido en profundidad, pero parece que explica todos los pasos a seguir:

https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/how-to-custom-voice-prepare-data
https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/how-to-custom-voice-create-voice

Y al parecer necesitarías una cuenta de Microsoft Azure para poder utilizar la plataforma Speech Studio con el que crear el modelo de voz:
https://speech.microsoft.com/portal?projecttype=customvoice

https://docs.microsoft.com/en-us/dynamics-nav/how-to--sign-up-for-a-microsoft-azure-subscription

Saludos!
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ... 1235
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines