Translate

jueves, 1 de julio de 2021

DateTime en C#


 C # incluye la estructura DateTime para trabajar con fechas y horas. Para utilizarlo solo es necesario construirlo de la siguiente manera : 

DataTime dt = new DataTime()

El valor predeterminado y más bajo de un objeto DateTime es el 1 de enero de 0001 00:00:00 (medianoche). El valor máximo puede ser el 31 de diciembre de 9999 a las 11:59:59 p.m.

La estructura DateTime incluye campos, propiedades y métodos estáticos. El siguiente ejemplo muestra propiedades y campos estáticos:

Con DateTime.Now obtenemos la fecha y la hora actual y con DateTime.Today el día actual. Utc es tiempo universal coordinado que tiene la maquina según su configuración.

TimeSpan es una estructura que se utiliza para representar el tiempo en días, horas, minutos, segundos y milisegundos.


La estructura DateTime sobrecarga los operadores +, -, ==,! =,>, <, <=,> = Para facilitar la suma, resta y comparación de fechas. Estos facilitan el trabajo con fechas.





martes, 29 de junio de 2021

Que es .NET MAUI?


 .NET MAUI en la interfaz de usuario o UI de aplicación multiplataforma .NET. Es un framework multiplataforma para crear aplicaciones nativas de escritorio y móviles con C # y XAML. Con .NET MAUI, puede desarrollar aplicaciones que pueden ejecutarse en Android, iOS, macOS y Windows desde una única base de código compartida.

La pregunta que se me ocurre, luego de ser contestada la del titulo, es como se pronuncia en castellano? dotnetMiau? jeje

.NET MAUI es de open source y es la evolución de Xamarin.Forms, extendido desde escenarios móviles a de escritorio, con controles de IU reconstruidos desde cero para rendimiento y extensibilidad. 

Con .NET MAUI, puede crear aplicaciones multiplataforma con un solo proyecto, pero puede agregar código fuente y recursos específicos de la plataforma si es necesario. Uno de los objetivos clave de .NET MAUI es permitirle implementar la mayor cantidad posible de la lógica de la aplicación y el diseño de la interfaz de usuario en una única base de código.

Dejo link: https://github.com/dotnet/maui

domingo, 27 de junio de 2021

StringBuilder en C#

StringBuilder, Representa una cadena mutable. Esta clase no puede heredarse.

StringBuilder es un objeto que permite el manejo de string sin consumir tanta memoria. Normalmente se utiliza como un buffer donde podemos acumular string, dado que este objeto es mutable, utiliza menos memoria que un string. 


La propiedad StringBuilder.Length indica el número de caracteres que contiene actualmente el objeto StringBuilder. Si agrega caracteres al objeto StringBuilder, su longitud aumenta hasta igualar el tamaño de la propiedad StringBuilder.Capacity, que define el número de caracteres que puede contener el objeto. Si el número de caracteres agregados hace que la longitud del objeto StringBuilder exceda su capacidad actual, se asigna nueva memoria, se duplica el valor de la propiedad Capacity, se agregan nuevos caracteres al objeto StringBuilder y se ajusta su propiedad Length. La memoria adicional para el objeto StringBuilder se asigna dinámicamente hasta que alcanza el valor definido por la propiedad StringBuilder.MaxCapacity. Cuando se alcanza la capacidad máxima, no se puede asignar más memoria para el objeto StringBuilder e intentar agregar caracteres o expandirlo más allá de su capacidad máxima arroja una excepción ArgumentOutOfRangeException o una excepción OutOfMemoryException.

El siguiente ejemplo ilustra cómo un objeto StringBuilder asigna nueva memoria y aumenta su capacidad dinámicamente a medida que se expande la cadena asignada al objeto. El código crea un objeto StringBuilder llamando a su constructor predeterminado (sin parámetros). La capacidad predeterminada de este objeto es de 16 caracteres y su capacidad máxima es de más de 2 mil millones de caracteres. Añadiendo la cadena "Esta es una oración". da como resultado una nueva asignación de memoria porque la longitud de la cadena (19 caracteres) excede la capacidad predeterminada del objeto StringBuilder. La capacidad del objeto se duplica a 32 caracteres, se agrega la nueva cadena y la longitud del objeto ahora es igual a 19 caracteres. Luego, el código agrega la cadena "Esta es una oración adicional". al valor del objeto StringBuilder 11 veces. Siempre que la operación de agregar hace que la longitud del objeto StringBuilder exceda su capacidad, su capacidad existente se duplica y la operación de agregar tiene éxito.



Y el resultado será : 


StringBuilder provee un conjunto de constructores que permiten crear un objeto StringBuilder a partir de un string o podemos utilizar un constructor vació. Y también cuenta con un constructor que permite definir sus propiedades. 

StringBuilder provee un conjunto de métodos para acumular strings, metodo Append y para transformar un StringBuilder a string utilizamos el método ToString



sábado, 26 de junio de 2021

Python Programming Cookbook eBook

 Dear fellow geek,


in case you haven't done already, check out our ebook on the Python Programming Cookbook. You can access it for FREE here.

Python Programming Cookbook eBook


Python is a widely used high-level, general-purpose, interpreted, dynamic programming language. Its design philosophy emphasizes code readability, and its syntax allows programmers to express concepts in fewer lines of code than would be possible in languages such as C++ or Java. The language provides constructs intended to enable clear programs on both a small and large scale.

Python supports multiple programming paradigms, including object-oriented, imperative and functional programming or procedural styles. It features a dynamic type system and automatic memory management and has a large and comprehensive standard library.

In this ebook, we provide a compilation of Python examples that will help you kick-start your own projects. We cover a wide range of topics, from multi-threaded programming to web development with Django. With our straightforward tutorials, you will be able to get your own projects up and running in minimum time.

 

viernes, 25 de junio de 2021

Métodos de String en C#

String tiene diferentes métodos que permiten interactuar con él y nos facilitan el desarrollo, veamos un ejemplo : 


Además podemos  acceder de modo solo lectura a caracteres individuales con la notación [] , como en el siguiente ejemplo:


Se acuerdan de javaFx??


Tal vez ustedes son muy jóvenes pero hace tiempo existió una tecnología llamada imagen de vector que inundó la web, de forma muy rápida fue adoptada por los principales proveedores de software como la manera de hacer interfaces y muy muy rápidamente fue olvidada y remplazada por HTML 5. 

De esta historia (de terror para muchas empresas) nace JavaFx que fue un framework que no solo aposto por una tecnología a punto de morir, sino que llego muy tarde al mercado. 

Pero no todo es tristeza en esta historia, la tecnología de imagen de vector es super interesante y se puede utilizar en el escritorio. 

Por ende no todo esta perdido y JavaFx puede ser una opción para algunos nichos. 

JavaFx fue donada a la comunidad por parte de oracle y ahora se encuentra en la web : https://openjfx.io/

Les cuento que tenia pensado hacer un post más largo y más lindo pero cuesta mucho o bastante que en internet es mucho, encontrar un ejemplo cerrado. Pero bueno, el que busca encuentra y acá hay un repositorio con muchos ejemplos : https://github.com/jjenkov/javafx-examples/

Veamos uno : 

import javafx.application.Application;

import javafx.scene.Scene;

import javafx.scene.control.Button;

import javafx.scene.layout.VBox;

import javafx.stage.Stage;


/**

 * Shows a simple JavaFX Button - and prints a text when the button is clicked.

 */

public class ButtonExample extends Application {


    public static void main(String[] args) {

        launch(args);

    }


    @Override

    public void start(Stage primaryStage) {

        Button button = new Button();

        button.setText("Click me!");

        button.setOnAction((event) -> {

            System.out.println("Button clicked!");

        });

        VBox vbox = new VBox(button);

        Scene scene = new Scene(vbox);

        primaryStage.setScene(scene);

        primaryStage.show();

    }

}

Como se puede ver más allá de un conjunto de detalles es muy parecida a una aplicación swing o SWT. 


lunes, 21 de junio de 2021

Convertir desde String a otros tipos en C#

C# provee una clase Convert que permite convertir string a números. La siguiente tabla enumera algunos de los métodos de la clase Convert que puede usar para convertir una cadena en un número.

Veamos un ejemplo de uso de estos métodos:



Para pasar un tipo a string tenemos el método ToString y si el casteo es implícito C# utilizará este método.

Formatear Cadenas en C#


Un String.Format  es una cadena cuyo contenido se determina dinámicamente en tiempo de ejecución. String.Format se crean incrustando expresiones interpoladas o marcadores de posición dentro de llaves dentro de una cadena. Todo lo que esté dentro de las llaves ({...}) se resolverá en un valor y se mostrará como una cadena formateada en tiempo de ejecución. Hay dos métodos para crear String.Format : interpolación de cadenas y formateo compuesto.



Disponible en C # 6.0 y versiones posteriores, las cadenas interpoladas se identifican mediante el carácter especial $ e incluyen expresiones interpoladas entre llaves. 

La interpolación de cadenas logra los mismos resultados que el método String.Format, pero mejora la facilidad de uso y la claridad en línea.



String.Format utiliza marcadores de posición entre llaves para crear una cadena de formato. Este ejemplo da como resultado una salida similar al método de interpolación de cadenas utilizado anteriormente.


sábado, 19 de junio de 2021

Paquetes EF Core NuGet

 

Entity Framework Core (EF Core) se instala con paquetes NuGet.  El proceso habitual para instalar paquetes es:

  • Decidir sobre un proveedor de base de datos e instalar el paquete apropiado 
  • Instalar Microsoft.EntityFrameworkCore y Microsoft.EntityFrameworkCore.Relational si utiliza una base de datos relacional. Esto ayuda a garantizar que se utilicen versiones coherentes y también significa que NuGet le informará cuando se envíen nuevas versiones de paquetes.
  • Opcionalmente, decidir qué tipo de herramientas necesita e instale los paquetes apropiados para eso.

Asegúrese de instalar la misma versión de todos los paquetes EF Core enviados por Microsoft. Por ejemplo, si está instalada la versión 5.0.3 de Microsoft.EntityFrameworkCore.SqlServer, todos los demás paquetes Microsoft.EntityFrameworkCore. * También deben estar en 5.0.3.

También asegúrese de que los paquetes externos sean compatibles con la versión de EF Core que se esté utilizando. En particular, verifique que el proveedor de la base de datos externa sea compatible con la versión de EF Core que está utilizando. Las nuevas versiones principales de EF Core generalmente requieren un proveedor de base de datos actualizado.

miércoles, 16 de junio de 2021

Libro Gratuito: HTML 5 in Action

 Don't miss out! Offer ends June 20, 2021. 

Only available to new email subscribers.

crowther2
$31.99 FREE!
Get your free eBook!
“The go-to guide for all things HTML5.” 
– Tyson Maxwell, Raytheon
HTML5 in Action provides a complete 
introduction to web development using 
HTML5. It explores the HTML5 
specification through real-world 
examples and code samples.

Dejo link : https://freecontent.manning.com/free-ebook-2021-25/?utm_source=facebook&utm_medium=organic&utm_campaign=newslettersignup_html_6_14_21

lunes, 14 de junio de 2021

Introducción a Entity Framework Core 5 parte 3


Seguimos EF.

Cada solución de EF Core tendrá al menos una implementación de DbContext. ¿Qué es DbContext? DbContext es una clase base especializada que rastrea nuestras operaciones en memoria, lo que nos permite escribir y ejecutar consultas, rastrear cambios que podemos persistir en nuestra base de datos e interactuar con nuestro motor de base de datos de manera indirecta o directa en circunstancias excepcionales.

Para comenzar a usar EF Core 5, necesitamos definir una clase que se derive de DbContext y contenga nuestros modelos. Normalmente, nuestras clases se asignarán una a una con las tablas de nuestra base de datos, y las relaciones entre las tablas se definen mediante convenciones de navegación. Veremos cómo funciona esto a medida que vayamos definiendo nuestras clases.

Para esta teoría vamos a hacer un modelado simple, con Entity Framework nuestras clases no son obligadas a extender de una clase del framework o tener algo especial. 

En nuestro ejemplo vamos a definir clases que modelen la lógica de un blog. 

using System.Collections.Generic;

using Microsoft.EntityFrameworkCore;


namespace EFGetStarted

{

    public class BloggingContext : DbContext  {

        public DbSet<Blog> Blogs { get; set; }

        public DbSet<Post> Posts { get; set; }


        // The following configures EF to create a Sqlite database file as `C:\blogging.db`.

        // For Mac or Linux, change this to `/tmp/blogging.db` or any other absolute path.

        protected override void OnConfiguring(DbContextOptionsBuilder options)

            => options.UseSqlite(@"Data Source=C:\blogging.db");

    }


    public class Blog

    {

        public int BlogId { get; set; }

        public string Url { get; set; }


        public List<Post> Posts { get; } = new List<Post>();

    }


    public class Post

    {

        public int PostId { get; set; }

        public string Title { get; set; }

        public string Content { get; set; }


        public int BlogId { get; set; }

        public Blog Blog { get; set; }

    }

}

Los siguientes pasos utilizan migraciones para crear una base de datos.

> dotnet ef migrations add InitialCreate

> dotnet ef database update

El comando de migraciones crea una migración para crear el conjunto inicial de tablas para el modelo. El comando de actualización de la base de datos crea la base de datos y le aplica la nueva migración. 

Veamos un ejemplo de creación, lectura, update y delete: 


using System;

using System.Linq;


namespace EFGetStarted

{

    internal class Program

    {

        private static void Main()

        {

            using (var db = new BloggingContext())

            {

                // Note: This sample requires the database to be created before running.


                // Create

                Console.WriteLine("Inserting a new blog");

                db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });

                db.SaveChanges();


                // Read

                Console.WriteLine("Querying for a blog");

                var blog = db.Blogs

                    .OrderBy(b => b.BlogId)

                    .First();


                // Update

                Console.WriteLine("Updating the blog and adding a post");

                blog.Url = "https://devblogs.microsoft.com/dotnet";

                blog.Posts.Add(

                    new Post { Title = "Hello World", Content = "I wrote an app using EF Core!" });

                db.SaveChanges();


                // Delete

                Console.WriteLine("Delete the blog");

                db.Remove(blog);

                db.SaveChanges();

            }

        }

    }

}


Dejo link: https://docs.microsoft.com/en-us/ef/core/get-started/overview/first-app?tabs=netcore-cli

Introducción a Entity Framework Core 5 parte 2


Seguimos con EF. 

Para comenzar, debemos instalar la última versión de .NET 5 SDK. Técnicamente, EF Core 5 puede ejecutarse en .NET Core 3.1, pero vamos a utilizar .NET 5.

Comenzando con una nueva aplicación de consola, necesitaremos instalar los siguientes paquetes, asegurándonos de que todas las versiones sean 5.0.0:

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.Design
  • Microsoft.EntityFrameworkCore.Sqlite
Primero vamos a hacer un proyecto de consola: 

> dotnet new console

Para instalar dotnet-ef debemos hacer : 

> dotnet new tool-manifest

> dotnet tool install dotnet-ef

> dotnet add package Microsoft.EntityFrameworkCore --version 5.0.6

>dotnet add package Microsoft.EntityFrameworkCore.Design --version 5.0.6

>dotnet add package Microsoft.EntityFrameworkCore.Sqlite --version 5.0.6

En este caso estamos utilizando Sqlite, pero podemos utilizar: 

Cuando terminemos de configurar nuestro proyecto, podemos ejecutar el comando dotnet-ef, donde el unicornio EF nos saludará.

> dotnet ef

Dejo link: https://docs.microsoft.com/en-us/ef/core/get-started/overview/first-app?tabs=netcore-cli


martes, 8 de junio de 2021

Libro Gratuito : Solr in Action


solrinaction
$39.99 FREE!
Get your free eBook!
Solr in Action is a comprehensive guide to implementing scalable search using Apache Solr. This clearly written book walks you through well-documented examples ranging from basic keyword searching to scaling a system for billions of documents and queries. It will give you a deep understanding of how to implement core Solr capabilities.


 Dejo link: https://freecontent.manning.com/free-ebook-solr-in-action/?utm_source=facebook&utm_medium=organic&utm_campaign=newslettersignup_solr_5_31_21

Libro Gratuito : Geoprocessing with Python

 Quiero compartir este libro gratuito de manning sobre Geoprocessing with Python. 

Geoprocessing with Python

Don't miss out! Offer ends June 13, 2021. Only available 
to new Deal of the Day email subscribers.
Garrard-GWP-HI
$39.99 FREE!
Get your free eBook!
Geoprocessing with Python teaches you how to use the Python programming language, along with free and open source tools, to read, write, and process geospatial data. Through lots of hands-on examples, you’ll master core practices like handling multiple vector file formats, and editing geometries.

Dejo link : https://freecontent.manning.com/free-ebook-2021-24/?utm_source=facebook&utm_medium=organic&utm_campaign=newslettersignup_geoprocessing_6_7_21

lunes, 7 de junio de 2021

Introducción a Entity Framework Core 5


Entity Framework es un mapeador relacional de objetos (ORM), que ayuda a los desarrolladores a superar los desajustes de impedancia entre C # y el esquema de una instancia de base de datos.

Entity Framework ha recorrido un largo camino desde su inicio original. Concebida inicialmente como una herramienta centrada en el diseñador que depende en gran medida de la interfaz gráfica de usuario de Visual Studio y SQL Server, la filosofía actual de EF reconoce la necesidad de ser más amigable con ideas como control de fuente distribuido, servidores de compilación, múltiples motores de base de datos y sistemas operativos.

Entity Framework (EF) Core es una versión ligera, extensible, de código abierto y multiplataforma de la popular tecnología de acceso a datos de Entity Framework.

EF Core puede servir como un mapeador relacional de objetos (ORM), que:

  • Permite a los desarrolladores de .NET trabajar con una base de datos utilizando objetos .NET.
  • Elimina la necesidad de la mayor parte del código de acceso a datos que normalmente es necesario escribir.
  • EF Core admite muchos motores de base de datos; consulte Proveedores de bases de datos para obtener más detalles.

Con EF Core, el acceso a los datos se realiza mediante un modelo. Un modelo se compone de clases de entidad y un objeto de contexto que representa una sesión con la base de datos. El objeto de contexto permite consultar y guardar datos. 

EF admite los siguientes enfoques de desarrollo de modelos:
  • Genere un modelo a partir de una base de datos existente.
  • Codifique manualmente un modelo para que coincida con la base de datos.
  • Una vez que se crea un modelo, use EF Migrations para crear una base de datos a partir del modelo. Las migraciones permiten evolucionar la base de datos a medida que cambia el modelo.

Si bien EF Core es bueno para abstraer muchos detalles de programación, existen algunas mejores prácticas aplicables a cualquier ORM que ayudan a evitar errores comunes en las aplicaciones de producción:

  • El conocimiento de nivel intermedio o superior del servidor de base de datos subyacente es esencial para diseñar, depurar, perfilar y migrar datos en aplicaciones de producción de alto rendimiento. Por ejemplo, conocimiento de claves primarias y externas, restricciones, índices, normalización, declaraciones DML y DDL, tipos de datos, creación de perfiles, etc.
  • Pruebas funcionales y de integración: es importante replicar el entorno de producción lo más fielmente posible para:
    • Encontrar problemas en la aplicación que solo aparecen cuando se usa una versión o edición específica del servidor de base de datos.
    • Detectar los cambios importantes al actualizar EF Core y otras dependencias. Por ejemplo, agregar o actualizar marcos como ASP.NET Core, OData o AutoMapper. Estas dependencias pueden afectar EF Core de formas inesperadas.
    • Prueba de rendimiento y estrés con cargas representativas. El uso ingenuo de algunas funciones no se adapta bien. Por ejemplo, múltiples colecciones Incluye, uso intensivo de carga diferida, consultas condicionales en columnas no indexadas, actualizaciones masivas e inserciones con valores generados por la tienda, falta de manejo de simultaneidad, modelos grandes, política de caché inadecuada.
    • Revisión de seguridad: por ejemplo, manejo de cadenas de conexión y otros secretos, permisos de base de datos para operaciones sin implementación, validación de entrada para SQL sin procesar, cifrado para datos confidenciales.
    • Asegurarse de que el registro y los diagnósticos sean suficientes y utilizables. Por ejemplo, la configuración de registro adecuada, las etiquetas de consulta y Application Insights.
    • Encontrar error de recuperación. Prepare contingencias para escenarios de fallas comunes, como reversión de versiones, servidores de reserva, escalado horizontal y equilibrio de carga, mitigación de DoS y copias de seguridad de datos.
    • Despliegue y migración de aplicaciones. Planifique cómo se aplicarán las migraciones durante la implementación; hacerlo al inicio de la aplicación puede sufrir problemas de concurrencia y requiere permisos más altos de los necesarios para el funcionamiento normal. Utilice la preparación para facilitar la recuperación de errores fatales durante la migración. Para obtener más información, consulte Aplicación de migraciones.
    • Tests detalladas de las migraciones generadas. Las migraciones deben probarse a fondo antes de aplicarse a los datos de producción. La forma del esquema y los tipos de columna no se pueden cambiar fácilmente una vez que las tablas contienen datos de producción. Por ejemplo, en SQL Server, nvarchar (max) y decimal (18, 2) rara vez son los mejores tipos para columnas asignadas a propiedades de cadena y decimal, pero esos son los valores predeterminados que utiliza EF porque no tiene conocimiento de su guión.

Dejo link: https://docs.microsoft.com/en-us/ef/core/