viernes, 26 de octubre de 2018

143. HTML eliminar el marco de una imagen que se usa como liga

Nuevamente una ayuda rápida, la pregunta es Cuando uso una liga de html con una imagen ¿Como logro que no me aparezca el marco que me indica que ya visite el sitio?

por ejempo

se muestra un marco de color que no se desea, se debe cambiar en el estilo de la imagen el borde

<a href="Documento.aspx" target="_blank"><img src="../Imagenes/Ayuda.png" style="width:50px;height:50px;border:0" alt="Detalle Motivos FC" /></a> 
 
Felices Lineas 





miércoles, 24 de octubre de 2018

142. SQL INFORMATION_SCHEMA.COLUMNS

La manipulación y análisis de datos es una de las principales tareas en esta area, no se puede decir que hay un buen programador que no maneja una base de datos eficientemente, si el motor de datos falla, todo el proceso falla.

La base no solo es insertar, actualizar, buscar y borrar, se debe estructurar toda la información para no generar problemas de rendimiento.

Vamos a platicar de una tabla de sistema que es muy útil en el análisis de una base de datos, sobre todo cuando se requiere comprender el esquema de la misma desde el mismo código, esta tabla también permite en muchos casos crear consultas dinámicas, no recomiendo mucho que la usen para esto, pero es posible

select * from INFORMATION_SCHEMA.COLUMNS

Una vez que se ejecuto esta consulta, sql despliega la información campo por campo de todas las tablas y bases de datos en la instancia

Felices Lineas

martes, 23 de octubre de 2018

141. Lynq II

Vamos a seguir aprendiendo un poco de lynq, si ya se que tengo varias cosas abiertas pero también eso tiene su razón de ser, la de generar curiosidad, la programación se mueve por curiosidad.

En SQL nosotros podemos tomar un conjunto de registros, esto lo hacemos para reducir nuestro universo o por que nos interesa solo una parte de ellos, en sql usamos el argumento top, asi desde sql podemos seleccionar un conjunto de datos con una instrucción como:

select top 10 from la tabla

pero que pasa en Lynq, podemos hacer esto, la respuesta es si, y de una forma muy sencilla

var lista = (from c in lstAlumno where c.Edad > 15 select c).Take(1);

y si ademas quisieramos meter un orden

var lista = (from c in lstAlumno where c.Edad > 15 select c).OrderBy(c=>c.Edad).Take(1);

Como pueden ver empesamos ha hacer una combinacion de lynq y lamda

Continuaremos el dia de mañana

Felices lineas



lunes, 22 de octubre de 2018

140. Lamda I

Así como lo mencione en el post anterior, nuestra labor es manejar datos, comprender analizar, .net nos brinda gran apoyo al momento de describir las instrucciones que queremos emplear, pero debemos saber de que herramientas contamos.

Las expresiones Lamda, es una forma en que se puede describir una serie de instrucciones de una forma concisa, que facilita la lectura al momento de efectuar una operación, la expresión lamda simplifica la escritura del código, escribiendo en este mismo operaciones que antes requerían una mayor estructura (uso de delegados).

¿Como la construimos?

C# nos entrega funciones preparadas para el uso de expresiones lambda, la expresión lamda es sencilla, se requiere solo una invocación al objeto y después al elemento del mismo siguiendo la estructura de la función que invocamos.

hagamos un ejemplo:


La aplicación tiene exactamente el mismo comportamiento qe la que usamos en el post 139. la diferencia es la forma en la que escribimos en código, en este caso en ves de emplear una expresión de lynq usamos expresiones lamda

var lista =  lstAlumno.Where(c => c.Edad > 10);

si la comparamos contra la expresión de linq


var lista = from c in lstAlumno where c.Edad > 15 select c;


en este caso se ve mas sencilla la representación con lamda, pero conforme la complejidad se incrementa linq ofrece grandes ventajas, en próximos post incrementaremos la complejidad de las consultas para compararlas entre ellas.


Felices lineas

139. Linq I

Estamos en un mundo en el que la información cobra vida, nunca antes en la historia de la humanidad se había tenido tal acceso a la información, sin embargo, la información es tanta que ha perdido el orden, como desarrolladores debemos poder analizar esta información, día a día se nos dan mas herramientas para hacer este tipo de análisis.

Así pues revisemos que opciones tenemos para poder manipular eficientemente la información.

¿Que es Lynq? 

Es un componente de la plataforma .NET que permite agregar capacidades de consulta de manera nativa a los lenguajes de .NET

Lynq nos permite tener acceso a objetos de datos y explorarlos de una manera sencilla.

Si sabes SQL sabes Lynq

veamos un ejemplo::



Revisemos la consulta

var lista = from c in lstAlumno where c.Edad > 15 select c;

Que hace, crea un objeto c que toma los datos de lstAlumno, busca en ese todos aquellos que tengan una edad mayor a 15 años y genera el nuevo objeto

Si ejecutamos el programa:




Felices Lineas



martes, 16 de octubre de 2018

138. Abrir un documento en una ventana nueva aspx

Para poder abrir un documento en aspx en una nueva ventana del lado de back end se debe poder este codigo, en la pagina en la que se envia el llamdo esto para invocar a window.open del lado de javascript

        Dim url As String = "MuestraDocumento.aspx?Documento=thinkpython.pdf"
        Dim target As String = "'_blank'"
        Dim script As String = "window.open('" & url & "'," & target & "," & "'status=no, menubar=no, toolbar=no,location=no');"
        Page.ClientScript.RegisterStartupScript(Me.GetType, "someUniqueId", script, True)

y en la pagina que recibe la informacion

    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        Response.ContentType = "application/pdf"
        Response.Clear()
        Response.TransmitFile("C:\Carlos\Libros\" + Request.QueryString("Documento"))
        Response.End()
    End Sub

Felices lineas

137. Abrir un pdf en asp.net en una nueva pestaña

Para poder abrir un pdf es necesario primero enviarlo, para ello seguimos el siguiente codigo

Response.ContentType = "application/pdf"
Response.Clear()
Response.TransmitFile("C:\Carlos\Libros\thinkpython.pdf")
Response.End()

Sin embargo esto no lo abre en una nueva pestaña, para ello es necesario al momento de llamar el boton del lado del cliente agregar lo siguiente:

OnClientClick="frmAyuda.target ='_blank';

por ejemplo


<asp:Button CssClass="btnAgregar" ID="btnAgregar" runat="server" Text="Agregar" OnClientClick="frmAyuda.target ='_blank';"/>

Felices lineas

136.Generar una cadena aleatoria de manera agil

Esta es una función rápida para generar una cadena alfanumérica aleatoria

 public string GeneraCadenaAleatoria(int longitud)
        {
            using (MD5 md5Hash = MD5.Create())
            {
                
                StringBuilder sb = new StringBuilder();
                while (sb.Length < longitud)
                {
                    byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(Guid.NewGuid().ToString());
                    byte[] hash = md5Hash.ComputeHash(inputBytes);
                    sb.Append(Convert.ToBase64String(hash));
                }
                return sb.ToString().Substring(0, longitud);
            }
        }

Felices lineas

jueves, 11 de octubre de 2018

135. MVC - Cambiar la complejidad del password usando identity framework

MVC permite la construcción de paginas ágiles, y un gran control sobre la estructura de las mismas, Visual Studio cuenta con plantillas para poder iniciar una pagina con características mínimas para poder empezar a trabajar, MVC emplea identity para poder efectuar la administración de accesos y autorizaciones, por default, Identity tiene algunas características definidas para los paswords pero en algunas ocaciones es necesario aumentar o reducir la complejidad, para ello se debe hacer esto:

Debemos ir a la carpeta App_Start donde encontraremos un archivo llamado IdentityConfig.cs


Abrimos el archivo y buscamos la sección:

public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) 

Dentro de esta encontraremos las características para definir el password

 // Configure la lógica de validación de contraseñas
            manager.PasswordValidator = new PasswordValidator
            {
                RequiredLength = 8,
                RequireNonLetterOrDigit = false,
                RequireDigit = false,
                RequireLowercase = false,
                RequireUppercase = false,
            };

Felices lineas

miércoles, 10 de octubre de 2018

134. Deep Freeze

Hoy quiero recomendar un software que permite la experimentación, convirtiendo la PC en un cajón de arena, de esta forma cualquier cosa que se haga en la PC se recupera con un simple reinicio, (cualquier cosa que afecte al sistema, esto no necesariamente tiene que ver con archivos de documentos), como desarrolladores siempre existe la curiosidad de jugar con partes internas del S.O. o modificar configuraciones, si bien existen las maquinas virtuales que nos permiten hacer esto libremente o maquinas en Azure, existen algunas veces, que es necesario hacer alguna modificación sobre algún equipo que no tiene estas características, principalmente por que se requiere que se cumpla con las características exactas de software y configuración.

Es en estos casos en que el producto es útil, ya que basta un reinicio para volver a la configuración original.

Les dejo la liga, para que lo analicen. https://www.faronics.com/es/products/deep-freeze/enterprise

Felices lineas

133. ¿Que esta haciendo mi servidor de SQL?

La salud de un servidor de SQL es muy importante, ya que una consulta muy pesada, un bloqueo, puede acabar con una aplicación completa, los contadores de performance de un servidor son una herramienta gratuita muy importante que nos permite ver prácticamente todo lo que hace un servidor, y estos pueden ser consultados por diversos métodos, vamos a revisar este tema mas adelante, si ya se que tengo varios temas abiertos pero es que sistemas es un mundo muy grande y si realmente quieren ser buenos arquitectos de sistemas deben conocer y ser expertos en todos los frentes, su labor es orquestar todos los recursos que tienen y aprovecharlos al maximo.

Hoy les dejo un query que les permite saber la actividad de su servidor de base de datos, para saber si un usuario esta abusando del servidor

SELECT es.session_id
    ,es.program_name
    ,es.login_name
    ,es.nt_user_name
    ,es.login_time
    ,es.host_name
    ,es.cpu_time
    ,es.total_scheduled_time
    ,es.total_elapsed_time
    ,es.memory_usage
    ,es.logical_reads
    ,es.reads
    ,es.writes
    ,st.text
FROM sys.dm_exec_sessions es
    LEFT JOIN sys.dm_exec_connections ec
        ON es.session_id = ec.session_id
    LEFT JOIN sys.dm_exec_requests er
        ON es.session_id = er.session_id
    OUTER APPLY sys.dm_exec_sql_text (er.sql_handle) st
WHERE es.session_id > 50   
ORDER BY es.cpu_time DESC

Que tengan felices lineas

lunes, 1 de octubre de 2018

132. Cambiar el esquema de un objeto en una base de datos

Para poder cambiar un objeto de una base de un esquema a otro se usa la instrucción

ALTER SCHEMA [Nuevo esquema] TRANSFER [Objeto];

para que sirve un esquema, un esquema es un agrupador, que nos permite organizar los objetos en la base de datos, de esta forma podemos saber el uso de los objetos, e implementar una seguridad por uso definiendo limites entre lo que puede ver o acceder cada grupo de usuarios