Entrada destacada

martes, 21 de julio de 2020

Substring en programación

Si alguna vez pensaste en recortar una palabra, obtener las primeras letras o las últimas de ella, te voy a confesar que existe una manera y no es tan complicada, ni siquiera debes realizar un ciclo o algo similar, simplemente debes invocar la función en cualquier lenguaje y listo.

C# Substring

Un substring o subcadena es una minicadena dentro de la cadena de caracteres completa, es decir, un fragmento de ella, voy a poner un ejemplo muy común en el recorte de palabras, y no, no es la barbaridad que estás pensando, es algo más sencillo, ¡los meses del año!

Los meses del año en muchos sitios aparecen de la siguiente manera: DÍA / MES /AÑO, sin embargo, en muchos sitios el año y el varían, los días se representan siempre de la misma manera, días del 1 al 31.
Mientras que los meses pueden ser del 1 al 12, de Enero hasta Diciembre o de Ene hasta Dic, de esa manera se ahorran importante espacio y no dejan de comunicar lo que debe ser.

¿Es realmente sencillo, no?, sí, sí lo es, y aquí abajo te muestro el código, vamos a mostrar todos los meses del año previamente introducidos en una lista de tipo string o en un arreglo y observa la magia.

¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.

domingo, 19 de julio de 2020

Estructura de datos y probabilidad | Rompecráneos 1

He decidido abrir una sección llamada Rompecráneos, que consistirá en resolución de problemas que la gente no encuentra en internet o que quizá está tan ocultos en la red que es imposible encontrarlos, en fin, el día de hoy les traigo este problema:



Define una función que reciba en una estructura de datos, un listado de tamaño variable de pares [nombre | string, importe | float].
Y que regrese de cada par [nombre, importe] la siguiente información:
  1. ¿Es posible que el elemento x sea un total o subtotal? (Calificar con una probabilidad arbitraria de 0% a 100%)


Analicé el problema y llegué la conclusión de que no sé qué debo hacer, es decir, en el código puedo plasmar lo que me está pidiendo, una colección de datos en pares que contenga nombre e importe, ambas variables persistentes en un objeto, pero luego de ahí no sé qué debo hacer exactamente.
Solo puedo imaginar que debo decidir si ese par de datos puede ser un total o un subtotal considerando una sola variable es o no es uno de esos dos valores, en caso de que pueda ser cualquiera de los dos debo decidir qué tan probable es que sí pudiera ser.

Se me ocurrió enlistar una serie de propiedades que un valor total/subtotal pueda tener, como las siguientes:

  1. El valor del importe en la posición x es la suma de todos los otros que no están en la posición x, por lo tanto ese es un total 100% seguro.
  2. El valor en la posición x es mayor que todos los otros valores, sin embargo es menor por poco de la suma del resto de los datos, tiene un 50% de probabilidad de ser un subtotal.
  3. El valor es el menor de toda la lista, 0% de probabilidad de que sea un total o subtotal.
De esa manera fui seleccionando los casos, en realidad no tengo idea de cuál podría ser la solución pero esto es lo único que se me ocurrió, así mismo, planteé el código para que tú me ayudes a resolverlo si te es posible o si lo ves de otra manera, siempre he tenido claro que la mente es grandiosa, mientras que tú piensas en alguna cosa, alguien más está pensando otra similar, igual, o muy diferente que tú, espero que puedan resolver ustedes el problema y si es así háganmelo saber en los comentarios.

Aquí les dejo mi código en C# para que vean cómo lo propuse:


miércoles, 15 de julio de 2020

Base de datos | Error fatal | SQL | Query sin WHERE...

Si no tienes conocimiento de base de datos no te preocupes, en esta entrada solamente me voy a desahogar un poco, en realidad no ocurrió algo tan malo pero cometí un error de estudiante, un error que cometerás cuando comiences a trabajar con bases de datos y es el siguiente:

DELETE [TABLE_NAME]

Seguramente has visto alguna sentencia así, ¿qué hay de raro en ella?, la sintaxis está correcta, aunque en algunos gestores he notado que también puedes ponerle un FROM como en la sentencia SELECT, pero bueno, ese no es el punto, ¿analizaste bien ahora sí?


UPDATE [TABLE_NAME] SET COLUMN1 = ''

¿Y ahora?, claro que no es difícil, basta con leer el título y notarás que falta la palabra WHERE, este error es demasiado cliché en el mundo de la programación, específicamente en el mundo de las bases de datos. En todas las instituciones donde utilizan bases de datos (actualmente TODAS), está prohibido que algún desarrollo pueda ejecutar una sentencia así, sin embargo, en el ambiente de pruebas o el servidor donde los programadores dan vida a sus Frankensteins esa debe ser una regla que se pueden saltar.

Esto me ocurrió a mí hace unos pocos días, resulta que por error no seleccioné la consulta completa, sino una mitad, desde un gestor visual de base de datos te permite ejecutar sentencias únicamente marcándolas con el mouse y dando clic en ejecutar. Obviamente no fue grave, sin embargo sí me metí en problemas porque tuve que solicitar un respaldo, tuve que justificar por qué quería ese respaldo y también tuve que preguntar a otras personas si sus pruebas se habían visto afectadas por borrar toda la información.

En fin, espero que esto jamás te ocurra en tu trabajo y si ocurre ponte pilas y desactiva la función autocommit del gestor, creo que eso me habría ahorra mucho tiempo, estrés y amistades, pero no lo sabía. Desactivar esa opción te permitirá dar un rollback a la consulta SQL que acabas de ejecutar para que los cambios no se reflejen en tu base de datos, espero que te haya sido de ayuda esta mini entrada sin nada de código pero con mucho conocimiento. Saludos, descarga código, pon peticiones en los comentarios, dale muchos clics a la publicidad de la página o dóname por paypal, MUCHAS GRACIAS.


lizzydtspeak»: DeLeTe SiN WheRe
Imagen para que la entrada no quede solita.

martes, 14 de julio de 2020

Validar variables vacías o nulas en C# | Función definida

Hoy mientras me encontraba en el trabajo revisando al monstruo (el sistema que hace funcionar la empresa), me di cuenta de que las condiciones eran una barbaridad (como diría mi jefecita). En fin, las condiciones eran demasiadas pero en ocasiones eran repetitivas y prácticamente abarcaban el 80% del bloque de código, entonces decidí unificar todas las condiciones parecidas que iba encontrando y se me ocurrió poner en google lo siguiente:


Cuando se trata de programación las búsquedas en inglés o en ruso son lo mejor (Obviamente el ruso es menos común). Así que si quieres buscar algo de programación y pretendes encontrarlo pronto debes buscarlo en ese idioma, la cantidad de información que existe es grandísima, si en español encuentras 1GB de información quizá en inglés encuentres hasta 1000 veces esa cantidad.

En fin, las condiciones trataban de validar que una variable de tipo string no estuviera vacía y tampoco tuviera un valor nulo (null), para ello se hacía la siguiente condición:

if(varString != null && varString != "")

Y la secuencia de validaciones era un sin fin de condiciones similares, a lo que en mi búsqueda encontré una súper función de la librería string que permite hacer esa validación con un solo método enviando una única ocasión la variable a validar y de respuesta te regresa un true o un false.

String.IsNullOrEmpty(variable)

Tan bonita que es la función que les muestro, esta función permite validar si una variable de tipo string es nula, está vacía o si únicamente contiene espacios en blanco.

Espero que te haya servido esta función, quizá en algún otro lenguaje exista o quizá no, pero al menos sabemos que en C# es posible explotarla de todas las maneras que consideremos necesaria, nos vemos en la próxima entrada.

domingo, 12 de julio de 2020

Tiempos y cambios | Esta no es una entrada de programación

En mis estadísticas aparece la pequeña cantidad de gente que visita mi blog, es una suma considerable pensando en que a veces duro hasta meses sin publicar nada, esto se debe a mi falta de tiempo, y que a veces prefiero simplemente descansar a seguir programando porque en ocasiones en el trabajo un simple error me toma mucho tiempo, eso me provoca estrés y fastidio de seguir programando y siempre es necesario tomarse un respiro sobre esas situaciones, aunque he llegado a pensar que mis problemas de día a día podría "documentarlos" en entradas, es decir, si me topo con una situación que requiera investigación, tiempo e incluso aprender alguna tecnología nueva.

Para compartir todo con las personas que están atentas a alguna publicación o para quienes solo entran buscando resolver sus dudas existenciales, muchas personas me agradecen y otras solo tomar el código y se van, pero está bien, la visita me ayuda muchísimo y sé que a ellos también, por lo tanto no es indispensable que se quedan conmigo todo el tiempo, yo sé que cada persona investigará y buscará por su cuenta siempre, así como yo lo hice en mis tiempos de estudiante y que sigo haciéndolo ahora que ya tengo un trabajo en esta rama.


Imagen para que tenga miniatura la entrada :)


Les agradezco muchísimo el apoyo, la página de "Links de descarga directos" habla por sí solo cuando observo la cantidad de visitas que tiene, y si tuviera una estadística de las veces que la gente ha descargado los programas que les regalo estoy totalmente seguro que me llevaría la sorpresa de que han sido descargados más de 1000 veces (en conjunto).

Seré un poco más activo en cuanto a estas situaciones y trataré de revivir mi página de Facebook que fue borrada por cuestiones de políticas mal implementadas, ni compartía spam, ni siquiera hice alusión a ganar dinero a que se suscribieran forzosamente al canal ni nada relacionado a ello, sin embargo el monopolio de esa red social reprime a mucha gente que como yo trata de que su trabajo crezca como debe de ser, pero como genero más para mí que para ellos no soy digno de usar la plataforma como publicidad para mi blog.



lunes, 6 de julio de 2020

Listas en programación [3] | Listas simples

En la entrada anterior mencioné las listas simples, y también que de simples solo tienen el nombre, y efectivamente tienen un nivel de complejidad un poco más elevado a lo que ya conoces, es decir, "los arreglos".
Es posible manejar las listas como un simple arreglo, le agregamos datos y le quitamos. Pero en esta ocasión utilizaremos espacios de memoria que se comuniquen entre sí utilizando algo que se llama puntero, en C es un poco más complejo hacer el manejo de estos, pero en los lenguajes orientados a objetos es sencillo llevar a cabo este proceso, ya que el manejo de clases y objetos es muy eficaz.

En realidad las listas simples están enlazadas para que cumplan con su función, este enlace apunta a una dirección de memoria, por ello es que si se asigna ese valor a cualquier otra variable, este afectará de forma global.

Podemos tenerlo en cuenta como los changuitos que aparecen en la película de Toy Story, que uno se unía a otro y así, cada chango representa un valor y sus brazos representan ese enlace apuntando a la dirección de memoria.

La siguiente imagen muestra la representación correcta de una lista simple enlazada, el enlace final determinará su límite al tener un valor nulo, es decir, que no hay otra dirección de memoria más, simplemente hasta ahí llega.

Estructuras de datos: listas enlazadas, pilas y colas.

Es posible realizar 3 operaciones básicas en este tipo de listas, bueno, en realidad en todas las listas, pero con pequeñas variaciones.

Agregar: Es posible agregar un dato "siguiente" a la lista, o crear un nuevo nodo que apunte al anterior, es decir, agregar un dato al final o al inicio.

Borrar: Es posible borrar un dato ya sea el primero, el último o buscándolo por su valor, pero siempre de uno en uno, si se llegaran a repetir valores, eliminará el primero que encuentre.

Buscar: Es necesario poder hacer consultas de datos, para verificar si existe el valor, ya sea solo para mostrarlo o también como apoyo para borrar.

En el siguiente código te muestro esas operaciones utilizando ECMA Script 6, es una variación de Javascript más bonita y orientada a objetos, para más información puedes consultar en algún sitio web las diferencias de cada variación.


Prueba la magia:


Y descarga el código si quieres ver cuál es la magia detrás de esto.

¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.

Clic a la imagen para descargar el código en Javascript: