En este video abarcare todo lo que debes saber cómo programador para cancelar bajo el nuevo esquema del SAT para la cancelación de facturas electrónicas que entro en vigor este pasado 1 de noviembre del 2018.
Categoría: C#
LINQ en C# .Net básico en 10 minutos
En este video explico rápidamente como se puede utilizar LINQ en c# .Net
Código del video: https://hdeleon.net/linq-introduccion-y-ejemplos-rapidos-en-c-net/
Curso de Web scraping en C# .Net
En este nuevo curso te mostrare como puedes hacer web scraping de manera fácil y rápida con C# .Net.
1.- Obtener contenido HTML, seleccionar elementos por clase, nombre, id
En este video te muestro como puedes seleccionar elementos de una página web de manera natural, utilizando su clase, su id o su nombre de etiqueta.
2.- Guardar contenido de un sitio web en base de datos
En este segundo video te enseñare a como puedes guardar el contenido de un sitio web en una base de datos.
3.- Descargar todas las imágenes de una url
En este tercer video te enseñare como puedes descargarte todas las imagenes que se visualizan en una url de un sitio web.
4.- Descargar todas las imágenes de TODO un sitio web
En este video te enseñare a como navegar por todas las ligas de una url e ir recursivamente url por url del sitio entero descargando las imagenes.
Código fuente
using HtmlAgilityPack; using ScrapySharp.Extensions; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; using WebScraping.Models; namespace WebScraping { class Program { static List<string> lstYaInvocadas = new List<string>(); static List<string> lstImagenesDescargadas = new List<string>(); static string pathImages = @"C:\tuRuta\"; static void Main(string[] args) { HtmlWeb oWeb = new HtmlWeb(); string url = "https://hdeleon.net/"; /*Video: 2 - Obtener titles ***********************************************/ using (webscrapingEntities db = new webscrapingEntities()) { for (int i = 1; i <= 32; i++) { if (i > 1) url += "/page/" + i + "/"; HtmlDocument doc2 = oWeb.Load(url); foreach (var Nodo in doc2.DocumentNode.CssSelect(".entry-title")) { var NodoAnchor = Nodo.CssSelect("a").First(); var oTitle = new titles(); oTitle.title = NodoAnchor.InnerHtml; db.titles.Add(oTitle); //MisTitulos.Add(NodoAnchor.InnerHtml); } Console.WriteLine("se analizo la pagina: "+i); } db.SaveChanges(); } /* Video 3 - Ejemplo de robar imagenes ********************************************/ HtmlDocument doc = oWeb.Load(url); //obtenemos las imagenes int num = 0; foreach (var Nodo in doc.DocumentNode.CssSelect("img")) { Console.WriteLine("Imagen robada: " + Nodo.GetAttributeValue("src")); using (WebClient oClient = new WebClient()) { string urlImagen = Nodo.GetAttributeValue("src"); oClient.DownloadFile(new Uri(urlImagen), pathImages + num + ".jpg"); } num++; } /*Video 4 - Obtener todas las imagenes de todo el sitio web *************************/ HtmlDocument doc3 = oWeb.Load(url); //obtener las imagenes de la url foreach (var Nodo in doc3.DocumentNode.CssSelect("img")) { // Console.WriteLine("Imagen robada: " + Nodo.GetAttributeValue("src")); using (WebClient oClient = new WebClient()) { string urlImagen = Nodo.GetAttributeValue("src"); string[] arrUrlImagen = urlImagen.Split('/'); string nombreImagen = pathImages + arrUrlImagen[arrUrlImagen.Length - 1]; if (!lstImagenesDescargadas.Contains(arrUrlImagen[arrUrlImagen.Length - 1])) { oClient.DownloadFile(new Uri(urlImagen), nombreImagen); lstImagenesDescargadas.Add(arrUrlImagen[arrUrlImagen.Length - 1]); } } } //recursividad urls foreach (var Nodo in doc3.DocumentNode.CssSelect("a")) { string urlSon = Nodo.GetAttributeValue("href"); if (!lstYaInvocadas.Contains(urlSon) && urlSon.StartsWith("https://hdeleon.net/")) { Console.WriteLine(urlSon); lstYaInvocadas.Add(urlSon); ObtienesImagenes(urlSon); } } } #region Helpers private static void ObtienesImagenes(string url,string tab="") { try { HtmlWeb oWeb = new HtmlWeb(); HtmlDocument doc3 = oWeb.Load(url); foreach (var Nodo in doc3.DocumentNode.CssSelect("img")) { // Console.WriteLine("Imagen robada: " + Nodo.GetAttributeValue("src")); using (WebClient oClient = new WebClient()) { string urlImagen = Nodo.GetAttributeValue("src"); string[] arrUrlImagen = urlImagen.Split('/'); string nombreImagen =pathImages+ arrUrlImagen[arrUrlImagen.Length - 1]; if (!lstImagenesDescargadas.Contains(arrUrlImagen[arrUrlImagen.Length - 1])) { oClient.DownloadFile(new Uri(urlImagen), nombreImagen); lstImagenesDescargadas.Add(arrUrlImagen[arrUrlImagen.Length - 1]); } } } foreach (var Nodo in doc3.DocumentNode.CssSelect("a") ) { string urlSon = Nodo.GetAttributeValue("href"); if ( !lstYaInvocadas.Contains(urlSon) && urlSon.StartsWith("https://hdeleon.net/")) { Console.WriteLine(tab+urlSon); lstYaInvocadas.Add(urlSon); ObtienesImagenes(urlSon, tab + ">"); } } } catch { } } #endregion } }
Patrones de diseño en C# .Net
Los patrones de diseño son un conjunto de técnicas que nos ayudaran a no reinventar la rueda, con estas técnicas ya tendremos soluciones a problemas comunes.
El aprender Patrones de diseño es darle un brinco a tu conocimiento como programador, el cual te ayudara a tener lista la solución de problemas a los que te enfrentaras en el día a día.
Si deseas un curso de Patrones de diseño en C# con ejemplos reales de su uso da CLIC AQUÍ.
Puedes ver el listado de patrones de diseño a continuación o si lo deseas puedes verlo en youtube dando clic aquí:
-
Singleton en C# .Net | Patrones de diseño | design patterns | #1
-
Prototype shallow en C# .Net | Patrones de diseño | design patterns | #2
-
Prototype deep en C# .Net | Patrones de diseño | design patterns | #3
-
Factory Method en C# .Net | Patrones de diseño | design patterns | #4
-
Strategy en C# .Net | Patrones de diseño | design patterns | #5
-
Mediator en C# .Net | Patrones de diseño | design patterns | #6
-
State en C# .Net | Patrones de diseño | design patterns | #7
-
Composite en C# .Net | Patrones de diseño | design patterns | #8
-
Inyección de dependencias | Patrones de diseño | design patterns | #9 💉
-
Patrón de diseño inyección de dependencias | Ejemplo en MVC .Net Core 💉
Crear CRUD en Windows Forms con C# .Net, Entity Framework y Sql Server
En este video te enseñare a crear un CRUD en Windows forms, después de ver el video serás capaz de obtener los datos de una base de datos, insertar datos, editar datos y eliminaros, todo a través de una interfaz hecha en Windows forms.
Factory Method en C# .Net, Patrones de diseño, design patterns, #4
En este video te explicare el patrón de diseño factory method, también te explicare cuando usarlo y como crearlo. Todo en c# .net.
Juego de la vida en C# .Net, autómata celular, Universo holograma
En este video te enseñare como representar el juego de la vida en C# .Net paso por paso, al igual que te daré una explicación breve sobre que significa y para qué sirve este sistema determinista.
¿Cómo hacer un HTML Helper en MVC .Net? | C# .Net
En este video te enseñare como puedes hacer tus propios html helpers, y así ahorrarte código html cuando realizas tus vistas.
Pilas y Colas en C# .Net, Lifo, Fifo, Queue y Stack
En este video te enseñare como se pueden manejar pilas y colas en c# .Net con las clases Queue y Stack.
Conjunto de Mandelbrot en C# .Net, Fractales, Mandelbrot Set
En este video te explicare el conjunto de mandelbrot, y como se puede representar en C# .Net.
Código
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { MandelbrotSet(); } private void MandelbrotSet() { int width = pictureBox1.Width; int heigh = pictureBox1.Height; Bitmap bmp = new Bitmap(width,heigh); for (int row=0;row<heigh;row++) { for (int col=0;col<width;col++) { double c_re = (col - width / 2.0) * 4.0 / width; double c_im = (row - Height / 2.0) * 4.0 / heigh; int iteracion = 0; double x = 0, y = 0; while (iteracion<1000 && ((x*x)+(y*y))<=4) { double x_temp = (x * x) - (y * y) + c_re; y = 2 * x * y + c_im; x = x_temp; iteracion++; } if (iteracion < 1000) bmp.SetPixel(col, row, Color.FromArgb(iteracion%128,iteracion%50*5,iteracion%10)); else bmp.SetPixel(col, row, Color.Black); } } pictureBox1.Image = bmp; } }