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

#491
No es necesario usar la clase FileInfo a menos que quieras representar la información de un archivo en la interfaz gráfica, o acceder a dicha información para otros usos, en cuyo caso también sería conveniente usar la clase DirectoryInfo en vez de mezclar declaraciones de tipo string con instancias de la clase FileInfo...

Código (csharp) [Seleccionar]

// Source file.
FileInfo srcFile = new FileInfo(@"C:\Archivo.ext");

// Destination directory.
DirectoryInfo dstDir = new DirectoryInfo(@"C:\Directorio\");

// Destination file.
FileInfo dstFile = new FileInfo(Path.Combine(dstDir.FullName, srcFile.Name));

try {
dstDir.Create();
srcFile.CopyTo(dstFile.FullName);

} catch (Exception ex) {
throw;

}


Si por lo contrario tu única intención es usar el método FileInfo.CopyTo(), crear una instancia de la clase FileInfo como ya dije es completamente inadecuado e innecesario. En su lugar puedes usar el método System.IO.File.Copy()...

Código (csharp) [Seleccionar]
// Source file path.
string srcFilePath = @"C:\Archivo.ext";

// Destination directory path.
string dstDirPath = @"C:\Directorio\";

// Destination file path.
string dstFilePath = Path.Combine(dstDirPath, Path.GetFileName(srcFilePath));

try {
Directory.CreateDirectory(dstDirPath);
File.Copy(srcFilePath, dstFilePath, overwrite:false);

} catch (Exception ex) {
throw;

}


Nótese que no es necesario comprobar si el directorio existe o no, de eso ya se encarga el método DirectoryInfo.Create() o Directory.CreateDirectory(), los cuales no lanzarán ninguna excepción si el directorio ya fue creado con anterioridad.

Saludos.
#492
¿"PlayStation ha presentado"?, en cualquier caso será "Sony ha presentado"...

Por cierto, le pueden dar por culo a Sony como empresa y sus políticas abusivas. Aparte, ese videojuego Days Gone es un timo y un fracaso, necesitan hacer publicidad hasta en la sopa por que saben que tras las 2 primeras semanas del lanzamiento, cuando ya todo el mundo haya escupido su crítica negativa y el juego tenga un 2.0 de nota en Metacritic, ya se habrá destapado el pastel y nadie se planteará comprar esa basura de juego. No caigais en la trampa del marketing promocionado... una vez más.

Saludos.
#493
Scripting / Re: Antivirus en Batch
6 Marzo 2019, 04:23 AM
Estoy sorprendido, ¡me alegra escuchar tu decisión!
#494
¿Hay fecha para poner en vigor esta nueva ley?, aunque supongo que todos nos daremos cuenta cuando llegue ese día, al acceder a Google y solo veamos huecos en blanco rellenos con títulares de noticias, en lugar de miniaturas y resúmenes...

en fin.
#495
Cita de: Yidu en  3 Marzo 2019, 21:05 PM
Comentas que la identacion es aberrante en python. En cambio a mi me gusta.

La indentación no me parece aberrante ni improductiva, de hecho es evidente que resulta elegante y practicamente necesaria para aumentar la legibilidad de un código complejo. Lo aberrante es la regla que te obliga a indentar sí o sí... la diferencia está entre hacer que algo sea opcional, u obligatorio.

Por cierto, y para que no se me malinterprete, lo que dije en ese comentario y lo que he dicho ahora es una opinión personal.

Cita de: Yidu en  3 Marzo 2019, 21:05 PMSupongo que la mayoria de por aqui usa editores para crear codigo. Es decir, no usa el bloc de notas de windows. Por lo tanto, con solo apretar la tecla <enter> del teclado las lineas se identan solas. No encuentro que eso sea improductivo.

Precisamente, la necesidad de tener que depender de una IDE con auto-formato de indentación para minimizar o eliminar los efectos negativos causados por esta regla de indentación hacia el tiempo de productividad del programador, no justifica de ninguna de las maneras la existencia de dicha regla. La regla sigue ahí, la obligación sigue estando presente, solo que puede ser en parte ignorada en el sentido de darle menor o nula importancia a dicha regla mientras se utilice una IDE que indente por ti y así no te haga perder el tiempo en indentar manualmente cuando sea necesario.

Pero el caso es que hay muchos programadores que poseen los conocimientos suficientes de Python como para no necesitar depender de una IDE para desarrollar scripts muy simples, ¿y que pasa si yo deseo coger el notepad y ponerme a escribir un script de digamos 30 o 40 lineas y lo quiero hacer lo más rápido posible simplemente para testear el resultado de ejecución del script?, ¿y si precisamente no deseo hacer uso de la indentación por que es un simple script de prueba y por eso quiero ignorar la idnentación para aumentar al máximo posible mi productividad ya que además pretendo hacerle cambios a cada rato a ese código hasta obtener el resultado esperado?, en ese caso simplemente me será imposible ser productivo, ya que estaré obligado a invertir varios segundos de más primero en observar y estar pendiente de que lineas necesitan indentación, y segundo en realizar los movimientos de muñeca necesarios para llevar a cabo la indentación, y todo eso solo por que así lo demanda el lenguaje... y al final esos segundos de más se traducirán en minutos u horas dependiendo de la complejidad del script, y eso es lo que me parece aberrante. Si deseo ser productivo, el lenguaje me obliga a usar una IDE que indente por mi para ahorrarme ese tiempo. Pero en fin, como ya he comentado esto es solo mi opinión personal.

Cita de: Yidu en  3 Marzo 2019, 21:05 PM
En cambio, a mi no me gusta nada como queda el codigo de C++.

¿Cuando se ha convertido esto en un debate de favoritismos?. ¿Ha sido mi culpa?, lo pregunto en serio. Solo pretendia dar mi opinión sobre lo que considero que Python hace mal (siempre bajo mi opinión personal como usuario, no soy ninguna autoridad de la verdad) como "mal hábito de programación" o mal hábito o fallo de diseño; esto respondiendo a tu pregunta, por que tu has preguntado sobre Python, pero yo no pretendía llegar a este tipo de discusión.

De todas formas a mi tampoco me gustan los lenguajes con sintaxis c-like, con ese tipo de símbolitos varios diseñados por académicos matemáticos que solo saben hacer las cosas más complicadas de lo realmente necesario, como los malditos corchetes o los operadores con signos de exclamación, son cosas que odio debido a la lejania de las teclas en la disposición del teclado lo que me hace consumir un tiempo adicional a la hora realizar las pulsaciones del teclado en comparación con la sintaxis de otros lenguajes, incluyendo lenguajes como VB.NET, que a pesar de estar "humanizados" y por ende requerir en muchos casos la inserción de mayor cantidad de caracteres (ya que son palabras en lugar de símbolos), sigo tardando mucho menos en esciribir así un codigo al completo ya que me resulta más cómodo que si lo hiciera en un lenguaje c-like.

De nuevo decir que esto es mi opinión personal, logicamente hay a quien le gusta esa sintaxis y a quien no, y aún así no en pocas ocasiones me veo forzado a programar en C#, tanto para ofrecer ayuda en el foro como para otros menesteres. De C/C++ paso olímpicamente, no me aportan nada, y al final la motivación personal consiste en eso... de elegir o descartar a un lenguaje según lo que este te ofrezca para lograr tus objetivos personales o profesionales.

Saludos
#496
Cita de: Yidu en  3 Marzo 2019, 14:21 PM
Supongo, que la mayoria de programadores que estan por aqui, conocen y programan en varios lenguajes. Me gustaria saber como se motivan a programar en otro lenguaje donde han de hacer 20 lineas de codigo donde con su lenguaje favorito necesitan un par.

A menos que seas un fanático en busca de nuevas experiencias de aprendizaje, entonces por lo general la motivación surje de la necesidad, la necesidad de realizar un trabajo en un lenguaje específico por que así lo demanda el cliente, por poner un ejemplo, o la necesidad de desarrollar una aplicación bajo una tecnología que requiere el uso de varios lenguajes de programación al mismo tiempo.

Si el único incentivo fuese la motivación por experimetar múltiples lenguajes de programación por hobbie, entonces obviamente más tarde o más temprano uno se decantará por un lenguaje para el uso cotidiano al que llamar Favorito o Principal, como tú has hecho con Python por su elevado nivel de abstracción de código en comparación con C/C++ u otros.

No se que estarás preguntando realmente, por que las respuestas ya las sabes...

Citar¿Python nos hace acostumbrarnos a la bueno?

¿Y que entiendes tu por "lo bueno"?, ¿buenos hábitos de programación?. En lenguajes de programación orientado a objetos como Python y que permiten aplicar otros varios paradigmas de programación, la práctica de buenos hábitos depende más de ti, que de las reglas sintácticas y semánticas establecidas en el propio lenguaje. Pero desde luego si hay algo que Python no hace nada bien, es la "ley de indentación obligatoria por que me sale de los cojones", creo que dentro de Python no hay regla más tediosa e improductiva en términos de tiempo de desarrollo... a menos que uses una IDE que lo haga por ti sin que debas hacer esfuerzo alguno para indentar cuando se te obligue a hacerlo, claro está.

Un saludo.
#497
Scripting / Re: Antivirus en Batch
3 Marzo 2019, 05:34 AM
Cita de: Alvarito050506 en 24 Febrero 2019, 22:18 PM
Espero comentarios, críticas y contribuciones pronto.

Este tipo de "limpiadores" hechos en Batch-scipt y llevados a cabo desde la completa inexperiencia y desconocimiento, nunca llevan a ninguna parte.

No se si eres consciente de que estás eliminando archivos conocidos - y que no tienen por que ser maliciosos - sin una justificación real, y llevando a cabo otras acciones por igual, con una advertencia que realmente no advierte de los peligros reales que puede ocasionar la utilización de tu script, pues para empezar modificas a tu antojo los atributos de todos los directorios y archivos, luego eliminas cualquier acceso directo (*.lnk) en el directorio raíz de la unidad especificada, además del archivo de configuración de carpeta (Desktop.ini) y el AutoRun.inf, pero lo peor de todo es que eliminas sin miramiento alguno el directorio completo de la papelera de reciclaje en la unidad C:\ ($RECYCLE.BIN), aunque al menos tal y como has especificado la sintaxis del comando rmdir este pedirá confirmación al usuario, pero ni aun así, esa "detección de virus" es falsa e innecesaria, y por si eso fuese poco además eliminas la clave de registro de configuración de inicio de programas, todo sin que nadie te haya pedido que elimines nada de eso sin una autorización previa por parte del usuario... la advertencia actual es insuficiente.

Cita de: Alvarito050506 en 24 Febrero 2019, 22:18 PM
Código (dos) [Seleccionar]
title Advanced USB Batch Antivirus

Llamar "Advanced" a este tipo de scripts es muy poco humilde, es más, por el mero hecho de ser un Batch-script esto ya es incalificable como "Advanced" ni sinónimos, mucho menos "Antivirus"; no es por desmerecer tu tiempo y esfuerzo invertido en el desarrollo del código, pero es la realidad y cuanto antes te des cuenta de ello, mejor será para ti y tus objetivos de programación.

Sinceramente, tu "limpiador" puede causar más perjuicios que sanar, sobre todo para quien no sepa exactamente lo que va a ser modificado y eliminado de su sistema al iniciar tu script y luego se encuentre con la sorpresa de que le has eliminado todo el contenido de la papelera de reciclaje que a lo mejor ese usuario luego quisiera restaurar, o que sus programas instalados dejan de iniciarse al inicio de Windows por que has eliminado cierta clave de registro que guarda esa configuración de programas, o ver que ciertos directorios y archivos ya no están ocultos por que tu script ha modificado sus atributos, etc. Yo no usaría este tipo de "vacunas" ni como último recurso.

No eres el primero ni serás el último que se pone a aprender programación Batch y ve como buena idea hacer este tipo de "vacunas USB" y lo postea en el foro también. Mi crítica constructiva se la dirijo a todas esas personas también...

Mi consejo (si es que lo llegas a querer): olvídate de seguir haciendo este tipo de scripts en batch, en serio, ya no es que sea innecesario reinventar la rueda, es que directamente no son de ninguna utilidad y de hecho su utilización puede resultar perjudicial según el desconocimiento de quien lo use, y al final haciendo esto solo perderás (sin saberlo) un preciado tiempo pudiendo estar haciendo otras cosas realmente útiles en lenguajes de programación de verdad.

PD: espero no haber sido demasiado duro / sincero.

Un saludo.
#498
Cita de: caradepoio en 27 Febrero 2019, 22:54 PM
script que verifique el tamaño de de archivos.

....

#499
Cita de: Meta en  2 Marzo 2019, 22:01 PM
Código (csharp) [Seleccionar]
Console.Write(Encoding.ASCII.GetBytes((char)219));

El código citado solo puede mostrar la representación por defecto a string de un array de bytes, es decir, mostrará el nombre completo del tipo ("System.Byte[]"), puesto que no se están descodificando los bytes de dicho array ( para lo que se llamaría a la función: Encoding.GetString(byte[]) ).

Pero en cualquier caso se utilizaría la propiedad Console.OutputEncoding para especificar la codificación de caracteres mostrados en el búfer de salida, o como alternativa se usaría la función SetConsoleOutputCP de la API de Windows quien prefiera hacerlo así.

Saludos.
#500
Tu duda me ha inspirado a llevar a cabo un tipo reutilizable que sirve para representar un rectángulo (dibujable)  en una aplicación de consola:


( puedes coger el código y usar cualquier conversor online a C#, o compilarlo en un archivo .dll y usarlo en tu proyecto de C#. )





Decisiones (o limitaciones) de diseño:

  • Las propiedades son de solo lectura (para quitarme de lios). Es decir, para hacer cambios en el tamaño o posición del rectángulo, hay que crear una nueva instancia. - ya no lo son
  • No permite la asignación de coordenadas negativas (puesto que tampoco lo permite el método Console.SetCursorPos()), ni un tamaño (anchura ni altura) igual a cero, aunque esto último no se tiene en cuenta si se usa el constructor por defecto.

Modo de empleo (con el que tomé la primera imagen):

Point rc1Pos = new Point(2, Console.CursorTop + 2);
ConsoleRectangle rc1 = new ConsoleRectangle(rc1Pos, new Size(32, 4), '▌', '▀', '▐', '▄');
rc1.Write();

Point rc2Pos = new Point(2, Console.CursorTop + 2);
ConsoleRectangle rc2 = new ConsoleRectangle(rc2Pos, new Size(32, 4), 'X', 'X', 'X', 'X');
rc2.Write();

Point rc3Pos = new Point(2, Console.CursorTop + 2);
ConsoleRectangle rc3 = new ConsoleRectangle(rc3Pos, new Size(11, 5), '▌', '▀', '▐', '▄');
rc3.Write();

Point rc4Pos = new Point(rc3Pos.X + (rc3.Width / 2), rc3Pos.Y + +(rc3.Height / 2));
ConsoleRectangle rc4 = new ConsoleRectangle(rc4Pos, rc3.Size, 'X', 'X', 'X', 'X');
rc4.Write();

Console.SetCursorPosition(rc1.X + 9, rc1.Y);
Console.Write(" Hello World ");
Console.SetCursorPosition(rc1.X + 6, rc1.Y + 2);
Console.Write(" By ElektroStudios ");

Console.CursorVisible = false;
Console.ReadKey(intercept:true);


Saludos.