martes, 29 de enero de 2019

182. Obtener tipo de dato de un datareader

El tipo de dato, nos da una manera de poder manipular la información, así si lo conocemos es mas fácil controlar los procesos que estamos programando.

Es muy importante mencionar un error de muchos programadores que consideran todo como cadenas, el resultado de que todo sea cadena es que las transformaciones que se dan entre los datos, sobre todo al evaluarlos es muy alta, saturando el proceso de este tipo de operaciones.

para obtener el tipo de dato compatible con .net solo es necesario llamar esta instrucción.

Type tipodato = dr.GetFieldType(contadorcolumnas);

Donde contador columnas es un tipo de dato numérico, que indica la posición de la columna que estamos buscando


La mano invisible domina el mundo

181. Obtener los nombres de las columnas de una tabla desde SQL.


Siempre la forma mas rápida de acceso a una base de datos es usar características del lenguaje mas cercanas a código maquina, en este caso ADO.Net forma parte del núcleo de .net, por lo que siempre sera mas rápido.

Dentro del mismo ADO.Net hay funciones mas rápidas que otras, el dataReader, por su tamaño es mas pequeño y mas rápido que algún otro método de acceso a datos, por ello el siguiente código, es muy rápido para obtener los nombres de todos los campos.


                        SqlDataReader dr = cm.ExecuteReader();
                        Console.WriteLine("Determinando los campos de la tabla");
                        List<string> Columnas = new List<string>();
                        Console.Write("\n");
                        for (int i=0;i<dr.FieldCount;i++)
                        {
                            Columnas.Add(dr.GetName(i));
                            Console.Write(dr.GetName(i));
                            Console.Write(" ");
                        }

La mano invisible controla el mundo

180. Información de la tabla Information_Shema.Tables de mutiples bases de datos

La tabla Information_schema.Tables, es una vista muy útil ya que nos da la lista de tablas y vistas que tiene una base de datos, pero existen ocasiones en que es necesario consultar esta tabla desde otra base de datos que no es la origen.

Para ello es necesario invocar la tabla anteponiendo el nombre de la base de datos, de esta forma

select * from [base1].Information_schema.Tables


La mano invisible controla el mundo

179. Obtener el Id insertado en una tabla de SQL.

Para obtener el Identity con el que se ha insertado un valor en una tabla de una base de datos de SQL Server, existen 2 formas, una es por medio de @@Identity

select @@Identity

este nos va a dar la ultima clave de identidad que se inserto en la base de datos, pero no siempre es preciso, si se ejecuta un trigger por ejemplo y este genera clave de identidad, esta función  nos entregara la ultima identidad, es decir la del trigger, ademas de que si como consecuencia de la acción efectuada se modifico algo mas tenemos que hacer una segunda consulta para determinarlo.

Entonces ¿Como obtenemos los valores?

La respuesta es sencilla usando el parámetro Outout en el Insert, por ejemplo

insert into tabla1 OUTPUT Inserted.id values (xxx,xx1....)

Como pueden ver estamos pidiendo el valor del campo insertado Inserted.id

Esta función es muy util, por que en un update, por ejemplo podemos obtener el valor del cambo original y del campo que se actualizo, por ejemplo.

Update tabla1 set campo1 = 'xxxx' OUTPUT Deleted.campo1 as valor_original,Inserted.campo1 as valor_nuevo



Esta instrucción nos permite ver los valores de entrada y salida de una actualización



La mano invisible controla el mundo


martes, 15 de enero de 2019

178.Listar todas las tablas de MySQL

La instrucción para mostrar todas las tablas en una base de datos de mysql es:

show full tables from [Base_de_datos]

algo interesante es que también se pueden hacer consultas así

show full tables from [Base_de_datos] like '%Consulta%'


La mano invisible gobierna el mundo

miércoles, 9 de enero de 2019

177. The anti-forgery token could not be decrypted

Este es un error que muy comúnmente lo da iis sobre MVC, al momento de autenticar, lo que se hace para evitarlo es establecer un nuevo juego de llaves, para ello debemos entrar a la siguiente pagina:

http://www.allkeysgenerator.com/Random/ASP-Net-MachineKey-Generator.aspx

y genenerar una nueva clave, esta se debe colocar despues de

<system.web>

dentro del archivo config



felices lineas

lunes, 7 de enero de 2019

176. Fraggle Dos Attack

Este es un tipo de ataque para la historia al igual que el Smurf, los routers ya son inmunes a este tipo de ataque desde inicio de los 2000.

El ataque consistía en el envió de un paquete mal formado, que tenia como dirección de transmisión una dirección falsa que se encontraba dentro de la red a ser atacada.

Esto provocaba que se generara un trafico al interior de la red, y como consecuencia se diera la denegación de servicio.

Los routers actuales ya no tienen este comportamiento



La mano invisible gobierna al mundo

jueves, 3 de enero de 2019

175. Jolt Dos Attack

Este tipo de ataque busca consumir la capacidad procesamiento, actualmente ya es muy difícil de hacer ya que se detiene desde los firewall y en caso de llegar al equipo los procesadores no sucumben tan fácilmente.

El atacante envia una serie de paquetes UDP fragmentados y mal formados, de tal manera que el equipo destino intenta interpretarlos, al ser estos en gran cantidad, el procesador emplea mucho tiempo en interpretarlos y descartarlos, lo que origina la denegación de servicios para paquetes auténticos.

La mano invisible controla el mundo

miércoles, 2 de enero de 2019

174. Ajustar tamaño de una imagen C#


La siguiente función, permite ajustar el tamaño de un bitmap en C#


public Bitmap AjustarImagen(Bitmap imagen, Size Tamano)
{
                Bitmap imagenproceso = new Bitmap(Tamano.Width, Tamano.Height);
                using (Graphics g = Graphics.FromImage((Image)imagenproceso))
                {
                    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                    g.DrawImage(imgagen, 0, 0, Tamano.Width, Tamano.Height);
                }
                return imagenproceso ;
   }


La mano invisible controla al mundo