Listado de Ayuda Técnica
Manuales, Consideraciones y Ayuda para los usuarios, todo paso a paso y lo mejor explicado posible.
- App.Config/Web.Config Set/Get Value from AppSettings Section
App.Config/Web.Config Set/Get Value from AppSettings Section
Como obtener y modificar los valores de la sección AppSettings de un fichero de configuración app.config/web.config. Para que no se olvide
...using System.Web.Configuration; using System.Configuration; System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenMappedExeConfiguration( new System.Configuration.ExeConfigurationFileMap() { ExeConfigFilename = webconfigFile }, System.Configuration.ConfigurationUserLevel.None); string oldValue = config.AppSettings.Settings["SomeKey"].Value; config.AppSettings.Settings["SomeKey"].Value = "NewValue"; config.Save(ConfigurationSaveMode.Modified); - JQuery Post XML to MVC Controller Accepting POST parameters
JQuery Post XML to MVC Controller Accepting POST parameters
Comunicación Ajax GET / POST. Cuando iniciamos una comunicación AJAX y enviamos información al servidor, se puede hacer por GET (los parámetros concatenados en la URI de la Request) o por POST, quedando ocultos. No sólo eso, sino que los parámetros están internos en la Request. Una de las arquitecturas utilizadas en el desarrollo de un sitio web ASP.NET, para que quede el código un "poquito" estructurado, es JQuery + MVC. JQuery se encarga de la parte del Cliente y MVC (Modelo Vista Controlador) se encarga de separar la capa presentación de la capa de negocio. Una vez introducidos, si queremos enviar un XML por JQuery a través de AJAX y que nuestro "Controller" lo recupere sin problemas, podemos hacer lo siguiente. Parte JQuery que realiza la llamada AJAX hacia el servidor... - WCF, Logs de las Peticiones antes y despues de procesar, AfterReceiveRequest y BeforeSendReply
WCF, Logs de las Peticiones antes y despues de procesar, AfterReceiveRequest y BeforeSendReply
Utilizando IServiceBehavior y IDispatchMessageInspector podemos suscribirnos a los eventos después de recibir la "request" y antes de enviar la "response". Tener los logs de una comunicación son muy importantes. Lo diferente con en el caso de WCF (Windows Communication Foundation) es que prácticamente sólo configuramos, ya que casi todo el trabajo sucio lo hace .NET. Por este motivo es tan interesante este artículo, porque además de que WCF nos hace el mundo de la comunicación mucho más sencilla, también podemos registrar los mensajes recibidos y enviados. Existen otras técnicas para registrar toda la comunicación (System.Diagnostics), el problema que encontré es que podía llegar a dejar demasiada información, lo que me resultaba inservible. De todas las soluciones que estuve probando esta era la que mejor se adaptaba a lo que necesitaba. La clave está en crear un "CustomAttribute" para nuestro servidor, y que este registre la información que necesitamos.... - Suscribirse a los eventos del Visor de Sucesos para generar logs
Suscribirse a los eventos del Visor de Sucesos para generar logs
Suscribirse a los eventos del Event Viewer para imprimir logs relacionados con nuestra aplicación. Esto es útil si queremos que en un mismo fichero de logs aparezcan los logs de la aplicación y los logs que se generan en el propio visor de sucesos del Windows, directa (mediante "System.Diagnostics") o indirectamente (por error de la aplicación). Aunque parezca que no sea para tanto si que es interesante, como me ha sido útil en caso particular, me lo guardo para tenerlo bien apuntadito. Con el siguiente código tendremos suficiente para ir tirando y saber como suscribirnos a los eventos del event viewer.
...String LogMonitor = "Application"; if (EventLog.Exists(LogMonitor)) { if (eventLog == null) { eventLog = new EventLog(LogMonitor); eventLog.EntryWritten += new EntryWrittenEventHandler(EventLog_EntryWritten); eventLog.EnableRaisingEvents = true; } } - Acceso a Ficheros mediante credenciales de forma remota
Acceso a Ficheros mediante credenciales de forma remota
Interaccionar con los ficheros de otro pc utilizando las credeciales de usuario y password. Código de ejemplo para conectarse a un servidor mediante login para poder copiar, borrar o renombrar ficheros de forma remota. Para poder acceder a los ficheros de otro pc que esta protegido con usuario y contraseña, necesitamos utilizar la librería "advapi32.dll", la cual se conecta al servidor utilizando el método "LogoUser". Una vez estamos conectados nos devuelve por referencia un manejador del usuario indicado A pointer to a handle variable that receives a handle to a token that represents the specified user. MSDN. Una vez tenemos el manejador del usuario, ya podemos inicializar una nueva instancia de la clase WindowsIdentity con este usuario. Así cuando accedamos a los ficheros no nos dará error de acceso denegado ni nada parecido, porque estaremos utilizando la cuenta de windows especificada anteriormente. A continuación, un posible ejemplo del código que nos puede interesar.... - Reminder: Group/Ungroup y Lista de Valores en Excel
Reminder: Group/Ungroup y Lista de Valores en Excel
Como Agrupar filas y como poner varios valores seleccionables tipo ComboBox en una celda del excel. Consiste en agrupar filas para que aparezca el simbolo +/- para plegar o desplegar, tipo "collapsable" o "accordion". Por otro lado consiste en configurar celdas como ComboBox con una lista de valores. El siguiente paso (opcional) esta en configurar el formato de las celdas en función de un texto concreto. Es una operación que hemos repetido varias veces, sabemos que existe, pero nunca nos acordamos de como volverlo hacer. Así que escribo el recordatorio de como Agrupar filas, y como generar lista de valores para utilizar en celdas concretas.... - Explicación UTF-8 Encoding y porque el XmlDocument da problemas
Explicación UTF-8 Encoding y porque el XmlDocument da problemas
La codificación UTF-8 es una de las más utilizadas para representar cualquier carácter Unicode. La codificación usa símbolos de longitud variable (de 1 a 4 bytes por carácter unicode). Es decir, que 1 carcater unicode puede ocupar hasta 4 bytes, cuando en ascii 1 caracter es 1 byte. Una forma de identificar que el texto esta codificado en UTF-8 es con el BOM Byte Order Mark, que son una serie de 3 bytes concretos. Útil por ejemplo en el envio de texto por stream.
...un carácter 0xFEFF, codificado en UTF-8 como 0xEF,0xBB,0xBF o 239 187 191 - Tip: Como Ampliar/Extender Disco en Windows XP SP3
Tip: Como Ampliar/Extender Disco en Windows XP SP3
Como ampliar o extender el disco o partición en un Windows XP. En ocasiones necesitamos ampliar el disco de una máquina virtual (virtual machine) o ampliar el espacio de una partición del disco. Para poder hacerlo necesitamos "espacio no utilizado". Esto se consigue si existe espacio no asignado a ninguna partición y no esta formateado. (creo, no soy de sistemas). Desde una máquina virtual con VMWare es sencillo ampliar el espacio del disco: "VMWare: Settings - seleccionar Hard Disc - Utilities - Extend." El problema con windows xp, es que no autodectecta que el disco ha crecido. El nuevo espacio asignado no lo reconoce, por lo que hay que indicarle al sistema que el disco a crecido y que lo extienda.Posible Solución
... - Actualizar JDKHome de NetBeans (Or java Platform)
Actualizar JDKHome de NetBeans (Or java Platform)
Para actualizar la versión del JDK que utiliza NetBeans para ejecutarse, tenemos que modificar el fichero netbeans.conf. Por defecto se encuentra en "C:\Programs Files\[NetBeans Folder]\etc" y modificar la clave netbeans_jdkhome.
...netbeans_jdkhome="C:\Program Files\Java\jdk1.7.0_03" - Compatibilidad en aplicaciones .Net con diferentes versiones del Framework .Net
Compatibilidad en aplicaciones .Net con diferentes versiones del Framework .Net
Cuando desarrollas utilizando un Framework .Net y la máquina destino tiene otra versión. Es decir, por ejemplo desarrollas utilizando VS2008 y Framework 3.5 y el Ordenador destino tiene instalado el Framework 4.0. Esto no quiere decir que tenga por obligación el Framework 3.5 instalado, y al arrancar la aplicación dará un error. Compatibilidad Versiones .Net Framework MSDNDe manera predeterminada, una aplicación se ejecuta en la versión de .NET Framework para la que se creó. Si esa versión no está presente y en el archivo de configuración de la aplicación no se han definido las versiones compatibles, puede producirse un error de inicialización de .NET Framework. En este caso, el intento de ejecutar la aplicación no tendrá éxito.
... - Diferencias entre Clases y Estructuras (Structs) C#
Diferencias entre Clases y Estructuras (Structs) C#
La principal Diferencia entre Classes y Structs es que una es por referencia y la otra por valor. Leyendo el artículo de Koalite comencé a sentir curiosidad sobre el tema, es por ese mismo motivo por el que me dirigí directamente al artículo de la MSDN que mencionaba.Una clase es un tipo de referencia. Cuando se crea un objeto de la clase, la variable a la que se asigna el objeto solo incluye una referencia a dicha memoria. Cuando la referencia a objeto se asigna a una nueva variable, la nueva variable hace referencia al objeto original. Los cambios realizados en una variable se reflejan en la otra variable porque ambas hacen referencia a los mismos datos.
... - PHP:Obtener la Pagina Actual Function PageURL
PHP:Obtener la Pagina Actual Function PageURL
Método en PHP para Obtener la página actual. Teniendo en cuenta si conexión segura o si utiliza un puerto específico. En alguna ocasión puede ser interesante saber en que páginas estamos, por esta razón y por ser un método lo bastánte genérico como poderlo utilizar desde cualquier sitio, nos los guardamos y nos lo apuntamos para futuras referencias.... - Tip: Convert java project to web project in eclipse
Tip: Convert java project to web project in eclipse
Como convertir un proyecto java en un proyecto web en eclipse. Sin tener en cuenta el motivo, cuando Eclipse reconoce una aplicación como "Java project", y queremos asociarla a nuestro servidor web (p.ej. Tomcat) puede darnos el siguiente error:the selection did not contain any resource that can run on a server
Es normal, un proyecto java no es considerado un proyecto web, por lo tanto no puede ejecutarlo en un servidor web. Por ese mismo motivo tenemos que convertir el proyecto, para que esta asociación la tenga en cuenta. Otro tema es la forma de como trabajemos, como si queremos desplegar el war manualmente.... - CSS: Trucos y Efectos con imágenes
CSS: Trucos y Efectos con imágenes
Efectos con imágenes con CSS (reflejo, bordes difuminados, pulsado, ...) y multitud de trucos realmente interesantes (rotar imagenes, desplazar enlaces, ...) No es la primera entrada que escribo recopilando artículos relacionados con el CSS, por eso cuando vemos algo realmente interesante nos gusta tenerlo apuntado.... - Como activar el Hibernar en Windows Vista
Como activar el Hibernar en Windows Vista
Cuando la opción Hibernar no aparece en el menu para apagar el Ordenador. Es una de las opciones que poca gente utiliza, pero una vez te acostumbras es muy útil de utilizar. No todos los ordenadores soportan esta opción. La diferencia entre Suspender e Hibernar, es que el primero te consume batería y el segundo no. En el modo hibernar, el ordenador guarda el estado y se apaga totalmente, de ahí lo importante de utilizar esta opción de apagado.Hibernar: La hibernación es un estado de hipotermia regulada, durante algunos días, semanas o meses, que permite a los animales conservar su energía durante el invierno En Informática: En este modo el contenido de la memoria se guarda en el disco duro, tras lo que el ordenador se apaga completamente. Al volver a iniciar el ordenador, el usuario se encuentra con todas las aplicaciones que tenía abiertas en el estado en el que se encontraban antes de hibernar.
Como solucionar el hibernar
... - Control De Versiones: Nombres de ramas (branch) para el desarrollo paralelo
Control De Versiones: Nombres de ramas (branch) para el desarrollo paralelo
Opinión sobre la nomenclatura de las diferentes ramas para el desarrollo de diferentes versiones. Tengamos en cuenta diferentes aspectos. Por mi propia experiencia, puedo decir que una versión puede comenzar con una alcance, una serie de especificaciones, las cuales no son ni mucho menos fijas. Es decir, una requerimiento puede saltar de una versión a otra en función de las necesidades.El Cliente
... - Javascript Library: Tamaño de Fuente flexible a diferentes dispositivos
Javascript Library: Tamaño de Fuente flexible a diferentes dispositivos
FitText, Librería que adapta el tamaño de la fuente de diferentes diseños web para adaptarse a los diferentes dispositivos que nos encontramos, como Ordenadores de Sobremesa, Tablets o Smartphones. Aunque la primera idea que se nos viene a la cabeza es utilizar CSS, con una librería Javascript nos da más poder a la hora de adaptar nuestros diseños a los diferentes dispositivos.... - No se pueden ejecutar dos versiones diferentes de ASP.NET en el mismo proceso IIS
No se pueden ejecutar dos versiones diferentes de ASP.NET en el mismo proceso IIS
Cuando el visor de sucesos aparece error de ASP.NET con el mensaje "No se pueden ejecutar dos versiones diferentes de ASP.NET en el mismo proceso IIS. Utilice la herramienta de administración de IIS para volver a configurar el servidor y ejecutar la aplicación en otro proceso separado." Como el mensaje bien dice, esto es provocado porque en el mismo proceso se están ejecutando diferentes versiones del Framework de .NET. (vía Msdn). Lo que implica que el IIS no esta bien configurado, y que en el mismo grupo de aplicaciones existen sitios web usando diferentes versiones del Framework.netSolución
... - TODO List o Task List Comments en Visual Studio 2010 Express Edition
TODO List o Task List Comments en Visual Studio 2010 Express Edition
Obtener una lista de Tareas "TODO" en Visual Studio 2010. Dada las necesidades, nos venía bien ir dejando una lista de Tareas pendientes en el código para ir solucionandolo después. El problema es que por defecto en Visual Studio 2010 no aparece la view Task List. Investigando un poco he encontrado un comentario en forum.asp.netTo make the Task List menu item shown, you need to enable Expert Settings by selecting Tools -> Settings -> Expert Settings.
Esto significa que podemos activar los settings del Visual Studio a nivel Experto, de esta forma aparece la vista de Tareas Pendientes. A continuación sólo tenemos que seguir las indicaciones de la msdn para ir creando TODO en los comentarios y como visualizarlos.... - .NET: Declarar Métodos y Clases como Obsoletas o Deprecates
.NET: Declarar Métodos y Clases como Obsoletas o Deprecates
Cuando queremos definir métodos y clases obsoletas o "deprecadas" en .Net. Es común que se generen nuevos métodos, mejores y más optimizados que los anteriores. Por eso es conveniente indicar de alguna forma que los métodos o clases antiguas son obsoletas, para que nadie las vuelva a utilizar. Esto se consigue con el atributo System.Obsolete (msdn)3 Maneras de Definir Obsoletos y Deprecados
Aunque recomiendo usar cualquiera de las dos últimas.... - Tab ASP.NET missing o que la Pestaña ASP.NET del IIS no existe
Tab ASP.NET missing o que la Pestaña ASP.NET del IIS no existe
Que hacer cuando desaparece la pestaña ASP.NET del IIS para configurar la version del Framework.net. El problema parece ser que se provoca después de instalar algo en el Servidor, que deja un poco "tocado" el IIS. Vamos "Que la hemos liao Parda". Este problema me lo he encontrado recientemente, y como no son nuestros servidores tampoco podemos saber que se ha instalado y que no. Lo único que nos queda es solucionarlo. Por seguridad, lo primero sería Reinstalar o Reparar, los Framework .net y Reiniciar el Servidor. Si con esto no se soluciona (que es lo más probable), tenemos un problema.Posibles Soluciones
... - CSS: Dinamico y para revisar errores
CSS: Dinamico y para revisar errores
Enlaces para usar CSS dinámicamente con Less y herramienta CSS Lint para analizar y detectar errores en nuestros ficheros CSS. Usar CSS Dinamicamente con Less Analizar y detectar errores... - Utils: Gmail, AVG Scanner-links, RemoteDroid
Utils: Gmail, AVG Scanner-links, RemoteDroid
Varias utilidades relacionadas con GMail, Seguridad y Android. AVG Link Scanner nos sirve para identificar enlaces seguros o peligrosos, RemoteDroid nos permite convertir el teléfono móvil Android en un mando a Distancia para el PC, y por último una nueva funcionalidad del GMail que permitirá descomprimir Zips y Rars para ver su contenido sin necesidad de descargar el fichero.... - Como publicar "Publish Web" con Visual Studio Express Edition
Como publicar "Publish Web" con Visual Studio Express Edition
Vamos a Explicar como publicar con aspnet_compiler.exe dado que en las versiones Express Edition no existe la opción "Publish Web". Aunque existen trucos para crear la opción de publicar un sitio web con algunas versiones del visual studio (VS2008 Express Edition), en la versión Web Developer VS2010 Express Edition no lo hemos logrado. Por ese motivo vamos a explicar como crear un método para publicar sitios web por línea de comando con aspnet_compiler.exe.Aspnet_compiler.exe
La herramienta de compilación de ASP.NET (Aspnet_compiler.exe) hace posible la compilación de una aplicación Web ASP.NET, en el propio lugar donde se encuentra o para implementarse en una ubicación de destino como un servidor de producción
... - RePost: Solucion al error 0×80070646, error 646 y error 1606 al instalar actualizaciones
RePost: Solucion al error 0×80070646, error 646 y error 1606 al instalar actualizaciones
Apuntamos la solución al error al instalar actualizaciones por si en algún caso nos ocurre. Tal como nos explican en support.microsoft el problema consiste en:Cuando intenta instalar actualizaciones para aplicaciones de Microsoft Office mediante Windows Update o Microsoft Update, es posible que reciba uno de los siguientes códigos de error. Error 1 Error 2 Error 3 0x80070646 646 "Error 1606. No se puede obtener acceso a la ubicación de red %APPDATA%"
Si te ocurre este error es posible que el problema esté provocado por un valor incorrecto del Registro.... - C#: Diferencia entre (string), Operator as y ToString al leer de un IDataReader
C#: Diferencia entre (string), Operator as y ToString al leer de un IDataReader
Diferencias en la conversión de datos a String cuando trabajamos con bases de datos. Existen diferentes opciones como la conversión explícita o Cast o llamar al método ToString. El objetivo del artículos es entender las diferencias, así entenderemos porque ocurren algunos errores, y porque una opción es más rápida que la otra.Cast (String) and Operator As
(string)Reader[0] o el Operador as es un "cast", una conversión explícita "...if a conversion cannot be made without a risk of losing information,...". En base de datos se aplica cuando se sabe que el campo es de tipo String o puede ser convertido a String sin peligro.... - 3ToDo: Velocidad de Analytics, Imagenes a Efecto Dibujo y Cachear con PHP
3ToDo: Velocidad de Analytics, Imagenes a Efecto Dibujo y Cachear con PHP
3 Cosas a tener en cuenta para Analizar, Diseñar y Desarrollar en nuestros proyectos webs. Medir la velocidad de carga de las páginas en segundos desde Analytics es un dato realmente interesante, para darse cuenta que tipo de páginas son las que más tardan en cargar. En cuanto al diseño, en ocasiones vienen bien imágenes con un Efecto Dibujo (efecto pintado a mano). La idea es poder crear este efecto sin necesidadd de tener conocimientos de PhotoShop. Por último, saber como crear páginas estáticas para la cache a partir de páginas dinámicas PHP.... - Cursos y Manuales: Protocolo HTTP, Dominios, SEO, HTML5, ... por @Durky
Cursos y Manuales: Protocolo HTTP, Dominios, SEO, HTML5, ... por @Durky
Javier Casares ha dado algunos cursos estas últimas semanas, y la documentación utilizada la pone a disposición de la web. Es de agradecer que estos documentos puedan ser accesibles. Dado que la información que ofrece es realmente interesante y muy útil para una optimización web, y sobre todo para "Acelerar tus proyectos en Internet". Protocolo HTTPprotocolo HTTP y redirecciones y otras cosas varias
Dominiosqué es un dominio, cuál es el proceso de registro, tipos de dominio, estados, transferencias…
Arquitectura de la Informacióncómo deberían ser las direcciones URL, detalles sobre los robots.txt, Sitemaps XML, rel-canonical o meta-noindex.
HTML5los nuevos elementos (los más interesantes), los que desaparecen y cosas bastante estándar como los meta-tags, los enlaces o las relaciones entre elementos.
SEO para Contenidosdistintos “tags” que tiene el HTML para mejorar la calidad en los textos… los títulos o el uso de las herramientas para webmasters
SEO para el Diseñoun poco de HTML5, el nuevo estándar de Web Timing para calcular la carga de las páginas, un poco de Web Performance en imágenes, CSS y JavaScript… además de algunas herramientas para la optimización de imágenes y Flash.
... - xDebug Php For NetBeans and EasyPhp
xDebug Php For NetBeans and EasyPhp
Como Configurar xDebug en EasyPhp para poder debuggar desde NetBeans. Poder poner BreakPoints (Puntos de Ruptura) en desarrollos es importante, tanto que no pensamos en desarrollar sin esta posibilidad. El problema es que con Desarrollos PHP esta configuración no viene preestablecida por defecto, y el motivo es porque PHP no pose un IDE oficial. Nosotros utilizamos NetBeans para el Desarrollo Web en PHP, este es nuestro IDE, y por eso vamos a configurar la librería xDebug para poder debugar nuestro código PHP en NetBeans. PHP es código de servidor, por lo que necesita un Servidor Web. EasyPhp es un paquete de instalación que provee de Apache + PHP + MySql configurados por Defecto, toda una ventaja para los entornos de desarrollo.Pasos para Configurar xDebug en EasyPhp
... - Configurar Servidor Subversion en DropBox
Configurar Servidor Subversion en DropBox
Como configurar un servidor subversion gratuito utilizando Dropbox como repositorio de código. Dropbox es un almacenamiento de disco duro alojado en la Nube, accesible desde cualquier ordenador con conexión a Internet y cualquier sistema operativo. Subversion es uno de las aplicaciones más extendidas para la gestión y control del código fuente.Idea Previa
Subversion sirve para el control de versiones de nuestro desarrollo. Consta de una parte Servidor y de otra Cliente. La parte Cliente la gestiono con Tortoise, ¿Pero donde ubico el Servidor y que sea accesible desde todos mis Ordenadores? ¿Y Gratuito?. DropBox almacena información en la Nube y puedo acceder a mis datos desde cualquier Ordenador. ¿Puedo utilizarlo como Servidor Subversion? ¿Como instalo el Servidor de Subversion en el Disco Duro Virtual de DropBox?... - Crear Virtual Machines con VMWare Player
Crear Virtual Machines con VMWare Player
VMWare Player es una aplicación cliente gratuita para ejecutar máquinas virtuales VMWare. Por defecto No permite crear nuevas máquinas virtuales. En la mayoría de los casos no hace falta, porque no estamos creando máquinas virtuales todos los días, pero en alguna ocasión es interesante crear una máquina virtual para poder realizar nuestras pruebas antes de "liarla parda" en nuestro Ordenador.Crear Máquinas Virtuales con VMPlayer
... - Ejecutar iisreset desde codigo y como saber si se ha reiniciado el iis
Ejecutar iisreset desde codigo y como saber si se ha reiniciado el iis
Para reiniciar el IIS sólo hay que ejecutar el Comando iisreset. El comando iisreset.exe se encuentra en "C:\Windows\System32\". Cada vez que se ejecute parará todos los servicios web y los volverá a iniciar. Para saber y conocer el registro del servicio IIS hay que ir al "Visor de Sucesos" subapartado "Sistema". El origen del log es IISCTLS. Al ejecutar el comando iisreset veremos dos logs del tipo:Recibido comando de detención de IIS del usuario NT AUTHORITY\SYSTEM. El dato registrado es el código de estado.
Recibido comando de inicio de IIS del usuario NT AUTHORITY\SYSTEM. El dato registrado es el código de estado.
Código para Ejecutar el Comando iisreset desde C# .Net
... - Reflection: Utilidades para Crear y Ejecutar Metodos de clases Dinamicas
Reflection: Utilidades para Crear y Ejecutar Metodos de clases Dinamicas
Como podemos crear o invocar métodos de clases dinámicas en C# .NET. La clave se encuentra en el espacio de nombres (namespace) System.Reflection del Framework de .Net para crear y utilizar métodos o propiedades dinámicas. Este "namespace" nos permite crear Clases dinámicamente, obtener sus propiedades o invocar a métodos concretos, entre otras cosas. Cuando deseamos realizar alguna operación dinámica con alguna Class o Type concreto es muy posible que acabemos en este espacio de nombres.... - Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive.
Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive.
La configuración del IIS es incorrecta. En las propiedades del Sitio Web configurado en el ISS, configurar en la pestaña ASP.NET el Framework 4.0 en lugar de la versión 2.0. Para las soluciones sencillas y rápidas. Que todo sea esto.... - C#: Convert DbType to SqlDBType
C#: Convert DbType to SqlDBType
Clase para convertir de tipos de datos .net (dbType) a tipos de datos de base de datos (SqlDbType). La clase esta extraída de dotnetpulse que es quien realmente ha realizado todo el trabajo, por lo que el mérito es de ellos. Pero como es una clase realmente interesante y muy útil, he decidido que también quería guardarla en los apuntes de tectonilogia.com. El uso es realmente sencillo para convertir entre tipos de datos .Net Type , SqlDbType and DbType._DbType = DbConverter.ToDbType(mySqldbType); _SqlDbType = DbConverter.ToSqlDbType(myDbType);Clase para convertir datos de base de datos
... - Application Configuration File: App.Config para una Class Library
Application Configuration File: App.Config para una Class Library
Fichero de configuración de la aplicación para una librería de clases c#. Se puede cargar el fichero App.Config de un Assembly cualquiera. También tenemos la libertad de crear y definir nuestra propia section en el fichero de configuración, para poder cargar la información en una clase propia. Sabiendo que una librería puede tener su propio fichero de configuración y que podemos crear clases personalizadas ¿Que nos queda? ¿Saber donde se ubicará el fichero? Tenemos que pensar donde estará ubicado y como gestionaremos la información de este fichero. La elección es nuestra. Es decir, si tenemos un sitio web con su fichero de configuración web.config y una librería con un app.config ¿Donde ubicaremos la información de la librería y como la cargamos? ¿porque no utilizamos el fichero de la aplicación?.... - C#: Crear Secciones Personalizadas en el Fichero de Configuracion app.config,web.config
C#: Crear Secciones Personalizadas en el Fichero de Configuracion app.config,web.config
El app.config o el web.config son ficheros de configuración que ofrece .Net., aparte del fichero de recursos de Settings. Por defecto estos ficheros ya posen secciones para almacenar diferentes settings sencillos (appSettings) y para las cadenas de conexión (connectionstrings). Pero en algunos casos podemos personalizar y crear nuestra propia section y su clase asociada para poder trabajar con los datos.Crear una Section Personalizada siguiendo un ejemplo
Comezaremos mostrando una seccion personalizada que iría dentro del app.config o web.config del proyecto.... - Tip: is:unread Para Mensajes No Leidos en GMail
Tip: is:unread Para Mensajes No Leidos en GMail
Como saber los correos no leídos de forma rápida y sencilla. GMail permite archivar y acumular millones de correos electrónicos. En ocasiones vas dejando los correos sin leer para mirartelos más adelante. Esto a su vez provoca que los correos no leídos los puedas tener en diferentes páginas, y tengas que utilizar la búsqueda configurable para que sólo te muestre los "Mensajes no leídos".... - Runtime Error 6034 al Arrancar NetBeans
Runtime Error 6034 al Arrancar NetBeans
Instalar NetBeans con el error Runtime R6034 y con OpenJDK. Recientemente me visto metido en este tipo de problemas. Una Máquina Virtual VMWare con Visual Studio 2008 y NetBeans. Pero el proyecto NetBeans utiliza OpenJDK y no la distribución Java de SUN.Error Runtime Error R6034 Según MSDN Microsoft
Revisando la información que da la MSDN de Microsoft relacionada con este error C Run-Time Error R6034 ProblemaAn application has made an attempt to load the C runtime library without using a manifest. This is an unsupported way to load Visual C++ DLLs. You need to modify your application to build with a manifest. For more information, see the "Visual C++ Libraries as Shared Side-by-Side Assemblies" topic in the product documentation.
Posible Solución... - Nuevo Theme WordPress
Nuevo Theme WordPress
Nuevo Theme para Tectonilogia.com. De momento hay que perfilarlo un poco y vigilar la velocidad de carga, a ver si con tanta imagen se resiente. Si queréis ver las diferencias entre antes y ahora... - All Cheat Sheets en Cheat-Sheets.org
All Cheat Sheets en Cheat-Sheets.org
Mini chuletas y manuales de referencias de todo. "Quick Reference Guide" de diferentes lenguajes de programación, sistemas o cualquier ayuda rápida que queremos encontrar. las "Cheat Sheets" son Chuletas o Hojas de Trucos tipo esquemas que te muestran todos los métodos o utilidades más importantes de un lenguaje o sistema concreto. Recientemente he encontrado una página encargada en recopilar y reorganizar las Mini Guias Rápidas en un sólo lugar, con la posibilidad de descargar o de visualizar.http://www.cheat-sheets.org/
Espero que os sirvan como a mi.... - Como hacer Contraseña Complicadas y Sencillas de Recordar
Como hacer Contraseña Complicadas y Sencillas de Recordar
La vida y el mundo online requiere de registros de usuarios y contraseñas. Existen diferentes técnicas para que una persona malintencionadatrate de robar una contraseña y hacerse con los servicios de tu cuenta. Muchas personas o sistemas te recomiendan contraseñas demasiado complejas, difíciles de recordar. También es muy común escribir las contraseñas en el Correo, Post-iT, ficheros de texto, por lo que la seguridad esta comprometida igualmente. ¿Quien utiliza su fecha de cumpleaños para la contraseña? ¿Quien utiliza su DNI? ¿Quien utiliza la contraseña de la cuenta de correo para todo?Truco o Tip para Passwords
Utilizar la combinación de 3 palabras sencillas y comúnes, esto provoca 2 cosas Es fácil de recordad, porque consta de un patrón que conocemos nosotros, y al ser palabras sencillas y comunes nos acordaremos Es complicado y muy difícil de descifrar. Ejemplo de Palabras Comunes [hoy, ayer, dia, con, esto, el, que, cuando, por, ...] Cualquier palabra que queramos pero que sea fácil de recordar para nosotros. Ejemplo de Contraseña: "hoyporayer"... - Como hacer el Update de una Pagina aspx con un UpdatePanel, un Thread y un Timer
Como hacer el Update de una Pagina aspx con un UpdatePanel, un Thread y un Timer
Generar un proceso largo que actualice el contenido de la página desde un Thread y a través de un UpdatePanel. Cuando queremos generar un proceso muy largo desde una aplicación web, y queremos que el progreso del proceso actualice información de la página web, podemos hacerlo con un UpdatePanel y un poco más. Cuando el proceso que queremos ejecutar es tan pesado que decidimos ponerlo dentro de un Thread, aún complicamos más el refresco de pantalla, por eso vamos a exponer los pasos y los conceptos.Update Panel
El UpdatePanel utiliza tecnología Ajax para actualizar una parte de la página web, y no forzar el refresco de la página entera. Una técnica muy utilizada en aplicaciones asp.net. Imaginemos que tenemos el siguiente UpdatePanel.
Cuando pulsamos sobre el botón "BtnExecute1" podemos actualizar la label "lblActualizar" y refresacará sólo el UpdatePanel. Para ello podemos utilizar el método Update del UpdatePanel.<asp:UpdatePanel ID="updProgreso" runat="server" UpdateMode="conditional"> <ContentTemplate> <asp:Label ID="lblActualizar" runat="server" Text=""></asp:Label> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="BtnExecute1"/> </Triggers> </asp:UpdatePanel>
Desde la parte del cliente viaja a la parte del Servidor, y cuando regresa es cuando actualiza el contenido de la etiqueta....lblActualizar.Text = "Actualizamos la etiqueta"; updProgreso.Update(); - Como Permitir Acentos en la URL con .NET
Como Permitir Acentos en la URL con .NET
¿Acentos en la URL? en ocasiones se generan urls automáticas con parámetros, los cuales tienen acentos. Esto puede dar problemas con el encoding a la hora de recuperar la información. Dependiendo de la aplicación y las necesidades de cada uno pueden solucionarse el problema de diferentes formas. Si por el ejemplo son dos aplicaciones que se envían información mediante "http", lo más normal es utilizar las clases "System.Web.HttpUtility.UrlEncode" o "System.Web.HttpUtility.UrlDecode", definiendo previamente el "Encoding" que se va a utilizar. Pero esta solución en ocasiones no es posible aplicarla. En mi caso particular, cuando la url se genera desde un Word. El Documento Word llama a una página web la cual recibe una serie de parámetros. Los parámetros que recibe la página web pueden llegar a tener acentos. En este caso no puedo utilizar las clases encode y decode y es necesaria otra solución.Configurando el Encoding en el Web.Config
El problema se ha solucionado configurando las url de entrada y salidas con un encoding capaz de soportar acentos.
De esta forma cuando se quiere recuperar un parámetro a través del QueryString["campo"], da igual que el valor del parámetro tenaga o no acento, porque lo recupera correctamente....<system.web> ... <globalization requestEncoding="windows-1252" responseEncoding="windows-1252" culture="es-ES"/> ... </system.web> - IncludeText y agrega una pagina web en un documento word
IncludeText y agrega una pagina web en un documento word
Con la posibilidad del MergeField puedes generar Plantillas Word para combinar correspondencia. Para eso es preciso conectar un documento word conectado a una consulta de base de datos o similar. Pero que ocurre cuando la consulta es demasiado compleja o cuando queremos mostrar información que no se puede obtener a través de la consulta original. Con el Campo IncludeText podemos incluir un fichero de texto.Inserta el texto y los elementos gráficos contenidos en el documento indicado. Puede insertar el documento completo o una parte del mismo. Si es un documento de Microsoft Word, sólo puede insertar la parte a la que hace referencia un marcador o si el documento es un archivo XML, sólo puede insertar el fragmento al que hace referencia una expresión XPath. Anteriormente, este campo se denominaba campo INCLUDE
Gracias al Campo IncludeText podemos incluir dentro de un documento Word la información de una página web de la siguiente forma
IncludeText llama a mipagina.aspx, esta recupera el valor pasado como parámetro y construye el html. El Word recupera el Html generado y lo pinta dentro de la plantilla. Supongo que no se podrán construir páginas muy complicadas, pero a mi para generar Tablas y mostrar datos me funciona de sobra. Como requerimiento es necesario tener una aplicación web en la misma máquina desde donde se genera la plantilla Word. Esto no es posible en muchos casos. Espero que sea de ayudar....{IF 1 = 1 "{INCLUDETEXT "http://localhost/CustomWeb/mipagina.aspx?id={REF NombreCampoId}}" ""} - Diseño de una perfecta pagina de destino
Diseño de una perfecta pagina de destino
En kissmetrics nos muestran el diseño de una perfecta Landing Page (página de destino), en nuestro wordpress el fichero single.php. Titulares de la página Titulares limpios y concisos Gramática impecable Indicadores de confianza Usar Strong para llamar la atención Los botones y acciones deben destacarse Los enlaces deben ser sencillos y accesibles Imagenes y vídeos relacionados Mantenerse siempre arriba Test Clickar en la imágen para verla en grande vía kissmetrics... - Goo.gl, Trucos Wordpress, Webs desarrollo Web y más Herramientas
Goo.gl, Trucos Wordpress, Webs desarrollo Web y más Herramientas
Enlaces interesantes sobre desarrollo y tecnología de esta semana Blogs de Desarrollo Web Lista con 50 Blogs de desarrollo y tecnología. Apuntados para echarle un vistazo y seguir a unos cuantos. namespace con Javascript Interesante Artículo sobre javascript, información de porque no utilizar variables Globales y como deberíamos hacerlo. Trucos Wordpress Lista con 30 posibilidades sobre Wordpress. Por lo menos a algunos puntos les echaré un vistazo con más atención. API goo.gl Otro acortador de enlaces tipo bit.ly, pero este es de Google Crear un Avatar Online Herramienta online para crear tu propio Avatar. Me la guardo porque cuando tenga tiempo modifico y adapto el Theme del Blog. Chrowety Una extensión para chrome que es un cliente para Twitter... - Lo Mejor de #Tectonilogia del 2010
Lo Mejor de #Tectonilogia del 2010
Recopilación de Artículos publicado en Tectonilogia.com. De todo lo que se ha escrito el pasado año, vamos a refrescar aquellos artículos agrupados por su categoría principal (Ayuda Técnica, Diseño, Moviles, Programacion, Seguridad, Sistemas). No vamos a refrescar los artículos más visitados, sino que en su lugar ponemos en una lista todos los artículos que desde nuestro punto de vista nos parecen mejores y más interesantes.Ayuda Técnica
73+ Plugins Con Ajax ,Seguridad, Mantenimiento y otros Recopilación de plugins interesantes para Wordpress Alternativa al Adsense Asincrono, para mejorar la velocidad De momento Adsense no es Asíncrono, una de las mejores maneras para cargar el Script y que impacte lo menos posible en el rendimiento de la página. Insertar Codigo Html, Php, … desde un QuickTag de WordPress Código Javascript llamado desde el QuickTag de Wordpress, para que transforme los carácteres "especiales" en ASCII HTML. Listado completo de Ayuda TécnicaDiseño
Round-Corners y Gradient CSS para Todos los Navegadores Colección de Colección de Iconos Efecto Llamas con PhotoShop Listado completo de DiseñoMoviles
Aunque los artículos han estado centrados en las grandes novedades y características de los Smartphones Android o IPhone. Aplicaciones Android utiles para el Movil Destacar un artículo específico de Libros y Herramientas para Leer Libros en Android Htc Wildfire vs Htc Desire Apple con lo Nuevo y los Problemas del IPhone 4 Aunque todavía sigue siendo el Smartphone mejor considerado por muchos (Rendimiento, Pantalla, Navegación) Listado completo de MovilesProgramación
Errores Tipicos de bases de datos cometidos por los Desarrolladores Llamadas al servidor desde el cliente con DoCallBack y DoPostBack ASP.NET Como crear una Sesion Infinita o que no caduca nunca Como ejemplo de las diferentes herramientas que podemos encontrar en esta Categoría. Listado completo de ProgramaciónSeguridad
Centrado en como prevenir Malware utilizando el sentido común (si se puede), recomendando Antivirus y prevenir de las nuevas amenazas que surgen. El Mejor Antivirus 2010 / 2011 Stuxnet, el virus informatico que infecta a las infraestructuras de un Pais El Virus Informático más importante y problemático hasta el momento 4 Antivirus Online, Herramientas para Escanear Virus Listado completo de SeguridadConclusiones
Y que vengan muchos más. ¿Alguno que queráis recomendar vosotros?... - Encoded Word Encoding con .Net C#
Encoded Word Encoding con .Net C#
Como Obtener el Valor del Encoding de Palabras definido en el MIME Encoded-Word. En la comunicación SMTP, desde el RFC 2822, todos los nombres y valores de la cabecera (Header) del mensaje deben enviarse con el Encoding ASCII. Pero si se desean enviar carácteres con valores no-ASCII se debe codificar el valor del Header usando la sintaxi indicada en el MIME encoded-word (RFC 2047). La sintaxis usa un string con carácteres ASCII que indica el encoding "charset" y el "content-transfer-encoding", para poder obtener el valor correcto. Es Decir, en el mismo valor se manda la información, el charset y el encoding en un formato concreto.El formato de MIME encoded-word es
El Encoding podría contener dos valores. "Q" y "B", "Q" denota Q-encoding que es lo mismo que quoted-printable, y "B" denota base64. Por lo que si sabemos el charset y el encoding, podemos decodificar el texto que marcado como "encoded-text"=?charset?encoding?encoded text?=Codigo Decode Encoded-Word en .Net C#
using System.Text.RegularExpressions; using System.Net.Mail;
via vsevolodp Actualización 09/01/2011 No funciona en todos los Casos, pero si que resuelve la gran cantidad de mis necesidades...public class EncodedWordEncoding { public static string Decode(string encodedText) { if (encodedText == null) return null; Regex regex = new Regex(@"=\?(?<charset>.*?)\?(?<encoding>[qQbB])\?(?<value>.*?)\?="); string encodedString = encodedText; string decodedString = string.Empty; bool encodedWordBefore = false; while (encodedString.Length > 0) { Match match = regex.Match(encodedString); if (match.Success) { // If the match isn't at the start of the string, copy the initial few chars to the output string beforeMatch = encodedString.Substring(0, match.Index); // Filter out space chars between encoded words if (encodedWordBefore) { Regex regex2 = new Regex(@"(\r?\n|\r)*[ \t]+"); Match match2 = regex2.Match(beforeMatch); if (match2.Success && match2.Value == beforeMatch) beforeMatch = ""; } decodedString += beforeMatch; string charset = match.Groups["charset"].Value; string encoding = match.Groups["encoding"].Value.ToUpper(); string value = match.Groups["value"].Value; if (encoding.Equals("B")) { // Encoded value is Base-64 byte[] bytes = Convert.FromBase64String(value); decodedString += Encoding.GetEncoding(charset).GetString(bytes); } else if (encoding.Equals("Q")) { // Use .NET library to decode decodedString += Attachment.CreateAttachmentFromString("", match.Value).Name; } else { // Encoded value not known, return original string // (Match should not be successful in this case, so this code may never get hit) decodedString += encodedString; break; } // Trim off up to and including the match, then we'll loop and try matching again. encodedString = encodedString.Substring(match.Index + match.Length); encodedWordBefore = true; } else { // No match, not encoded, return original string decodedString += encodedString; break; } } return decodedString; } } - Service Unavailable en una Pool Aplicaciones del IIS o Proceso w3wp.exe
Service Unavailable en una Pool Aplicaciones del IIS o Proceso w3wp.exe
Cuando con Servidor Web IIS y una Aplicación Web esta con un Servicio No Disponible, podemos verificar una serie de causas. Normalmente es porque el Pool de Aplicaciones o el Proceso w3wp.exe que gestiona la Aplicación Web se ha saturado y se ha parado. Puede ser por rendiemiento del Servidor que esta con altos Picos, incluso del 100% de CPU. Si sospechamos que el problema esta en algún Proceso w3wp.exe, podemos ver con paciencia que proceso w3wp.exe esta dando el problema. Pero lo normal es pensar que la Aplicación Web se ha Parado, y que simplemente reiniciando se soluciona. Si después de reiniciar el IIS (iisreset) o la aplicación web, sigue sin solucionarse el problema entonces la causa es otra.Que Podemos Hacer
Revisar el Visor de Sucesos. Es muy probable que nos encontremos un Error del Tipo Active Server Pages con la siguiente descripción:Error: No se pudo realizar la inicialización de la caché permanente de plantillas para el grupo de aplicaciones 'xxx' debido al siguiente error: No se pudo crear un subdirectorio de caché de disco para el grupo de aplicaciones. Los datos pueden tener códigos de error adicionales..
Este problema es debido a Permisos de Usuario. A mi me ha pasado que la Aplicación Web funcionaba correctamente pero de vez en Cuando daba el Error de Active Server Pages en el Visor de Sucesos. Sospecho que llegado a un punto, y dependiendo de la gravedad del Error, el Pool de Aplicaciones deja de funcionar y da el Error Service Unavailable.Pasos a Seguir Para la Solucion
Abrir el Administrador del IIS (Internet Information Server). Expandir el "Grupo de Aplicaciones". Clic derecho sobre el grupo de aplicaciones "xxx" (el identificador del grupo de aplicaciones para el que el visor de eventos devuelve un error). Seleccionar "Propiedades" e ir a la pestaña "Identidad". Ver el usuario del grupo de aplicaciones. Editar la seguridad de la carpeta: "C:\WINDOWS\system32\inetsrv\ASP Compiled Templates" y dar todos los permisos al usuario del grupo de aplicaciones. Reiniciar el IIS.Recurso Fácil
Reiniciar IIS, Reiniciar Servicios, Reiniciar la Máquina. Quizás se solucionen los problemas inmediatos, pero no se ha solucionado el problema. Ya que el Servidor Web será propenso a que vuelva a dar el Error Service Unavailable en una Aplicación Web. NOTA: En mi caso utilice el Recurso Fácil, funcionó, pero era el Entorno de Desarrollo y no perjudicaba a ningún Usuario. Pasados unos días y con tiempo Revisé los permisos de Usuarios y efectivamente no estaba configurado correctamente.... - Seguimiento en las Transacciones Usando SQLTransaction y un TableAdapter Helper
Seguimiento en las Transacciones Usando SQLTransaction y un TableAdapter Helper
Cuando se quieren utilizar Transacciones en las Base de Datos, es porque se necesitan realizar una serie de Operaciones de forma Atómica. Las operaciones son indivisibles, lo que significa que o se ejecutan todas las operaciones o no se ejecuta ninguna. En el Caso de las Transacciones con las Bases de Datos, si la Transacción ha dado error se hace un "Rollback" para deshacer todos los cambios. El problema escrito en el artículo principal Transaction Tracking Using SQLTransaction, es que necesitaba realizar una serie de Operaciones entre 2 Base de Datos que se encuentran en 2 Servidores diferentes. Por este mismo motivo ha tenido que realizar un Seguimiento de las Transacciones, para saber que si algo ha funcionado mal, deshacer los cambios. No puedes Hacer "Rollback" y deshacer todos los cambios de 2 Bases de Datos Diferentes, tienes que deshacer de forma semimanual. Me parece tan Interesante, que por este mismo motivo vamos a escribir un artículo con los Apuntes necesarios, por si en futuro necesitamos algo parecido con las transacciones.Pasos para los Problemas Y las Soluciones
Se crea un objeto SqlTransaction para la conexión que se conectará a la base de datos. Los objetos Command en los TableAdapter comparten las conexiones. De esta forma no nos preocupamos de asignar el objeto Connection. El objeto Transaction necesita ser asignados a cualquier objeto Command que se utilizará como parte de la transacción para esa conexión. Los objetos Commands no son públic en los Table Adapter. Aquí tenemos el Problema Si queremos que el objeto Connection permanezca abierta en la Transacción, es necesario abrirlo antes de llamar a cualquier método que utilice el Table Adapter.Código .NET
El Código asigna a todos los comandos la Transacción pertinente, justo en el BeginTransaction. De esta forma en los Comandos Update, Insert y Delete ya tienen asignado el Objeto Transaction y podremos hacerle su control de Error.
Pensad que podéis adaptar la clase a vuestras necesidades.using System; using System.Data; using System.Data.SqlClient; using System.Reflection; public class TableAdapterHelper { /// <summary> /// Enlists the table adapter in a transaction. /// </summary> public static System.Data.SqlClient.SqlTransaction BeginTransaction(object tableAdapter) { System.Data.SqlClient.SqlConnection connection = GetConnection(tableAdapter); connection.Open(); SqlTransaction transaction = connection.BeginTransaction(); // get the table adapter's type Type type = tableAdapter.GetType(); // set the transaction on each command // in the adapter PropertyInfo commandsProperty = type.GetProperty("CommandCollection", BindingFlags.NonPublic | BindingFlags.Instance); SqlCommand[] commands = (SqlCommand[])commandsProperty .GetValue(tableAdapter, null); foreach (SqlCommand _command in commands) _command.Transaction = transaction; PropertyInfo adapterPI = type.GetProperty("Adapter", BindingFlags.NonPublic | BindingFlags.Instance); if (adapterPI != null) { object innerAdapter = adapterPI.GetValue(tableAdapter, null); if (((SqlDataAdapter)innerAdapter) .UpdateCommand != null) ((SqlDataAdapter)innerAdapter) .UpdateCommand.Transaction = transaction; if(((SqlDataAdapter)innerAdapter) .InsertCommand != null) ((SqlDataAdapter)innerAdapter) .InsertCommand.Transaction = transaction; if (((SqlDataAdapter)innerAdapter) .DeleteCommand != null) ((SqlDataAdapter)innerAdapter) .DeleteCommand.Transaction = transaction; } return transaction; } private static SqlConnection GetConnection(object tableAdapter) { Type type = tableAdapter.GetType(); PropertyInfo connectionProperty = type.GetProperty("Connection", BindingFlags.NonPublic | BindingFlags.Instance); SqlConnection connection = (SqlConnection)connectionProperty .GetValue(tableAdapter, null); return connection; } }Ejemplo de Uso con las Transacciones
SqlTransaction transaction = TableAdapterHelper.BeginTransaction(Adapter); try { Adapter.Delete(id); } catch (Exception e) { transaction.Rollback(); Adapter.Connection.Close(); throw e; } transaction.Commit(); Adapter.Connection.Close();Conclusión
Código en .Net para gestionar las Transactions de las Bases de Datos. Seguro que existen formas y maneras más sencillas para trabajar con Transacciones en .NET, pero esto da un paso más para esos casos en los el Seguimiento de las Transacciones es vital. Como por ejemplo cuando se necesita realizar entre 2 bases de Datos y encima alojadas en 2 Servidores Diferentes. ¿Os Ayudará este TableAdapter Helper?... - Nuevas Caracteristicas de los Formularios Web en HTML5
Nuevas Caracteristicas de los Formularios Web en HTML5
Las Nuevas propiedades en los Web Forms en HTML5. De las novedades que trae HTML5, nos centraremos en aquellos que están relacionadas con los Formularios Web. Ya se ha hablado de las etiquetas Header, Article, Aside, Section, .... Pero esta vez nos centraremos en los Formularios, y ofrecer la ayuda necesaria para validar y pintar los formularios como es debido.Ejemplos de nuevos tipos de INPUT
La etiqueta para Introducir datos en los formularios.<input type="number"> <input type="range"> <input type="date"> and other date/time controls <input type="color"> <input type="search"> <datalist> element and list attribute <input type="tel"> <input type="email"> <input type="url">Nuevas Formas de Representar Datos
<output> <progress> <meter>Propidades para las Validaciones
required type patternReferencias
Más información en dev.opera.com Y tambíen en JavierCasares en Parte 1 y Parte 2... - Frases de Usuarios y su Traduccion a problemas Informaticos
Frases de Usuarios y su Traduccion a problemas Informaticos
Diferentes expresiones y Frases de problemas informáticas dichas por usuarios. Los trabajadores de IT o de Sistemas Informáticos, suelen encontrarse con situaciones e incidencias que en muchas ocasiones necesitan de una traducción. Buscando información he encontrado una relacion de Frases y Traducciones informáticas muy interesantes. Por ese mismo motivo os comparto todas estas Frases Informáticas. td.nombre { color: #07E; } td.valor { border: 0px background-color: #fff; margin: auto; background: url(http://tectonilogia.com/wp-content/themes/Html5v3.1/i/sprites.png) no-repeat 15px -86px; font: normal normal 13px Arial, Tahoma; padding: 5px 15px 0px 32px; } ¡Ah, vale, ya veo! ¿Qué coño ha dicho? ¡Necesito Internet para los bancos! Tengo que comprar entradas por internet. ¡Otra vez se ha roto! Por increíble que parezca hice lo que me dijiste que no hiciera y se ha roto de nuevo. ¿Eres el informático? Supongo que careces de vida propia y que harás cualquier cosa por mí y por supuesto, gratis. ¿Estás ocupado? Eres mi última esperanza. ¿Pasa algo si borro el maestro de clientes? Me aburría y como no sé hacer pajaritas, estaba jugando con el programa de gestión. Sospecho que me harás algo doloroso. En tal caso, ha sido éste. ¿Podemos entrar ya? Te recuerdo que debido a que no eres capaz de hacer funcionar los servidores sin suministro eléctrico estamos aquí mano sobre mano. Y la culpa es tuya. ¿Podrías hacerlo tú para que lo vea? Estoy tentando temerariamente mi suerte. ¿Qué estás haciendo? Si no suena increíblemente complejo te pediré que hagas parte de mi trabajo para que pueda salir a fumar. ¿Qué tipos de papel admite mi impresora? Me temo que camisetas no puedo imprimir. Adiós negocio. ¿Tardarás mucho en arreglarlo? ¿Crees que podré irme de compras y que cuando vuelva seguirás aquí? ¿Te puedo hacer una pregunta personal? Sobre el PC de mi casa, claro. ¿Volverá a pasar? ¿Puedo repetir? ¿Y tú qué haces? ¿De verdad trabajas? 300 pulsaciones En teclado de móvil. A mi ordenador no le suena el ventilador como a los demás Me aburro tanto… Antes sí podía Forma de meter presión a ver si el informático consigue que el escáner saque un descafeinado decente. Apagado Estado en el que, sea la causa la que sea, no funciona. Archivo Documento, acceso directo, carpeta, papel, fondo de pantalla, letras al azar… Ayer Cualquier tiempo pasado comprendido entre hace unos minutos y la antigüedad del sujeto en la empresa. Ayuda No sirve para nada. Se supone que resuelve dudad, pero está en formato escrito, por lo que se debe prescindir de ella y llamar al BOFH directamente. Base de datos Hoja de cálculo, documento con listas de cosas, lista de contactos, historial de Internet… da igual. Todo es una base de datos en un momento dado. Bien Todo lo que hace el luser. Bonito Vistoso. Poner ~: Dar formato. Debe hacerlo el BOFH, tiene criterio estético. Borrado accidental Borrado de ficheros con confirmación y vaciado de papelera para luego darse cuenta de que el historial de navegación no se borraba así. Borrado misterioso Borrado de ficheros de causa desconocida, pero que habitualmente se produce después de tocar los huevos a un BOFH. Botón guardar ¿Botón qué? Buenos días Quiero algo de ti y no te va a gustar. Carpeta en servidor Pide contraseña, así que mejor guardarlo en el escritorio. Cerrado Minimizado. Coge cualquier cable y tira El cable negro gordo situado en la parte superior de la CPU. Contraseña Palabra a olvidar o sustituir por asteriscos. Copia de seguridad Lo que quepa en un disquete de 1.44 MB. CPU Disco duro. Cuando he llegado ya estaba así Y me fui justo después de dejarlo así. Cuando puedas Mientras tanto, diré pestes de ti y no haré nada más que esperar. Chino (sonar a) BOFH explicando la razón del problema. Disquete CD, DVD, Tarjeta de Memoria o bien disquete. Sí, las cajas para almacenarlos también son disquetes. El ordenador hace un ruido raro No, no puedo explicar qué hace una caja de clips dentro de la CPU. El servidor se ha caído No puedo entrar por alguna extraña razón. ¡Pero mira! ¡Empleo jerga técnica! ¡Quiéreme! Él si puede Dame permisos para manipular las cuentas de la empresa, majo. El teclado hace cosas raras Desde que puse el diccionario etrusco-vasco-gaditano apoyado sobre la tecla CONTROL. Email Diversión. En mi otra empresa podía hacerlo Inútil. Mira que no saber grabar CDs con la disquetera… Encendido Estado en el que funciona. Enrevesado Dícese del proceso esquematizado y ordenado para evitar que el luser meta la pata. Ergonomía Quiero un teclado inalámbrico. Es muy complicado Hazlo tú. Eso Ver “esto” Este documento está codificado He abierto este .pdf con el Word (y con dos cojones) y debe estar escrito en árabe. Este ordenador es una mierda Quiero un teclado nuevo. Esto Cualquier cosa. Desde el PC a la grapadora pasando por el teclado, el programa, el ratón, un esfínter que no cierra… Estorbo: Cable. Euroconector Cable de impresora paralelo Experiencia en el uso de ordenadores Hasta hoy, he podido camelarme a los informáticos en mis trabajos anteriores. Gracias Gracias por nada, inútil. Guardar Mensaje molesto que aparece al cerrar un programa en el que hemos realizado una tarea y que suele requerir un nombre para identificarlo. Ha sido sin querer Ni miré los diez mensajes de confirmación. Hace un rato Ver Ayer. Hay un problema con la red No tenemos ni idea de qué coño pasa, a ver si tú lo averiguas. He mandado un email y al destinatario no le llega Los adjuntos pesan 600MB. He olvidado la clave del ordenador de Manolo Manoli me cae mal y quiero hacerle la puñeta. He reiniciado y sigue igual ¡He apagado la pantalla, la he vuelto a encender y el error no se va! Imposible Referido a un BOFH, cualquier cosa que exceda los límites de su vagancia. Referido a un luser, cualquier cosa que consuma más de 10 minutos de atención constante. Informática nivel avanzado ¡Con estas manitas instalé yo el emule! Informática nivel básico Puedo diferenciar un ordenador de una tostadora casi sin esfuerzo. Informática nivel usuario Ni puta idea. Informático Gilipollas sobrerremunerado. Internet Entretenimiento que se ve interrumpido para derivar alguna tarea al departamento de informática. Internet no funciona Guarrascachondas.com no funciona. Internet y correo electrónico Un hacha con Hotmail. Intranet La Internet de la empresa. Aburrida y sosa. No hay porno. La chapa del ordenador está muy caliente Y por mucho que insistas no pienso quitarle la fundita de lana que le he puesto para que no coja polvo. Lanzar Imprimir. Iniciar un proceso. Abrir. Vaya usté a saber. Lo necesito ya Pero no lo usaré hasta el mes que viene. Logro Descubrir un error de programación. Debe difundirse lo antes posible. Llamada del informático Me han pillado. Llamada inesperada del informático ¿Cómo lo hace? ¡Es imposible que sepa que lo iba a hacer otra vez! Llamada inesperada del jefe. Mierda, no debí intentarlo de nuevo. Mal No me gusta. Todo lo que hace el BOFH. Me ha dicho el jefe que… Lo que te voy a pedir es tan absurdo que lo pondré en boca del jefe a ver si cuela. Me ha salido un error No lo he leído y quiero que lo adivines, y hasta que no me des una explicación convincente no te dejaré en paz. Me tengo que comprar más RAM, no me cabe nada Necesito más disco duro. Me tengo que comprar un ordenador nuevo, que el que tengo ya está lleno No saber que existe una acción llamada “Vaciar Papelera de Reciclaje” Mediocre No cumple mis expectativas. Ej: el ratón óptico no funciona bien sobre este espejo sobre el que esperaba ver un precioso efecto visual. Memoria Velocidad. ¡Quiero más! Mensaje Error, advertencia, información, confirmación, petición. Irrelevante e ignorable hasta que algo pete. Mi matricial imprime mal La foto de la comunión de mi sobrínido. Mi monitor vibra y me duele la cabeza. Así no puedo trabajar Quiero un TFT. Mi ratón va mal Me da envidia del que tiene mi compañero, que tiene lucecitas y el mio es feo y de bola. Minimizar Arrastrar la ventana hasta el borde inferior. Mis documentos Carpeta para el porno Molestia Procedimiento lógico. Monitor. Ordenador. Necesito imprimir esto en A3 Ven y estira esta puta impresora porque no caben los folios A3 más que doblaos. No enciende No carga Windows. No funciona No sé usarlo. ~ mi Messenger: Acabo de firmar mi sentencia de muerte sin darme cuenta. No funciona la impresora La impresora está desenchufada No funciona la página para escuchar música El enlace al reproductor en la página de kissFm que me dijiste para escuchar música ha pasado a la parte derecha de la página. No he tocado nada Que me atreva a confesar No importa Dios, qué estúpido soy. No puedo Quiero hacer algo y no sé. No puedo entrar ¿A la red?¿Al servidor?¿A Windows tal vez? No puedo enviar correos1)¿Por qué no puedo enviar este PowerPoint tan cachondo que he hecho? 2) He olvidado la contraseña No recibo correos ¿Dónde están mis PowerPoint? No sé qué ha pasado, se me ha puesto todo negro!” (muy angustiado) He pisado el interruptor de la regleta y no me he enterado No sé si se podrá Sé que es imposible, pero como tienes Superpoderes, lo mismo cuela. No tengo Word instalado He borrado el acceso directo del escritorio y no sé cómo recuperarlo. No veo bien Límpiame la pantalla. Nombre de usuario Lo que me salga de los cojones. Numlock Botón antiestrés. Enciende o apaga aleatoriamente una luz en el teclado. Ofimática nivel avanzado Una vez puse una fórmula en Excel y funcionó. Ofimática nivel básico Sé a qué te refieres Ofimática nivel usuario El currículum que tienes entre las manos lo hice yo solito. Ordenador Máquina de escribir con pantalla de 17” que produce errores y dificulta el trabajo. Oye, ¿haces copias de seguridad? La he liado gorda. Confío en ti y en que no me duela. Papelera de reciclaje Si miro lo que eh tirado antes de vaciarla me saldrán pelos en las manos y se me caerán los ojos Pisapapeles Manual de referencia. Poco Referido a unidades de medida de capacidad de almacenamiento digital cualquier cifra comprendida entre lo que cabe en un disquete al equivalente a 10 CDs. Por favor No hay traducción, los lusers no usan esa palabra (N. del A.) Problema informático Situación que se alega cuando debía hacer algo con el ordenador, pero no lo he hecho y me lo reclaman. Programa Cualquier elemento sobre el que al hacer doble clic, se abre una ventana. Tu ~: La mierda esa que hiciste no funciona otra vez. Pues eso Frase que se dice cuando a un luser se le pide especificar un “eso” Quiero borrarlo y no me deja Quiero saltarme los pasos intermedios antes de borrarlo y el cabrón se resiste. Quiero decir, ¿qué tareas desempeñas? Es decir, ¿tu trabajo tiene alguna relevancia? No puedo creer que te paguen por esto. Red Internet. Router Fax, ordenador, registradora… si tiene luces es susceptible de ser llamado o manipulado como tal. Se ha roto la pantalla de repente El enchufe está tan tirante que se ha desenchufado la pantalla Se ha roto solo El hostiazo que le he arreao con la silla no ha tenido nada que ver. Se me cayó, pero no se abrió, y ahora no funciona Tengo manos de mantequilla, pegó un guarrazo del copón y saltó por los aires, lo he montado y aunque no funciona, a ver si este imbécil se lo traga y entra en la garantía. Servidor Ente desconocido gobernado por un BOFH que de vez en cuando impide acceder a Internet. Silencio El jefe no está. ~ del informático: Algo malo está ocurriendo y me va a doler. Son muchos pasos Hazlo tú. Te lo juro por lo que más quieras Mentira podrida. Tengo mucho trabajo No me corre prisa, pero mientras lo arreglas me podré quejar, tomar café, fumar y charlar con la peña porque tengo una buena excusa. Tengo mucho trabajo, ¿por qué no puedo ver la página del Marca? Me temo que este mes no cobraré hasta el día quince lo menos. Tengo un problema Tienes un problema. Torre Cosa que hace ruido y esta calentita, periférico no necesariamente imprescindible Trabajo Tarea remunerada derivable a los informáticos. Viejo Sucio. Virus Causa por la que, después de varios desafortunados intentos de hacer algo por las bravas, el ordenador se queja incomprensiblemente. Ej: Mandar 1000 copias de un documento de 700 páginas a una impresora sin papel Yo así no puedo trabajar Detesto mi vida y me vienes de perlas para quejarme por algo. Yo no he sido Indudablemente he sido yo, pero no quiero morir. NOTA: BOFH son las iniciales del término en inglés de "Bastard Operator From Hell", literalmente "Maldito Operador del Infierno", aunque podría traducirse como "Infame Administrador del Demonio" via Wardog y el Mundo...
- Como Activar Thumbnails o Imagen Destacada en Wordpress
Como Activar Thumbnails o Imagen Destacada en Wordpress
Uso de Thumbnails en el Theme de Wordpress. Presentar un artículo mediante un Thumbnails es una técnica muy utilizada, ya que como suele decirse "una imagen vale más que 1000 palabras". Por eso vamos a ver los pasos a seguir para activar y utilizar la opción que ofrece Wordpress en cuanto a la gestión de Thumbnails. Primero Activar la opción del uso de Thumbnails y segundo los métodos necesarios para Utilizar el Thumbnail en el ThemeActivar los Thumbnails
Para Activar los Thumbnails o la Imagen Destacada en Wordpress primero tenemos que modificar el fichero "functions.php" de nuestro Tema de Wordpress y escribir las siguientes líneas de código. De esta forma quedará activada la opción para trabajar con la imagen destacada
Al Activar esta opción aparecerá en la Barra lateral de las "Entradas" la posibilidad de configurar Thumbnails para los Posts, o en su defecto seleccionar cualquier imagen de la Galeria subida.if ( function_exists( 'add_theme_support' ) ) add_theme_support( 'post-thumbnails' );Métodos para la Gestión de Thumbnails en Wordpress
Para mostar y gestionar el Thumbnail en nuestro Theme podemos utilizar los métodos
Post Thumbnails Functions Referenceshas_post_thumbnail(); the_post_thumbnail(); get_post_thumbnail_id(); get_the_post_thumbnail();The_Post_Thumbnail
El Método the_post_thumbnail es el encargado de mostrar la imagen destacada, y tiene la posibilidad de poderles pasar 2 parámetros.
Parámetro $size (string/array) (Optional) Image size. Default: 'post-thumbnail', which theme sets using set_post_thumbnail_size( $width, $height, crop_flag );. Either a string keyword(thumbnail, medium, large or full) or a 2-item array representing width and height in pixels, e.g. array(32,32). Parámetro $attr (array) (Optional) Array of attribute/value pairs. For details, search source for the function that the_post_thumbnail relies on: wp_get_attachment_image Default: None<?php the_post_thumbnail( $size, $attr ); ?>
PD.: Necesario tener versión 2.9 o superior de Wordpress...$default_attr = array( 'src' => $src, 'class' => "attachment-$size", 'alt' => trim(strip_tags( $attachment->post_excerpt )), 'title' => trim(strip_tags( $attachment->post_title )), ); - Ultima Releases por la Seguridad de Wordpress
Ultima Releases por la Seguridad de Wordpress
Porque una nueva release de Wordpress con menos de 10 días en comparación con la anterior. Me ha sorprendido que cuando acaba de salir la release 3.0.2 salga en breve una nueva release 3.0.3. En algunas versiones anteriores de Wordpress ya ha sucedido lo mismo, una vez puestos a corregir, y a medida que solucionan puntos críticos de seguridad, van liberándo las nuevas versiones. (Que levante la mano al Programador que le ha pasado lo mismo) La Release 3.0.2 soluciona algunos temas críticos de seguridadThis maintenance release fixes a moderate security issue that could allow a malicious Author-level user to gain further access to the site, addresses a handful of bugs, and provides some additional security enhancements
La Release 3.0.3 soluciona también algunos temas de seguridad, pero sólo afecta a aquellas instalaciones que puedan publicar remotamente.This release fixes issues in the remote publishing interface, which under certain circumstances allowed Author- and Contributor-level users to improperly edit, publish, or delete posts.
También tenemos que tener en cuenta la noticia de que últimamente se ha visto incrementado los ataques de Injection a blogs Wordpress. Así que como creo que estas últimas releases no lo solucionan, es muy posible que en breve vuelva a salir otra nueva release.... - Round-Corners y Gradient CSS para Todos los Navegadores
Round-Corners y Gradient CSS para Todos los Navegadores
Bordes Redondos y fondo degradado en todos los navegadores. Con CSS3 aparecen nuevas propiedades como border-radius, text-shadow o box-shadow. El problema es que todos los navegadores No cumplen con CSS3, por eso el poder utilizar un estilo CSS de bordes redondos o fondos degradados que funcione en todos los navegadores es un poco más difícil.Bordes Redondos Con CSS
Poniendo las siguientes líneas funciona en todos los navegadores. Como siempre tenemos la Excepción del Internet Explorer, pero para eso los chicos de google nos proporcionan un código Javascript que redondea el "Elemento" en función de lo indicado en la propiedad "border-radius". Este código es un fichero llamado "border-radius.htc" que hay que copiar en la raiz de nuestra página web (o Theme de Wordpress). .box-rounded{ background-color:#CEE3F6; color:#0101DF; width: 300px; margin: auto; padding-left: 30px; -moz-border-radius: 20px; -webkit-border-radius: 20px; -khtml-border-radius: 20px; border-radius: 20px; behavior: url(border-radius.htc); } .box-gradient{ background:#CEE3F6; color:#0101DF; border: 1px solid navy; margin: auto; padding-left: 30px; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#CEE3F6', endColorstr='#ffffff'); /* for IE */ background: -webkit-gradient(linear, left top, left bottom, from(#CEE3F6), to(#fff)); /* for webkit browsers */ background: -moz-linear-gradient(top, #CEE3F6, #fff); /* for firefox 3.6+ */ } .box-shadow-down{ -moz-box-shadow: 5px 5px 5px #888; -webkit-box-shadow: 5px 5px 5px #888; box-shadow: 5px 5px 5px #888; } .box-rounded{ background-color:#CEE3F6; width: 300px; margin: auto; padding-left: 30px; /*Para Redondear Bordes*/ -moz-border-radius: 20px; -webkit-border-radius: 20px; -khtml-border-radius: 20px; border-radius: 20px; behavior: url(border-radius.htc); } El código podemos descargarlo de code.google - curved-cornerFondo Degradado Con CSS
El Degradado también requiere de 3 líneas en el Estilo CSS, de esta forma se verá el fondo degradado en todos los Navegadores. Con Internet Explorer también se ve el degradado, aunque tenemos menos opciones de configuración. .box-gradient{ background:#CEE3F6; border: 1px solid navy; margin: auto; padding-left: 30px; /*Para Fondo degradado*/ /* for IE */ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#CEE3F6', endColorstr='#ffffff'); /* for webkit browsers */ background: -webkit-gradient(linear, left top, left bottom, from(#CEE3F6), to(#fff)); /* for firefox 3.6+ */ background: -moz-linear-gradient(top, #CEE3F6, #fff); }Bordes Redondos y Fondo Degradado Con CSS
Si juntamos dentro de un estilo CSS las propiedades del Borde Redondo y lo del Fondo Degradado, podemos tener un "elemento" con Bordes Redondos y Fondos Degradados. Como siempre Internet Explorer es una Excepción y los dos estilos no conseguimos hacer que funcione. Aplicando las clases CSS box-gradient y box-rounded al mismo elemento tenemos Bordes Redondos y DegradadoDegradado Redondo Sombra y CSS
Ejemplo Anterior + Propiedad sombra del CSS3 ¡combinando estilos!Referencias
Más información sobre Redondear Bordes en Border Round Corner With CSS Más información sobre Degradados en CSS en Gradient CSS Cross Browsers Más información sobre Las Sombras del CSS3 en box-shadow, features CSS3... - Herramientas para Optimizar Imagenes Online en momentos de apuros
Herramientas para Optimizar Imagenes Online en momentos de apuros
Las imágenes en una página web son casi necesarias, pero su correcta optimización lo son aún mas. Una imagen que ocupe mucho puede repercutir negativamente en la carga de nuestro sitio web, por eso optimizarlas y reducirlas al tamaño deseado mejorará sensiblemente la velocidad de carga.Redimensionar
Redimensiona de forma "escalada" la imagen indicando el Width o Height deseado. De esta forma podemos redimensionar la imágen y no hacer que wordpress o el navegador hagan el trabajo. ResizerOptimizar
Optimiza la Imagen minimizando el número de colores a utilizar en la imagen. Por regla general, para las páginas web con tan sólo 256 colores podemos obtener casi los mismos resultados que con las imagenes que tiene "Miles de Colores". Incluso con 64 colores podemos ver prácticamente los mismos resultados reduciendo el peso de las imagenes. Optimizer Haced la pruebas y lo comprenderéis.Recomendación
Siempre que incluyamos una imágen en nuestra página es muy recomendable indicar el "width" y "height" de la imágen en la propia etiqueta. Por ejemplo
Al hacer escribir esto, evitamos que el Navegador tenga que calcular el Alto y Ancho de la imagen evitando gastae tiempo de procesado con este objetivo. Esta información la tenemos, así que es sólo cuestión de tener ganas ¿Tenéis ganas Normalmente?....<IMG src="images/name.png" width="200px" height="200px" /> - Menus Dinamicos en Vertical con CSS y Javascript
Menus Dinamicos en Vertical con CSS y Javascript
Pasos para saber como crear Menus Dinámicos en Vertical para los Proyectos Web. Sin pensarlo demasiado creía que sólo con CSS ya se podía hacer los menus en verticales. Cierto, pero no Menus tipo DropDown List, Menu tipo Lista Desplegable que se muestre u oculte en función del movimiento del ratón. Por lo que Necesitas Javascript, y después de buscar un poco de información encontré un artículo que Recopila Ejemplos de Menus Desplegables Navegables Multinivel (Ejemplos y Tutoriales de Drop Down Navigation Menus). Algunos utilizan código javascript personalizado y otros librerías tipo JQuery, Prototype, Mootools. Pero las funcionalidades básicas se pueden encontrar en el primer ejemplo de dynamicdrive, sencillo, funcional y encima nos podemos descargar el código fuente de ejemplo. También hemos encontrado un Plugin de Wordpress para generar Menus Navegables Multilevel Navigation Plugin (No lo he probado) Recomiendo utilizar primero un Ejemplo Sencillo que podamos modificar e intentar adaptarlo a nuestras necesidades, y después ya nos iremos complicando la vida. Pensad que es posible que a más complicación, más tiempo de carga. ¿Existe alguna forma de Crear Menus Dinámicos en Vertical sin usar Javascript?... - 73+ Plugins Con Ajax ,Seguridad, Mantenimiento y otros para Wordpress con Tardes Entretenidas
73+ Plugins Con Ajax ,Seguridad, Mantenimiento y otros para Wordpress con Tardes Entretenidas
Plugins Wordpress que utilizan tecnología Ajax, o para mejorar la Seguridad para Wordpress. También en el listado existen plugins para mantenimiento u otras cosas, un listado muy completo que poco a poco y con tiempo, el consejo para vosotros y para mi mismo es la de revisarlos para ver si le podemos sacar el máximo partido a nuestro Theme de Wordpress. Los plugins que utilizan Ajax dan sensación de rápidez al usuario, por lo que le gustará más nuestra página y puede que vuelva. Los plugins orientados a la seguridad pretenden mejorar el acceso no deseado a nuestro Blog y evitar ataques.Como se ha Enfocado
Los Plugins se han agrupado por categorias Plugins Seguridad en General Plugins Monitorización y Verficación de Seguridad Plugins Formularios de Contacto Seguros Plugins Base de Datos Plugins AntiSpam Plugins Captcha Plugins Ajax De todos los que exponemos, en casi cada sección vamos a resaltar alguno/s como recomendación (Sobretodo como apunte para revisar el Plugin en un futuro). Como comprenderéis no los he probado todos, ni creo que lo haga, pero a los Plugins Recomendados si quiero echarles un vistazo.Seguridad Wordpress
Plugins de Seguridad en General para Wordpress, centrada en los accesos al Login, Administración e información que puede ser usada con mala intención
Recomendamos Login LockDownRegistra las direcciones IP y la Fecha/Hora de cada fallo en el Intento de Login, si detecta que están intentando entrar desde el mismo rango en poco tiempo, desactiva la opción para ese Rango de IP.
Seguridad Login / Admin Semisecure Login Reimagined Incrementa la seguridad del proceso de login usando un método de encriptación para el Password cuando se envía para su validación. Idóneo cuando no se puede utilizar SSL. Stealth Login Permite modificar las páginas de Login, administración y registro para que no sean las por defecto (Ej. http://www.myblog.com/login). Chap Secure Login Validación mediante encriptación en el Password al realizar Login. Admin SSL Configurar todas las páginas de Adminstración de Wordpress con SSL. Formularios de Contacto Seguros Secure Contact (Se basa en el Plugin WP Contact Form agregando una imagen Captcha). Fast and Secure Contact Form (Formulario de Contacto muy configurable que te permite que el visitante te envíe un correo, de esta forma frenas todas las táctivas de los spammers). Varios en General Secure WordPress Pequeñas mejoras como borrar la información de error en la página de login, añade un index.html a la carpeta Plugin, y borra la información de la versión de Wordpress Instalada excepto de la parte de administración. AskApache Password Protect (Intenta evitar ataques para que la web no sea hackeada) Replace WP-Version (Modifica la versión de Wordpress Instalada por una anterior para intentar engañar al intruso). WP Email Guard (Transforma los emails escritos a código Javascript. La dirección de correo será legible y clickable sólo por humanos, pero los spammers no podrán). WP Dephorm (Protege de ojos indescretos y curiosos que quieren utilizar nuestra información para realizar campañas de Marketing). WordPress Firewall (Intenta verificar la petición para saber si es un ataque o no, pero parece ser que no es muy aconsejable por su difícil configuración). Content Security Policy (Previene de Injection-Attacks, administando que código javascript puede ejecutarse y bloqueando el resto).Monitorización y Verificación de Seguridad
Verifica y Monitoriza las Vulnerabilidades de Seguridad de nuestra instalación Wordpress.
WP Security Scan (Scanea si existe alguna vulnerabilidad de seguridad y sugiere soluciones). AntiVirus (Monitoriza si nuestra instalación ha sufrido algún ataque de virus, malware o código malintencionado). Secure Files (Permite restringe la descarga de ficheros desde usuarios logueados). WordPress File Monitor (Monitoriza los ficheros y manda un email cuando detecta que hay un cambio en los ficheros). Ultimate Security Check (Verifica nuestra instalación Wordpress de vulnerabilidades conocidas y te muestra los posibles problemas encontrados).Plugins Base de Datos
Todos los Plugins realizan Copias de Seguridad de las bases de Datos. Pero además algunos ofrecen tareas de Mantenimiento para aquellas personas que no tengan acceso a las Base de Datos del Hosting.
WP-DB-Backup Remote Database Backup WP-DB Manager (y Optimiza, Repara y Restaura) BackUpWordPress WordPress 1 Click EZ Backup (Backup con 1 Click) myEASYbackup(con 1 Click)Spam, AntiSpam Wordpress
Plugins que determinan si el comentario es Spam o No, etiquetándolos de tal forma.
Recomendamos Math Comment Spam ProtectionIncluye una simple suma como pregunta en el formulario de comentarios, de esta forma sólo las visitas humanas podrán comentar y no los Robots Spam
AntiSpam Akismet Antispam Bee NoSpamNX Defensio Anti-Spam AntiSpam avanzado utilizando un WebService, aprende y se adapta a nuestro comportamiento frente al Spam Blackhole Es una Trampa para los Robots Malintencionados, si caen en la trampa se incluyen dentro de una lista negra para denegarles el acceso a la Web Invisible Defender Protege el registro, login y comentarios incluyendo campos extra ocultos por CSS. Muy efectivo contra robots. Captcha SpamAñade una imagen Captcha como método Anti Spam, en comentarios, registro, login, ..., y previente de los Robots Automáticos
SI CAPTCHA Anti-Spam reCAPTCHAAJAX
Recomendamos Inline Ajax CommentsOculta los comentarios hasta que el usuario clicka encima, sin necesidad de recargar la página)
Diferente Plugins con Tecnologia AjaxDado que no los he probado no puedo certificar que son 100% Ajax, pero a priori hay que pensar que si
AjaxWP Añade Ajax a toda la página ganando velocidad de carga. Alexa Rank Ajax Comment Preview Codebox asTunes Obtiene información de Audioscrobbler/last.fm. Crossroads Añade Thumbanils y comentarios desde nuestra cuenta. FireStats Google PageRank Hardened-Trackback imgViewJX Actualiza una imagen de la página principal de un directorio seleccionado. Live Spell Checker Añade un corrector ortográfico al área de administración. Plug ‘n’ Play Google Map Wordpress Mailing List WP e-Commerce WP-Polls Para Realizar Encuestas WP-Post Ratings Obtener Puntaciones AJAX Comments 2.0 Auto actualiza los comentarios sin necesidad de actualizar la página. AJAX Google Video Search AJAX Shoutbox Cool Weather Plugin del tiempo, Meteorología. Currency Converter Google AJAX Search Configurable para buscar en cualquier página Web Gregarious Social bookmarking plugin Google MapSearch Widget Hottaimoijiruna Muestra un Reloj Inline Ajax Page Permite ver el resumen del artículo sin necesidad de enviar a otra página. Tagboard Widget Añade auto actualización mostrando nuevos mensajes como nuevos artículos. Units Converter WP Movie Ratings Obtiene información de IMDB Vía mashable y qeqnes.wordpress Las traducciones del Inglés son mias ¿Se Nota? Actualización 24 Nov; Nueva Referencia con 120 plugins de Wordpress agrupados por Entradas, Estadísticas, Formularios Contacto, Manejo de Fotos, Navegación o Paginación, o Administración... - Plugin AntiSpam sin Javascript Math Comment Spam Protection
Plugin AntiSpam sin Javascript Math Comment Spam Protection
Plugin Wordpress Anti Spam para los Comentarios sin necesidad de Ajax, ni Javascript, ni Imágenes Captcha. El funcionamiento se basa en la suma de dos números enteros, si el usuario introduce un valor incorrecto no permite que el comentario se lleve a cabo. El Plugin puede modificarte directamente el Theme de Wordpress (No siempre Funciona) para ponerte el código dentro del fichero comments.php, o sino lo tendremos que poner a mano.<?php if ( function_exists('math_comment_spam_protection') ) { $mcsp_info = math_comment_spam_protection(); ?> <p><input type="text" name="<?php echo $mcsp_info['fieldname_answer'] ?>" id="<?php echo $mcsp_info['fieldname_answer'] ?>" value="" size="10" tabindex="4" /> <label for="<?php echo $mcsp_info['fieldname_answer'] ?>">Spam protection: Sum of <?php echo $mcsp_info['operand1'] . ' + ' . $mcsp_info['operand2'] . ' ?' ?></label> <input type="hidden" name="<?php echo $mcsp_info['fieldname_hash'] ?>" value="<?php echo $mcsp_info['result']; ?>" /> </p> <?php } // if function_exists... ?>Funcionamiento Técnico de Match Comment Spam Protection
El Plugin se basa en la creación de dos campos de texto, uno visible y otro oculto. El Visible es para que el usuario escriba el resultado de la suma Anti Spam, y el oculto contiene el resultado correcto. Además el campo oculto utiliza un método de encriptación, para que el resultado no sea legible, y de esta forma ya tiene toda la información necesaria en la misma página. Cuando el usuario pulsa "Submit" de alguna forma debe validar que el contenido es correcto y sino te muestra un mensaje de Error. El Mensaje de Error es configurable desde las páginas de Administración de Wordpress. (Esta parte desconozco como se hace, pero funciona)Descargar Plugin Math Spam Protection
Motivación
Estaba cansado de que siempre venían los mismos comentarios de spam, por ese mismo motivo me puse a investigar. Antes probé con el plugin Ajax-Comments, pero no me funcionó, y cuando active la imágen Captcha tampoco. No le di más vueltas, porque lo que realmente buscaba era una Suma Anti Spam en los Comentarios, a poder ser sin usar Javascript. Esto ya lo programé hace tiempo, modificando el comments.php del Theme y el wp-comments-post.php de wordpress, el problema era que cada vez que actualizaba el Wordpress el código se esfumaba. Ahora con el plugin en teoría debería mantenerse por más tiempo ¿Lo Veis en los Comentarios?.... - Plugin Social de Wordpress para Twitter, Facebook y mas
Plugin Social de Wordpress para Twitter, Facebook y mas
Plugin para Wordpress para enviar artículos a Twitter, Facebook, Tuenti, Buzz o Meneame. Hace días se liberó el Plugin Social Counter que estaba utilizando EDans en su blog. El plugin carga rápido y cumple con las necesidades que buscamos. Mucho mejor que la técnica que expliqué hace tiempo de como Crear Métodos para Envair a Twitter o a Facebook, que un cúmulo de causas (librería Bit.ly, Imágenes, Theme, ...) tardaba más en cargar. Aunque el funcionamiento es bastante parecido, lo lleva un escalón por encima mostrando un Contador de las veces que el artículo ha sido enviado a una Red Social determinada. Actualización: Después de unas semanas de prueba, desactivo el Plugin porque provocaba que la página tardase en cargar más de lo debido. Al principio parecía que no retrasaba demasiado la carga, pero no ha sido así. Hasta que no encuentre el motivo o pueda optimizarlo, lo dejaré desactivado. ¿Os funciona bien a vosotros?... - Como crear un Planeta de Blogs
Como crear un Planeta de Blogs
Crear un Planeta de Blogs Planet-Blog es una página que obtiene la información a través de otros blogs. Es contenido Duplicado evidentemente, pero para recopilar noticias puede ser una muy buena idea. Siempre me he preguntado como crear un Planeta de Blogs, así que me puse a buscar. Tomando como base el artículo Como crear Planeta de Blogs de dreig, vi que se podían reunir noticias de diferentes blogs de forma online. También me había preguntado como incorporar esta funcionalidad a un blog Wordpress, y este artículo también me lo respondió.Que Necesitamos
Antes de instalar los plugins para obtener la sindicación, tenemos que saber como vamos a obtener los Feeds. ¿De forma manual? o ¿queremos programar una tarea en el servidor que se dedique a obtener artículos automáticamente?. Para programar una tarea automática necesitamos tener permiso en el servidor para poder configurar tareas programadas, por ejemplo Cron-Jobs (Unix).Los Plugins
Os ofrezco dos opciones: FeedWordpress Wp-0-Matic De las dos opciones, que he instalado en Local para ver las opciones que me ofrece cada uno, prefiero el FeedWordpress, aunque el Wp-o-Matic tiene una opción muy buena de Reescribir palabras clave por otras (incluso links). Con FeedWordpress puedes utilizar custom fields posts, que será algo parecido.... - Avanzando en la programación PHP
Avanzando en la programación PHP
Con nuevo proyecto personal he querido mejorar la programación PHP dando un paso más adelante en la complejidad que usaba. Antes si necesitaba algo para el Blog, creaba métodos o funciones en el fichero functions.php, pero esta vez no. He querido avanzar en la programación Php utilizando Clases. Así que poco a poco os iré contando lo que me encuentro. De momento, tomando como base de la página un Blog Wordpress he Creado nuevas tablas en la Base de Datos Creado Clases para que la interacción con las nuevas tablas Acceder a las nuevas Tablas Recorrer las consultas Realizar Updates ...No es gran cosa pero poco a poco... Todo desde diferentes Clases Php dividido en diferentes ficheros. Para lanzar las llamadas PHP desde las Páginas de Wordpress utilizo el Plugin Exec-Php. NOTA: Lo que no conseguí fue ejecutar Stored Procedures con éxito utilizando el Objeto $Wpdb que ofrece Wordpress.... - Alternativa al Adsense Asincrono, para mejorar la velocidad
Alternativa al Adsense Asincrono, para mejorar la velocidad
Como cargar Adsense Asíncrono no es posible, por mucho que lo intentes y consigas cargar el Script Adsense asíncronamente, no te funcionará. Una de las especifícaciones que veo en Google Support es que no se permite la carga asícrona del Adsense.Very Best method for Load Adsense
Una de las mejoras para cargar Adsense más rápido, aunque sea para la percepción del usuario, es Situar todos los Scripts al final de la página (footer.php) siguiendo las indicaciones de semplicewebsites. Las bases son situar el código de Adsense en la parte inferior de la página, después mediante el método .onload de la página, situar el código adsense dentro del bloque DIV que nos interesa. Algo parecido al siguiente código.
Lo que no entiendo es porque Google ya nos optimiza el código de Analytics para que se cargue asíncronamente y el de Adsense todavía no, espero que en breve tengamos noticias al respecto<html> ... <body> <!-- ... Header, Menu, Content, --> <!-- Article --> <div id="ad1_inline"></div> <!-- Article End --> <!-- ... Footer --> <!-- Adsense Code Abajo del Todo --> <div id="ad1_footer" style="display: none;"> <script type="text/javascript"><!-- <em>Google ad params</em> //--></script> <script type="text/javascript" src="...show_ads.js"></script> </div> <script type="text/javascript"> window.onload = function() { document.getElementById('ad1_inline').appendChild(document.getElementById('ad1_footer')); document.getElementById('ad1_footer').style.display = ''; } </script> </body> </html>Cargar Asíncronamente Javascript
Para mejorar aún más el código de optimización de carga de nuestros javascript, ya sean internos o externos, podemos seguir las pautas de anieto2k. Fichero javascript lo más reducido posible La idea es utilizar un fichero .js que contenga una función de carga asíncrona de ficheros javascript, y otro fichero javascript con el resto de nuestro código. Creamos un fichero llamado min.js, el cual contendrá el método loadScript. Recibirá la url donde se encuentre el fichero javascript que queremos cargar asíncronamente, y un método de Callback, el cual nos servirá de inicialización si fuera necesario.
Para utilizarlo seríafunction loadScript(url, callback){ var script = document.createElement("script") script.type = "text/javascript"; if (script.readyState){ //IE script.onreadystatechange = function(){ if (script.readyState == "loaded" || script.readyState == "complete"){ script.onreadystatechange = null; callback(); } }; } else { //Others script.onload = function(){ callback(); }; } script.src = url; document.getElementsByTagName("head")[0].appendChild(script); }
Si aplicamos esta técnica con el código de Adsense, no nos funcionará (ya lo he intentado y no aparece ningún anuncio). Pero si es cierto que si juntamos las dos optimizaciones minimizaremos el impacto de carga que tenga el Javascript en nuestra página web....<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/js/min.js"></script> <script type="text/javascript"> loadScript("<?php bloginfo('template_url'); ?>/js/utils.js", function(){ }); </script> - Como conseguir busquedas voy a tener suerte en Wordpress
Como conseguir busquedas voy a tener suerte en Wordpress
Búsquedas en un Blog Wordpress personalizas con voy a tener suerte. El Objetivo es que si el resultado es de un sólo artículo, redirija directamente al único artículo encontrado, Pero si el resultado es de más de un artículo nos muestre todo el listado. Es similar a la técnica "I'm Feeling" o "Voy a Tener Suerte" de Google, pero un poco más ajustado a nuestras necesidades. Para conseguirlo no es necesario ningún plugin, ya que el cambio a realizar en nuestro Theme de Wordpress es muy sencillo.Pasos a Seguir
Hacer una copia del archivo llamado "header.php" Modificar el fichero y poner arriba del todo el siguiente código
Este código hace lo siguiente: Si es un resultado de búsqueda y tiene artículos, y sólo tiene 1 artículo, entonces recuperamos el artículo y redirigimos al mismo. Probar si funciona, sino resturar la copia del Header.php Si por casualidad queremos que se comporte siempre como el Voy a Tener suerte de Google, y redirija siempre al primer artículo, independientemente de si el resultado es de 1 o más artículos. Tenemos que eliminar la línea de código<?php if ((is_search()) && (have_posts())) { if (count($posts)==1) { the_post(); $mypermalink = get_permalink(get_the_ID()); header( "Location: $mypermalink"); } } ?>
Esperamos ser de ayuda....if (count($posts)==1) - Acortar las URL con la Api de Bit.ly para PHP
Acortar las URL con la Api de Bit.ly para PHP
Documentación y explicación de como utilizar la Librería Bit.Ly. Hace días vimos como crear métodos para enviar nuestros artículos a twitter o facebook, pero también nos dimos cuenta que se podía mejorar si utilizábamos la Api de Bit.ly.Recursos
Registro en Bit.ly Descargar Librería Bit.Ly Documentación Bit.lyEjemplo de Uso
Para poder utilizar la librería es necesario registrarse, una vez echo esto podemos crear una función para construir la clase y así poder utilizarla sin tener que recordar el login y la contraseña.
Para utilizarlo esfunction CreateBitly() { include_once("bitly.php"); return new Bitly("yourlogin","yourapikey"); }
De esta manera podemos acortar las url en Php, pero si seguimos investigando podemos llegar a utilizar la funcionalidad Bit.ly en Javascript (en la documentación encontraréis lo necesario para utilizar Bit.Ly en Javascript)...function myfunction($title, $url) { $bitly = CreateBitly(); $urlbit = $bitly->shorten($url); //utilizar $urlbit como queramos ... - Crear metodos para enviar a Twitter y a Facebook desde Wordpress (I)
Crear metodos para enviar a Twitter y a Facebook desde Wordpress (I)
Métodos para enviar a Twitter o a Facebook un artículo escrito en Wordpress. La idea es formar una url tal y como la espera Twitter o tal y como la espera Facebook, de momento esta en funcionamiento en Komoloves. Para conseguirlo crearemos dos métodos en el fichero functions.php que nos devuelva la ruta específica, para ello pasamos por parámetro el Título y la Ruta del Artículo del mismo.
Para utilizarlo sólo tenemos que llamarlo de la siguiente manera.function GetTwitter($title, $url) { $link = 'http://www.twitter.com/home?status=RT+@komoloves+'.str_replace(' ','+',$title).'+'.str_replace(' ','+',$url); echo $link; } function GetFacebook($title, $url) { $link = 'http://www.facebook.com/share.php?u='.str_replace(' ','+',$url).'&t='.str_replace(' ','+',$title); echo $link; }
De momento esta es una primera aproximación, ya que se debería mejorar juntando estas funciones con la librería Bitly en PHP, ya que Twitter sólo acepta 140 caracteres. Actualización: Este método es Lento, ya que repercute en la carga de la Página. De momento no se el motivo, pero si he reconocido el problema. Esperemos estar al corriente....<div class="social"> <a href="<?php GetTwitter(the_title('','',false), get_permalink(get_the_ID())); ?>" target="blank" title="send to twitter" rel="nofollow"><img src="<?php bloginfo('stylesheet_directory');?>/images/twitter.png" title="twitter send" alt="Enviar a Twitter" width="165px" height="30px" ></a> <a href="<?php GetFacebook(the_title('','',false), get_permalink(get_the_ID())); ?>" target="blank" title="send to facebook" rel="nofollow"><img src="<?php bloginfo('stylesheet_directory');?>/images/facebook.png" title="facebook send" alt="Enviar a Facebook" width="165px" height="30px" ></a> </div> - 7 Cosas que nos recomiendan para mejorar en el SEO
7 Cosas que nos recomiendan para mejorar en el SEO
Cuestiones a tener en cuenta para mejorar en el posicionamiento web. Hacernos comprender correctamente a los motores de búsqueda es fundamental para que nos premien y nos den una buena posición en las búsquedas. Para ello no viene de más tener en cuenta una buenas recomendaciones. Títulos descriptivos y descripciones tipo resumen acordes al contenido (Nunca Dupliques) Urls con palabras y una estructura de directorios simple Usa un Archivo Sitemap XML para los motores de búsqueda y una ruta de navegación "breadcrumb links" para los usuarios, tipo "Home - Categoria1 - SubCategoria2". Restringir al Robots.txt adecuadamente de todas aquellas páginas repetitivas, o definir mediante la metaetiqueta de la cabecera "robots" con noindex, follow o nofollow Personalizar la página para el error 404 Not Found útil y que no se indexe Textos clarosy un uso del sentido común para las palabras claves Descripciones acordes en los textos Ancla de los enlaces. La mejor recomendación para una correcta optimización y así comenzar por algún sitio, es evitar a toda costa la duplicidad de los textos, en los títulos y las descripciones. Pero una de las mejores prácticas para seguir aprendiendo sobre el tema SEO es suscribirse al Blog de Google para Webmasters... - 9 Cosas que Debemos evitar para ganar puntos SEO
9 Cosas que Debemos evitar para ganar puntos SEO
Cuestiones que tenemos que evitar para una correcta optimización web y un buen posicionamiento en los motores de búsqueda. Títulos repetidos en varias páginas o con nombres genéricos. Tampoco se recomienda que sean muy largos, ni con muchas palabras claves y mucho menos que no estén relacionados con la página Descripciones duplicadas o genéricas, que no tengan nada que ver con la página o que sólo conste de palabras clave URL largas e indescifrables, con varios parámetros o con textos repetitivos. Que varias URL apunten al mismo contenido, vigilar el acceso mediante www o sin él. Una navegación excesivamente complicada para el Usuario o que desde todas las páginas puedas ir a todos los sitios. Tampoco se recomienda el uso de imágenes o animaciones para la barra de navegación (menus) Mala Ortografía, descuidada y que el usuario no entienda. También hay que estructurarlo adecuadamente mediante las metaetiquetas de cabecera siempre que haga falta Texto Ancla de los enlaces genéricos como aquí, este link,... Nombres de imágenes genéricas que no describen su contenido, o nombres muy largos. Tampoco nos ayuda sin en la propiedad "Alt" ponemos muchas palabras clave o descripciones muy largas. Uso de imágenes para indicar texto. Los robots no pueden leer el contenido de la imagen, se centran en su propiedad Alt, les es más fácil y sencillo leer Texto plano, por eso es normal que se premie Que los robots de los motores de búsqueda puedan acceder a todos los lugares de tu página. Permitir que obtengan muchas páginas similares sin valor añadido Una de las frases que escuche en una conferencia fueTodo lo que hagamos que le de más trabajo a los robots de los motores de búsqueda ¡Malo!
Por lo que deducimos que la sencillez y simplicidad es un premio para los desarrolladores del que se beneficia el usuario.... - SEO para principiantes orientado a Motores de Busqueda
SEO para principiantes orientado a Motores de Busqueda
Basado en el Informe de Google Guía de Optimización para Motores de Búsqueda especialmente escrito para Principiantes, del cual vamos a sacar los puntos claves en el SEO, y después todo aquello que tenemos que evitar hacer y que nos recomiendan.Puntos Clave
Crear títulos únicos y precisos para cada página Utilizar descripciones mediante la etiqueta meta description únicas URL claras y descriptivas Una buena Navegación orientada al Usuario Crear contenidos originales Utilizar las etiquetas de Cabecera <h1>,<h2>,... bien estructuradas Los enlaces mediante un texto Ancla descriptivo Optimizar el uso de Imágenes y no olvidarse de la propiedad "Alt" Definir un Robots.txt acorde a nuestras necesidades Preguntarse si podemos poner la propiedad "nofollow" a los enlaces Todos estos puntos clave, son apreciaciones que deberíamos ir profundizando uno a uno, y para ello es cuestión de leer y tener paciencia.Conclusión
De momento ya tenemos trabajo, porque la duplicidad del contenido es uno de los temas más penalizados por los motores de búsqueda y uno de los más difíciles de conseguir. Este pequeño resumen pretender ser una guía SEO para principiantes (donde me incluyo) y así poder ir optimizando nuestras páginas webs.... - Insertar Codigo Html, Php, ... desde un QuickTag de Wordpress
Insertar Codigo Html, Php, ... desde un QuickTag de Wordpress
El objetivo consistía en conseguir que, por Javascript nos apareciera una ventana para que pongamos el código que queremos introducir en nuestro artículo, y que justo antes de devolver el texto que convirtiera los caracteres especiales a código ASCII / HTML. Pues bien, después de ver algunos trucos para poder insertar vídeos de Youtube validados, me pregunté ¿porque no hacer lo mismo con el código?, el resultado y un ejemplo sería algo así.
...//Aquí podemos escribir el código que queramos <div style="color: red"> Probando el nuevo invento <?php echo "cualquier cosa" ?> </div> //Como podemos ver, funciona