|
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: Dim assembly As Assembly = Assembly.LoadFile("C:\Assembly.dll") Dim assemblyType As NetTargetType = GetAssemblyNetTargetType(assembly) 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. ''' <summary> ''' Specifies the type of a .NET assembly. ''' </summary> Public Enum NetTargetType ''' <summary> ''' An assembly that targets .NET Framework. ''' </summary> NetFramework ''' <summary> ''' An assembly that targets .NET Standard. ''' </summary> NetStandard ''' <summary> ''' An assembly that targets .NET Core. ''' </summary> NetCore End Enum
''' ---------------------------------------------------------------------------------------------------- ''' <summary> ''' Determines whether the specified assembly ia a .NET Framework, .NET Standard or .NET Core assembly. ''' </summary> ''' ---------------------------------------------------------------------------------------------------- ''' <returns> ''' A <see cref="NetTargetType"/> value that indicates the type of assembly. ''' </returns> ''' ---------------------------------------------------------------------------------------------------- <DebuggerStepThrough> Public Shared Function GetAssemblyNetTargetType(assembly As Assembly) As NetTargetType #Region " Primary validation " Dim parimaryValidationException As Exception = Nothing Dim attrib As TargetFrameworkAttribute Try attrib = assembly.GetCustomAttributes.OfType(Of TargetFrameworkAttribute).SingleOrDefault() If attrib?.FrameworkName.StartsWith(".NETFramework", StringComparison.OrdinalIgnoreCase) Then Return NetTargetType.NetFramework ElseIf attrib?.FrameworkName.StartsWith(".NETStandard", StringComparison.OrdinalIgnoreCase) Then Return NetTargetType.NetStandard ElseIf attrib?.FrameworkName.StartsWith(".NETCore", StringComparison.OrdinalIgnoreCase) Then Return NetTargetType.NetCore Else Throw New NotImplementedException($"Cannot determine type of {NameOf(TargetFrameworkAttribute)}.") End If Catch ex As FileNotFoundException When ex.FileName.StartsWith("System.Runtime", StringComparison.OrdinalIgnoreCase) ' This exception will be thrown generally when the current ' running application is targetting .NET Framework ' and Reflection (via method "GetCustomAttributes") ' tries to load "System.Runtime" assembly. Dim assName As New AssemblyName(ex.FileName) If assName.Version.Major >= 4 AndAlso assName.Version.Minor <> 0 Then Return NetTargetType.NetCore Else ' Ignore and continue with the alternative .NET Core validation. End If Catch ex As Exception parimaryValidationException = ex ' Ignore for now, and continue with the alternative validations. End Try #End Region #Region " .NET Standard alternative validation (when Primary validation failed) " Dim isNetStandard As Boolean = assembly.GetReferencedAssemblies(). Any(Function(x) x.Name.Equals("netstandard", StringComparison.OrdinalIgnoreCase)) If isNetStandard Then Return NetTargetType.NetStandard End If #End Region #Region " .NET Core alternative validation (when Primary validation failed) " Dim isNetCore As Boolean = assembly.GetReferencedAssemblies(). Any(Function(x As AssemblyName) Return (x.Name.Equals("System.Runtime", StringComparison.OrdinalIgnoreCase) _ AndAlso x.Version.Major >= 4 _ AndAlso x.Version.Minor <> 0) _ OrElse ({"System.Collections", "System.ComponentModel.Primitives", "System.Drawing.Primitives", "System.Windows.Forms" }.Contains(x.Name) _ AndAlso x.Version.Major > 4) End Function) If isNetCore Then Return NetTargetType.NetCore End If #End Region If parimaryValidationException IsNot Nothing Then Throw parimaryValidationException End If Throw New Exception("Cannot determine type of assembly.") End Function
|
|
|
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 . 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? , 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 ...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 ) 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. ''' ---------------------------------------------------------------------------------------------------- ''' <summary> ''' If needed, truncates the length of the specified file name or full file path ''' to comply with Windows OS maximum file name length of 255 characters ''' (including the file extension length). ''' <para></para> ''' If the file name exceeds this limit, it truncates it and ''' adds a ellipsis (…) at the end of the file name. ''' <para></para> ''' If the path exceeds the MAX_PATH limit (260 characters), ''' it adds the "\\?\" prefix to support extended-length paths. ''' <para></para> ''' See also: <see href="https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation"/> ''' </summary> ''' ---------------------------------------------------------------------------------------------------- ''' <remarks> ''' This method is particularly useful when dealing with file names or file paths that might exceed ''' the maximum allowed length, preventing potential errors related to file name length limitations ''' when creating files in the drive. ''' </remarks> ''' ---------------------------------------------------------------------------------------------------- ''' <param name="filePath"> ''' The file name or full file path. ''' </param> ''' ''' <param name="maxFileNameLength"> ''' Optional. The maximum character length that the file name can have. ''' Default (and maximum) value is 255. ''' </param> ''' ---------------------------------------------------------------------------------------------------- ''' <returns> ''' The truncated file name or full file path. ''' </returns> ''' ---------------------------------------------------------------------------------------------------- <DebuggerStepThrough> Public Shared Function TruncateLongFilePath(filePath As String, Optional maxFileNameLength As Byte = 255) As String If String.IsNullOrEmpty(filePath) Then Throw New ArgumentNullException(paramName:=NameOf(filePath)) End If If filePath.StartsWith("\\?\", StringComparison.Ordinal) Then filePath = filePath.Substring(4) End If Dim fileInfo As New FileInfo(If(filePath.Length <= 255, filePath, $"\\?\{filePath}")) TruncateLongFilePath(fileInfo, maxFileNameLength) Return fileInfo.FullName End Function ''' ---------------------------------------------------------------------------------------------------- ''' <summary> ''' If needed, truncates the length of the file name in ''' the source <see cref="FileInfo"/> object to comply with ''' Windows OS maximum file name length of 255 characters ''' (including the file extension length). ''' <para></para> ''' If the file name exceeds this limit, it truncates it and ''' adds a ellipsis (…) at the end of the file name. ''' <para></para> ''' If the path exceeds the MAX_PATH limit (260 characters), ''' it adds the "\\?\" prefix to support extended-length paths. ''' <para></para> ''' See also: <see href="https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation"/> ''' </summary> ''' ---------------------------------------------------------------------------------------------------- ''' <remarks> ''' This method is particularly useful when dealing with file paths that might exceed ''' the maximum allowed length, preventing potential errors related to file name length limitations ''' when creating files in the drive. ''' </remarks> ''' ---------------------------------------------------------------------------------------------------- ''' <param name="refFileInfo"> ''' The source <see cref="FileInfo"/> object representing a full file path. ''' <para></para> ''' When this method returns, this object contains the file path with the file name truncated. ''' </param> ''' ''' <param name="maxFileNameLength"> ''' Optional. The maximum character length that the file name can have. ''' Default (and maximum) value is 255. ''' </param> ''' ---------------------------------------------------------------------------------------------------- <DebuggerStepThrough> Public Shared Sub TruncateLongFilePath(ByRef refFileInfo As FileInfo, Optional maxFileNameLength As Byte = 255) If refFileInfo Is Nothing Then Throw New ArgumentNullException(paramName:=NameOf(refFileInfo)) End If If maxFileNameLength = 0 Then Throw New ArgumentException("Value must be greater than zero.", paramName:=NameOf(maxFileNameLength)) End If If refFileInfo.Name.Length >= maxFileNameLength Then Dim fileExt As String = refFileInfo.Extension Dim fileName As String = refFileInfo.Name.Substring(0, maxFileNameLength - 1 - fileExt.Length) & $"…{fileExt}" Dim directoryName As String = Path.GetDirectoryName(refFileInfo.FullName) If directoryName.Equals("\\?", StringComparison.Ordinal) Then refFileInfo = New FileInfo($"\\?\{fileName}") ElseIf directoryName.StartsWith("\\?\", StringComparison.Ordinal) Then refFileInfo = New FileInfo(Path.Combine(refFileInfo.DirectoryName, fileName)) Else Dim fullpath As String = Path.Combine(refFileInfo.DirectoryName, fileName) refFileInfo = If(fullpath.Length >= 260, ' MAX_PATH New FileInfo($"\\?\{fullpath}"), New FileInfo(fullpath)) End If End If 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: ''' ---------------------------------------------------------------------------------------------------- ''' <summary> ''' Converts the elements of a <see cref="DataTable"/> into a Markdown table. ''' </summary> ''' ---------------------------------------------------------------------------------------------------- ''' <example> This is a code example that shows how to convert a DataTable object to Markdown table. ''' <code language="VB.NET"> ''' Dim dt As New DataTable() ''' dt.Columns.Add("ID", GetType(Integer)) ''' dt.Columns.Add("Name", GetType(String)) ''' dt.Rows.Add(1, "John") ''' dt.Rows.Add(2, "Doe") ''' ''' Dim markdownTable As String = EnumerableToMarkdownTable(dt) ''' Console.WriteLine(markdownTable.ToString()) ''' </code> ''' </example> ''' ---------------------------------------------------------------------------------------------------- ''' <param name="table"> ''' The source <see cref="DataTable"/>. ''' </param> ''' ---------------------------------------------------------------------------------------------------- ''' <returns> ''' A string representing the Markdown table. ''' </returns> ''' ---------------------------------------------------------------------------------------------------- Public Shared Function DataTableToMarkdownTable(table As DataTable) As String If table Is Nothing Then Throw New ArgumentNullException(paramName:=NameOf(table)) End If If table.Rows.Count = 0 Then Throw New ArgumentNullException("The source table does not contain any row.", paramName:=NameOf(table)) End If Dim columnNames As IEnumerable(Of String) = table.Columns.Cast(Of DataColumn)().Select(Function(column) column.ColumnName) Dim maxColumnValues As Integer() = columnNames.Select(Function(name) table.AsEnumerable().Max(Function(row) If(row.IsNull(name), 0, row(name).ToString().Length))).ToArray() Dim headerLine As String = "| " & String.Join(" | ", columnNames) & " |" Dim headerDataDividerLine As String = "| " & String.Join(" | ", maxColumnValues.Select(Function(length) New String("-"c, length))) & " |" Dim lines As IEnumerable(Of String) = {headerLine, headerDataDividerLine}.Concat( table.AsEnumerable().Select( Function(row) "| " & String.Join(" | ", columnNames.Select(Function(name, i) If(row.IsNull(name), "".PadRight(maxColumnValues(i)), row(name).ToString().PadRight(maxColumnValues(i))))) & " |" ) ) Return String.Join(Environment.NewLine, lines) End Function
Convertir un objeto IEnumerable a una tabla en formato Markdown: ''' ---------------------------------------------------------------------------------------------------- ''' <summary> ''' Converts the elements of an <see cref="IEnumerable(Of T)"/> into a Markdown table. ''' </summary> ''' ---------------------------------------------------------------------------------------------------- ''' <remarks> ''' Original C# concept: <see href="https://github.com/jpierson/to-markdown-table/blob/develop/src/ToMarkdownTable/LinqMarkdownTableExtensions.cs"/> ''' </remarks> ''' ---------------------------------------------------------------------------------------------------- ''' <example> This is a code example that shows how to convert a List(Of String) object to Markdown table. ''' <code language="VB.NET"> ''' Dim list As New List(Of String) ''' list.Add("John") ''' list.Add("Doe") ''' ''' Dim markdownTable As String = EnumerableToMarkdownTable(list) ''' Console.WriteLine(markdownTable.ToString()) ''' </code> ''' </example> ''' ---------------------------------------------------------------------------------------------------- ''' <example> This is a code example that shows how to convert a List of a custom type to Markdown table. ''' <code language="VB.NET"> ''' Public Class TestClass ''' Public Property ID As Integer ''' Public Property Name As String ''' Public Property Age As Integer ''' End Class ''' ''' Dim list As New List(Of TestClass) From { ''' New TestClass() With {.ID = 1, .Name = "John", .Age = 30}, ''' New TestClass() With {.ID = 2, .Name = "Doe" , .Age = 40} ''' } ''' ''' Dim markdownTable As String = EnumerableToMarkdownTable(list) ''' Console.WriteLine(markdownTable.ToString()) ''' </code> ''' </example> ''' ---------------------------------------------------------------------------------------------------- ''' <typeparam name="T"> ''' The type of elements in the collection. ''' </typeparam> ''' ''' <param name="source"> ''' The generic collection to convert into a Markdown table. ''' </param> ''' ---------------------------------------------------------------------------------------------------- ''' <returns> ''' A string representing the Markdown table. ''' </returns> ''' ---------------------------------------------------------------------------------------------------- Public Shared Function EnumerableToMarkdownTable(Of T)(source As IEnumerable(Of T)) As String If source Is Nothing OrElse Not source.Any() Then Throw New ArgumentNullException(paramName:=NameOf(source)) End If If GetType(T).IsPrimitive OrElse GetType(T) = GetType(String) Then Return $"| Items |{Environment.NewLine}| ----- |{Environment.NewLine}{String.Join(Environment.NewLine, source.Select(Function(s) $"| {s} |"))}" End If Dim properties As PropertyInfo() = GetType(T).GetProperties(BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.GetProperty) Dim fields As IEnumerable(Of FieldInfo) = GetType(T).GetRuntimeFields().Where(Function(f) f.IsPublic) Dim gettables As IEnumerable(Of MarkdownColumnData) = Enumerable.Union(properties.Select(Function(p As PropertyInfo) Return New MarkdownColumnData With { .Name = p.Name, .GetValue = Function(obj) p.GetValue(obj), .Type = p.PropertyType } End Function), fields.Select(Function(f As FieldInfo) Return New MarkdownColumnData With { .Name = f.Name, .GetValue = Function(obj) f.GetValue(obj), .Type = f.FieldType } End Function)) Dim maxColumnValues As Integer() = source. Select(Function(x) gettables.Select(Function(p) If(p.GetValue(x)?.ToString()?.Length, 0))). Union({gettables.Select(Function(p) p.Name.Length)}). Aggregate( Enumerable.Repeat(0, gettables.Count()).AsEnumerable(), Function(accumulate, x) accumulate.Zip(x, Function(a, b) System.Math.Max(a, b))). ToArray() Dim columnNames As IEnumerable(Of String) = gettables.Select(Function(p) p.Name) Dim headerLine As String = "| " & String.Join(" | ", columnNames.Select(Function(n, i) n.PadRight(maxColumnValues(i)))) & " |" Dim isNumeric As Func(Of Type, Boolean) = Function(type As Type) 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) End Function Dim rightAlign As Func(Of Type, String) = Function(type As Type) Return If(isNumeric(type), ":", " "c) End Function Dim headerDataDividerLine As String = "| " & String.Join("| ", gettables.Select(Function(g, i) New String("-"c, maxColumnValues(i)) & rightAlign(g.Type))) & "|" Dim lines As IEnumerable(Of String) = { headerLine, headerDataDividerLine }.Union(source. Select(Function(s) Return "| " & String.Join(" | ", gettables.Select(Function(n, i) If(n.GetValue(s)?.ToString(), "").PadRight(maxColumnValues(i)))) & " |" End Function)) Return lines.Aggregate(Function(p, c) p & Environment.NewLine & c) End Function
|
|
|
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.
|
|
|
|
|
|
|