Obtain the realities regarding

01/12/2021
Artículo original

Obtain the realities regarding gluten complimentary foods– with suggestions on what to prevent, what to delight in, and scrumptious, gluten-free alternatives to keep you healthy and balanced and happy. While the factors for this are unknown, scientists believe that the diet causes metabolic changes that might help lower the threat of seizures. With omega-3 fatty acids, antioxidants, and vitamins, these foods play a role in maintaining memory as well as focus along with warding off cognitive decline, stroke, as well as neurodegenerative conditions like Alzheimer’s. The various other adverse aspect of this diet plan is that the prepackaged foods contain the artificial sweeteners Sucralose and also Acesulfame K. You are given access to this and also an online account with area support as part of each of the programs. … all countries shares distinctive resemblances– diet plans rich in sweeteners and also hydrogenated fats, absence of workout, and the schedule of inexpensive processed foods. Certainly, some clinical conditions do require special eating plans. In these circumstances, any kind of suggestions from your physician ought to be complied with. Discover new exercise concepts, healthy-eating dishes, makeup looks, skin-care suggestions, the most effective beauty items and ideas, fads, and also much more from SELF. SELF does not provide medical recommendations, diagnosis, or therapy. Any information released on this web site or by this brand is not meant as a replacement for medical guidance, and you need to not take any type of action prior to talking to a medical care expert. This will certainly enable commissioners as well as the general public to keep track of and examine certain programmes to analyze whether they are satisfying their objectives and supplying value for cash. This ensures that any issues with the programs are recognized as early as possible, to ensure that the programmes can be boosted, causing far better results for kids as well as youngsters utilizing the programmes. It will certainly likewise assist children as well as youths, and their parents or carers, to choose way of living weight administration programs. Health examination, individual background, blood examinations, and imaging tests are utilized to identify heart disease. Treatment of heart failure contains way of life alteration and taking medications to lower fluid in the body and also reduce the pressure on the heart. The diagnosis of a patient with congestive heart failure depends on the stage of the cardiac arrest as well as the total condition of the person. Our diet plans are indicated to have an equilibrium of healthy protein, carbs, and fat. Declining diet plan society’s harmful messages will certainly assist you kick back as well as delight in the vacations without food shame. If you’re having a hard time to adhere to specific food options, attempt creating aggressive methods rather than trying to resist lure in the minute. Psychologists formerly believed that determination was finite, that it frayed the more people withstood an appealing treat, for example. However new, durable study has called that idea into inquiry, locating little proof that vanity depletion exists. … from a faulty or inadequate diet plan (i.e., a diet regimen that does not provide typical quantities of all nutrients) or from a physical failure to take in or metabolize nutrients. … some instances an adjustment in diet works.) Boosted prenatal treatment might minimize the dimension of one more team of intellectually impaired individuals whose problem comes from mental retardation received during fetal life. Determining the infant’s weight and also head circumference and outlining the results on a growth graph. Numerator– the number in the who had a 6- to 8-week physical exam. Percentage of babies that had a 6- to 8-week health examination. How to bond with the baby when container feeding, via skin-to-skin call, eye get in touch with and also the potential advantage of reducing the number of people routinely feeding the child. Women or main carers of formula-fed infants have the opportunity to discuss information about bottle feeding. Extreme weight loss can cause issues if you don’t obtain the appropriate kinds as well as amounts of nutrients. However eating well balanced meals and also treats and also working out can aid you lose weight as well as assistance regular development. Normal workout can aid teenagers feel healthier and far better concerning themselves. It includes the 8 easy actions listed below, plus extra– to present you to the Mediterranean Diet. Obesity Weight problems is the state of being well above one’s regular weight. A person has actually traditionally been considered to be obese if they are greater than 20% over their perfect weight. That perfect weight must take into consideration the individual’s elevation, age, sex, and also develop. Impotence Erectile dysfunction is the failing to attain or preserve an erection. There are many potential underlying causes of impotence, including tension and also emotional troubles, mind dysfunction, troubles with blood supply to the penis, and also structural problems with the penis. Pick intelligently for a healthy diet that keeps you complete around the clock … This research does raise questions concerning about long-lasting impacts as well as mechanisms, but the researchers concluded that a. low-carbohydrate, high-protein, high-fat diet might be taken into consideration a feasible suggestion for weight loss. Supporters of this two-phase diet plan insurance claim that increasing your sirtuin consumption, through polyphenol-rich foods like kale as well as dark chocolate, will trigger “slim gene” paths and cause weight-loss. Although potentially less damaging than some of the various other fad diets available, this type of eating strategy might promote binge consuming or various other kinds of disordered eating patterns. A) Evidence of local setups to guarantee that parents or major carers of babies are provided a consultation for the baby to participate in for a 6- to 8-week physical exam. The objective of the exam is to identify children most likely to have problems that would certainly gain from additional examination and also administration. This consists of a total checkup as well as evaluating for eye issues, congenital heart defects, developmental dysplasia of the hip and also undescended testicles. The majority of babies will certainly be healthy, however the handful of children who do have significant issues will certainly gain from timely recognition. Basic healthy recipes using food purchased with the vouchers, taking the household situations right into account, as an example, their religion and also culture, as well as the dimension of the family. Common denominator– the variety of inoculation appointments at age 3 years 5 months to 4 years where moms and dads as well as carers might be eligible for the Healthy Begin system. — the number of 8- to 1-month developmental testimonials where moms and dads as well as carers might be eligible for the Healthy Begin plan.

Tutorial SQL #6: Agrupaciones y funciones de agregación

26/11/2021
Artículo original

SQL-Funciones-Agregacion

Terminamos con nuestro tutorial sobre los fundamentos del lenguaje de consultas SQL. Recuerda: si quieres aprender SQL en serio con todo el apoyo de un tutor especialista, nuestro curso online de fundamentos de SQL es tu mejor opción para aprender de forma rápida y eficaz.

[youtube:XdOGAmMctHg]

Hasta ahora hemos estudiado las consultas simples, las consultas multi-tabla, los diferentes tipos de JOIN en las consultas multi-tabla y las operaciones con conjuntos, (aparte de poner en marcha el entorno de pruebas y conocer la base de datos que vamos a utilizar).

En esta ocasión vamos a estudiar cómo generar resultados de consultas agrupados y con algunas operaciones de agregación aplicadas.

Funciones de agregación

Las funciones de agregación en SQL nos permiten efectuar operaciones sobre un conjunto de resultados, pero devolviendo un único valor agregado para todos ellos. Es decir, nos permiten obtener medias, máximos, etc... sobre un conjunto de valores.

Las funciones de agregación básicas que soportan todos los gestores de datos son las siguientes:

    • COUNT: devuelve el número total de filas seleccionadas por la consulta.
    • MIN: devuelve el valor mínimo del campo que especifiquemos.
    • MAX: devuelve el valor máximo del campo que especifiquemos.
    • SUM: suma los valores del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas.
    • AVG: devuelve el valor promedio del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas.

Las funciones anteriores son las básicas en SQL, pero cada sistema gestor de bases de datos relacionales ofrece su propio conjunto, más amplio, con otras funciones de agregación particulares. Puedes consultar las que ofrecen SQL Server, Oracle o MySQL.

Todas estas funciones se aplican a una sola columna, que especificaremos entre paréntesis, excepto la función COUNT, que se puede aplicar a una columna o indicar un “*”. La diferencia entre poner el nombre de una columna o un “*”, es que en el primer caso no cuenta los valores nulos para dicha columna, y en el segundo si.

Nota: Si esta serie de artículos te está pareciendo interesante, entonces ni te imaginas lo que puedes aprender con este curso de fundamentos de SQL.

Así, por ejemplo, si queremos obtener algunos datos agregados de la tabla de pedidos de la base de datos de ejemplo Northwind, podemos escribir una consulta simple como la siguiente:

SELECT COUNT(*) AS TotalFilas, COUNT(ShipRegion) AS FilasNoNulas, 
MIN(ShippedDate) AS FechaMin, MAX(ShippedDate) AS FechaMax, 
SUM(Freight) AS PesoTotal, AVG(Freight) PesoPromedio
FROM Orders

y obtendríamos el siguiente resultado en el entorno de pruebas:

Valores-Agregados-SQL-Ej1

De esta manera sabremos que existen en total 830 pedidos en la base de datos, 323 registros que tienen asignada una zona de entrega, la fecha del pedido más antiguo (el 10 de julio de 1996), la fecha del pedido más reciente (el 6 de mayo de 1998 ¡los datos de ejemplo son muy antiguos!), el total de peso enviado entre todos los pedidos (64.942,69 Kg o sea, más de 64 toneladas) y el peso promedio del los envíos (78,2442Kg). No está mal para una consulta tan simple.

Como podemos observar del resultado de la consulta anterior, las funciones de agregación devuelven una sola fila, salvo que vayan unidas a la cláusula GROUP BY, que veremos a continuación.

Agrupando resultados

La cláusula GROUP BY unida a un SELECT permite agrupar filas según las columnas que se indiquen como parámetros, y se suele utilizar en conjunto con las funciones de agrupación, para obtener datos resumidos y agrupados por las columnas que se necesiten.

Hemos visto en el ejemplo anterior que obteníamos sólo una fila con los datos indicados correspondientes a toda la tabla. Ahora vamos a ver con otro ejemplo cómo obtener datos correspondientes a diversos grupos de filas, concretamente agrupados por cada empleado:

SELECT EmployeeID, COUNT(*) AS TotalPedidos, COUNT(ShipRegion) AS FilasNoNulas, 
MIN(ShippedDate) AS FechaMin, MAX(ShippedDate) AS FechaMax, 
SUM(Freight) PesoTotal, AVG(Freight) PesoPromedio
FROM Orders
GROUP BY EmployeeID

En este caso obtenemos los mismos datos pero agrupándolos por empleado, de modo que para cada empleado de la base de datos sabemos cuántos pedidos ha realizado, cuándo fue el primero y el último, etc...:

Valores-Agregados-SQL-Ej2

De hecho nos resultaría muy fácil cruzarla con la tabla de empleados, usando lo aprendido sobre consultas multi-tabla, y que se devolvieran los mismos resultados con el nombre y los apellidos de cada empleado:

Valores-Agregados-SQL-Ej3

En este caso fíjate en cómo hemos usado la expresión Employees.FirstName + ' ' + Employees.LastName como parámetro en GROUP BY para que nos agrupe por un campo compuesto (en SQL Server no podemos usar alias de campos para las agrupaciones). De esta forma tenemos casi un informe preparado con una simple consulta de agregación.

Importante: Es muy importante tener en cuenta que cuando utilizamos la cláusula GROUP BY, los únicos campos que podemos incluir en el SELECT sin que estén dentro de una función de agregación, son los que vayan especificados en el GROUP BY..

La cláusula GROUP BY se puede utilizar con más de un campo al mismo tiempo. Si indicamos más de un campo como parámetro nos devolverá la información agrupada por los registros que tengan el mismo valor en los campos indicados.

Por ejemplo, si queremos conocer la cantidad de pedidos que cada empleado ha enviado a través de cada transportista, podemos escribir una consulta como la siguiente:

SELECT Employees.FirstName + ' ' + Employees.LastName AS Empleado,
Shippers.CompanyName AS Transportista, 
COUNT(Orders.OrderID)AS NumPedidos
FROM Orders INNER JOIN Shippers ON Orders.ShipVia = Shippers.ShipperID
INNER JOIN Employees ON Orders.EmployeeID=Employees.EmployeeID
GROUP BY Employees.FirstName + ' ' + Employees.LastName, Shippers.CompanyName

Con el siguiente resultado:

Valores-Agregados-SQL-Ej4

Así, sabremos que Andrew Fuller envió 25 pedidos con Federal Shipping, y 35 con Federal Express.

El utilizar la cláusula GROUP BY no garantiza que los datos se devuelvan ordenados. Suele ser una práctica recomendable incluir una cláusula ORDER BY por las mismas columnas que utilicemos en GROUP BY, especificando el orden que nos interese. Por ejemplo, en el caso anterior

Existe una cláusula especial, parecida a la WHERE que ya conocemos que nos permite especificar las condiciones de filtro para los diferentes grupos de filas que devuelven estas consultas agregadas. Esta cláusula es HAVING.

HAVING es muy similar a la cláusula WHERE, pero en vez de afectar a las filas de la tabla, afecta a los grupos obtenidos.

Por ejemplo, si queremos repetir la consulta de pedidos por empleado de hace un rato, pero obteniendo solamente aquellos que hayan enviado más de 5.000 Kg de producto, y ordenados por el nombre del empleado, la consulta sería muy sencilla usando HAVING y ORDER BY:

SELECT Employees.FirstName + ' ' + Employees.LastName AS Empleado, COUNT(*) AS TotalPedidos, 
COUNT(ShipRegion) AS FilasNoNulas, 
MIN(ShippedDate) AS FechaMin, MAX(ShippedDate) AS FechaMax, 
SUM(Freight) PesoTotal, AVG(Freight) PesoPromedio
FROM Orders INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
GROUP BY Employees.FirstName + ' ' + Employees.LastName
HAVING SUM(Freight) > 5000
ORDER BY Employees.FirstName + ' ' + Employees.LastName ASC

Ahora obtenemos los resultados agrupados por empleado también, pero solo aquellos que cumplan la condición indicada (o condiciones indicadas, pues se pueden combinar). Antes nos salían 9 empleados, y ahora solo 6 pues hay 3 cuyos envíos totales son muy pequeños:

Valores-Agregados-SQL-Ej5

 

PHP cuenta con pocos desarrolladores pese a ser uno de los lenguajes de programación más extendidos: así quieren ponerle solución

25/11/2021
Artículo original

PHP cuenta con pocos desarrolladores pese a ser uno de los lenguajes de programación más extendidos: así quieren ponerle solución

PHP, uno de los lenguajes de programación más populares, va a recibir el apoyo de una nueva fundación que tiene como objetivo asegurar su futuro. El lenguaje PHP fue creado por Rasmus Lerdorf en 1995 y es un lenguaje popular para aprender. Según datos de W3Techs, se usa en cerca del 78% de los sitios web del mundo.

JetBrains, la empresa detrás del IDE para java Intellij IDEA, ha sido quien ha anunciado esta semana la nueva PHP Foundation. "Es el compromiso de varias empresas que ayudarán a financiar el desarrollo futuro de PHP, incluyendo Automattic, Laravel, Acquia, Zend, Private Packagist, Symfony, Craft CMS, Tideways y PrestaShop" y también JetBrains.

Momento clave tras la partida de uno de los principales colaboradores de PHP

Indice

La idea de una Fundación PHP se ha sopesado durante años, pero fue la salida de Nikita Popov, un colaborador clave de PHP, lo que hizo tomar esta decisión, según ZDnet. Popov, que ha estado trabajando en PHP durante 10 años, incluyendo tres años mientras era parte de JetBrains (proyecto que va a abandonar en diciembre, según la información oficial), ha decidido cambiar su enfoque a LLVM.

"Además de PHP, Nikita ha contribuido durante mucho tiempo a Rust y LLVM. Y al igual que con PHP, cuando pasó de ser un hobby a un trabajo real, Nikita ha decidido centrar sus actividades profesionales en LLVM", señaló JetBrains.

"Perder a uno de los principales colaboradores de PHP es un golpe para la comunidad, porque es portador de muchos conocimientos y experiencia. Pone al lenguaje que impulsa el 78% de la Web en una posición frágil", han dicho desde JetBrains. La fundación quiere solventar un gran problema para PHP: el escaso número de desarrolladores comprometidos con el mantenimiento de ciertas partes clave de PHP, un problema planteado por el colaborador de PHP Joe Watkins en mayo.

La Fundación PHP está recaudando fondos a través de Open Collective y hasta el momento ha reunido cerca de la mitad del presupuesto anual de 84.000 dólares, gracias al crowdfunding, que calcula que va a necesitar. En total, espera recaudar unos 300.000 dólares al año, un tercio de los cuales llegarán desde JetBrains anualmente. Este dinero debería ir destinado a pagar salarios de más desarrolladores que quieran centrarse en PHP.

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

Qué es una API: tipos, usos y funcionamiento

24/11/2021
Artículo original

Imagen ornamentalSeguro que has oído hablar mil veces de APIs. Una API para esto o para aquello... y si estás empezando en el mundo de la programación te sonará un poco "a chino". No te preocupes. Te voy a explicar en palabras llanas y fácilmente comprensibles qué es una API, para qué sirven, qué tipos existen y cómo se crean.

[youtube:wMzqvUWXZ-0]

¿Qué es una API?

Una API (Application Programming Interface) es la manera en la que una aplicación expone datos y funcionalidad hacia otras aplicaciones. O sea, es una forma de comunicar entre sí a dos o más aplicaciones, para obtener datos, mandar órdenes, etc...

Existen APIs de uso local y APIs de uso remoto, que son generalmente para la Web.

Una API de uso local está pensada para que una aplicación exponga funcionalidad hacia otras aplicaciones que están instaladas en la misma máquina. Por ejemplo, Microsoft Office (ya sabes, Word, Excel, PowerPoint...) ofrece varias APIs que permiten que hagas uso de sus capacidades desde tus propias aplicaciones, por ejemplo para generar una Excel a partir de datos que tienes en tu app, y cosas así. Windows ofrece también multitud de APIs para que tu aplicación pueda hacer de todo en el sistema. Este es el concepto tradicional de API y han existido muchos estándares a lo largo de los últimos 30 o 40 años para crearlas, aunque los dos más relevantes fueron COM/ActiveX de Microsoft y CORBA, de muchos otros fabricantes.

Sin embargo, hoy en día si te hablan de APIs seguramente se están refiriendo más bien a APIs de uso remoto o APIs Web.

Una API Web comunica a través de Internet a dos o más aplicaciones para intercambiar información y para enviar y recibir órdenes.

En función del uso que hagas de ellas tienes dos tipos de APIs Web: las que están orientadas a prestar un servicio y las que exponen funcionalidad de una aplicación.

APIs Web orientadas a prestar un servicio

Por ejemplo, si tienes que hacer una tienda online, lógicamente tendrás que tener una forma de cobrar a los usuarios. Podrías plantearte crear tu propio sistema de cobro que reciba, procese y guarde las tarjetas de crédito, comunicándose con los bancos, etc... Pero sería una locura porque es muy complejo y la seguridad es muy estricta. No sería viable que lo hicieses.

Por suerte, existen muchos proveedores de servicios de pago que tienen ya hecho todo eso y que te permiten usar su desarrollo a través de una API. Así, cuando quieres implementar pagos en tu tienda online o en tu aplicación lo único que tienes que hacer es utilizar una de estas APIs, por ejemplo la de Paypal o la de Stripe, que ya te lo dan todo hecho. A cambio, te cobrarán algo por facilitarte el servicio pero te ahorran todo el trabajo, que en muchos casos no serías capaz de abordar por tu cuenta jamás.

Pues lo mismo pasa con mil cosas más: ¿necesitas mapas y mediciones? Pues hacer mapas de todo el mundo y mantenerlos al día sería imposible pero Google u Open Street Map, entre otros, te lo dan hecho a través de una API. Tienes APIs para casi todo lo que se te ocurra: el tiempo meteorológico en cualquier parte del mundo, las cotizaciones de bolsa en tiempo real, síntesis de voz, reconocimiento de caras... En fin, cualquier cosa que imagines.

APIs que exponen funcionalidad de otras apps

La otra gran clasificación podría ser la de las aplicaciones que exponen toda o parte de su funcionalidad hacia otras. Por ejemplo, Twitter tiene una API que le permite hacer a tu aplicación lo mismo que haría un usuario en esta red social. Esta API es utilizada por muchas aplicaciones por ahí para crear interfaces de Twitter más bonitas o con más funcionalidad, para automatizar tu presencia en redes sociales, y mil cosas más.

Casi todas las aplicaciones Web que conoces tienen APIs para poder usarlas desde otras aplicaciones. Y sin duda si haces una aplicación Web tarde o temprano querrás tener una API y dejar que las aplicaciones de tus clientes puedan comunicarse y automatizar tu propia aplicación. Por ejemplo, nuestra plataforma de elearning tiene una API que permite a nuestros clientes grandes matricular automáticamente a los alumnos en cuanto quieren hacer un curso, o sacar información sobre un alumno concreto en una formación para saber cómo va. De esta forma no tienen que entrar en varias aplicaciones (como mínimo la suya de gestión y la plataforma) para hacer lo mismo o repetir los datos, ahorrando tiempo y errores.

Cómo se crea una API

Casi todas las plataformas de desarrollo (.NET, Java, Node.js, PHP...) ofrecen una manera sencilla de utilizar las APIs Web, y también una forma, más o menos compleja según el caso, de crear APIs para permitir que otros se comuniquen con ellas.

Existen varios estándares para crear este tipo de APIs Web: desde el antiguo SOAP basado en XML, a APIs de tipo REST o GraphQL, por citar los más conocidos.

Te dejo un vídeo aquí en el que te explico cómo puedes crear de manera sencilla, en unos minutos, un API básica para simular una API real, como preparación a luego crear una propia.

Un estudio sugiere que el ruido no afecta el trabajo de los desarrolladores, excepto cuando toca arreglar bugs

22/11/2021
Artículo original

Un estudio sugiere que el ruido no afecta el trabajo de los desarrolladores, excepto cuando toca arreglar bugs

Si hay un tema que suele ser popular entre nuestros lectores, son los que tratan sobre sonidos de fondo relajantes para ayudar a la concentración, o en casos incluso más específicos, sitios que ofrecen música "diseñada" para programar.

Pero hay otro extremo de gente que más allá de este tipo de sonidos relajantes, demandan... ruido. Para quienes echan de menos las oficinas hay webs con sonidos de impresoras, ventiladores y compañeros ruidosos, y para quienes extrañan el teletrabajo hay webs que ponen de fondo incluso a vecinos ruidosos o niños llorando. Lo que sea que funcione ¿No? Pues depende, y en el caso de los ingenieros de software, se han hecho algunos experimentos interesantes al respecto.

El efecto del ruido en el rendimiento de los programadores

The 9th Coworking Qeagaujw Fw Unsplash

Un estudio publicado en IEEE Xlplore por varios investigadores de la Universidad de Bari y la Universidad de Basilicata en Italia, junto a un investigador sueco del Instituto de Tecnología de Blekinge, se ha dedicado a investigar el efecto que tiene el ruido sobre el rendimiento de los ingenieros de software.

Para ello realizaron un experimento que fue replicado una vez, y en el que estudiaron sobre el efecto que tiene el ruido sobre a la hora de que un programador intente entender los requerimientos y especificaciones en código fuente, además de arreglar problemas en este.

Los resultados son interesantes porque, aunque sugieren que el ruido no afecta significativamente a la comprensión de las especificaciones de requisitos funcionales, sí afecta significativa y negativamente a la corrección de fallos.

Ahora, hay que destacar que los investigadores especifican que la dificultad para corregir bugs cuándo hay ruido estorbando ocurre si el programador tiene que realizar la tarea en unos 30 minutos, mientras que si la tarea dura unos 60 minutos el impacto negativo se reduce hasta ser casi insignificante.

La conclusión es que la corrección de bugs es más vulnerable al ruido que la comprensión de las especificaciones de los requisitos funcionales del código. Básicamente, si el ingeniero está intentando entender algo el ruido no molesta tanto como si intenta resolver un problema.

Estudios similares apuntan que el ruido también puede afectar las funciones cognitivas y la productividad, y otros hablan incluso de lo poco que en realidad ayudan dispositivos como los auriculares con cancelación de ruido. Para algunos estas cosas pueden parecer una "obviedad", pero este tipo de estudios ayudan a poner en papel la ciencia detrás de algo que puede ayudar a que se creen políticas para ayudar a los trabajadores a tener mejores condiciones de trabajo, unas en las que no haya que trabajar rodeados de un mar de distracciones sonoras.

{"videoId":"x7ziu8u","autoplay":true,"title":"Las matemáticas no se me dan mal, quiero aprender a programar CAPTCHA 2x04"}

Vía | @emollick

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

PowerPoint: exportar slides a PNG a alta resolución (Full-HD o más) en Windows

20/11/2021
Artículo original

Aunque pueda parecer extraño, yo uso PowerPoint bastante más para crear gráficos explicativos que para hacer presentaciones. El SmartArt y las gráficas dan mucho juego para ciertas cosas, y luego puedes exportar los "slides" a formatos gráficos (el más recomendable PNG) para usarlos en otro lado.

Diálogo de exportación de PowerPoint

Sin embargo, una cosa bastante absurda que tiene es que, cuando exportas una imagen, por defecto utiliza resolución HD (o sea, 1280x720) y no tiene ninguna opción para elegir una resolución diferente. Da igual el tamaño de tu pantalla, porque no tiene nada que ver. Es un tanto frustrante, la verdad, lleva así desde siempre, y no sé cómo no han incluido ya algo en la interfaz para facilitar el elegir una resolución.

Por suerte, hay una manera de solucionarlo, aunque no es nada operativa: tocar el registro del sistema.

Existe una clave, que en versiones modernas (2016 o posteriores, incluyendo Office 365) está en HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\PowerPoint\Options y que nos permite controlar ese ajuste.

Se trata de crear una nueva clave, de tipo DWORD con el nombre ExportBitmapResolution. Esta clave nos permite establecer una resolución en función de los puntos de pulgada de la imagen deseada. Cuando no existe tiene el valor 96 (para pantalla) y por eso sale a 720. Pero le podemos poner otros valores para conseguir otras resoluciones. Por ejemplo, 150 nos daría una resolución de 2000×1125 para las slides exportadas a imágenes, o con 300 tendríamos una resolución enorme de 4000×2250.

Para Full-HD, siguiendo la proporción, necesitaríamos ponerle el valor 144 (que en el registro sería 90, ya que hay que ponerlo en hexadecimal).

Para facilitártelo y que no tengas que tocar directamente el registro, he creado este archivo .reg (380 bytes, aquí lo tienes dentro de un ZIP: descomprímelo antes de usarlo) que, si le haces doble clic, lo mete en el registro y te permite exportar las imágenes a Full-HD (1920x180). Necesitas permisos de administrador para hacerlo.

¡Espero que te resulte útil!

 

C es el lenguaje de programación 'más verde', seguido de cerca por Rust: son los que consumen menos energía al ejecutar algoritmos

19/11/2021
Artículo original

C es el lenguaje de programación 'más verde', seguido de cerca por Rust: son los que consumen menos energía al ejecutar algoritmos

Llevamos un tiempo en el que la preocupación tanto por la sostenibilidad ecológica como el precio de la luz (más aún ahora, ante la actual crisis energética) nos ha llevado a plantearnos cuánto consumen nuestra casa, nuestras rutas por carretera o las webs que visitamos.

Pero, ¿nos hemos preguntado alguna vez qué lenguaje de programación es más sostenible? Ciertamente, no es un dato que estemos acostumbrados a plantearnos a la hora de optar entre C# y Java, entre Rust o Pascal, o entre JavaScript y Python, por ejemplo.

Factores como bajo/alto nivel, cantidad de documentación disponible o la disponibilidad multiplataforma sí, pero ¿gasto eléctrico? …parece raro incluso planteárselo.

Sin embargo, he aquí que hace unos años seis investigadores de universidades portuguesas se propusieron investigar el consumo de energía, el tiempo de ejecución y el uso de memoria de hasta 27 de los lenguajes de programación más populares, presentando posteriormente su investigación en la International Conference on Software Language Engineering 2017.

Sus creadores, además, han ido actualizando la metodología y versiones de los lenguajes usados, habiéndose publicado la última revisión del estudio en mayo de este año, por lo que los resultados siguen siendo pertinentes para los programadores preocupados por 'lo verde':

"Monitorizamos el rendimiento de dichos lenguajes utilizando diez problemas de programación diferentes", explican en el 'paper', en referencia a los algoritmos estándar recopilados por el proyecto Computer Language Benchmarks Game, dedicado a implementar algoritmos en diferentes lenguajes.

Además, para medir el consumo de energía, el equipo recurrió a la herramienta RAPL (Running Average Power Limit) de Intel, capaz de proporcionar estimaciones de consumo energético enormemente precisas.

"Nuestros resultados muestran hallazgos interesantes, como lenguajes más lentos / más rápidos que consumen menos / más energía, y cómo el uso de la memoria influye en el consumo de energía. Mostramos cómo usar nuestros resultados para proporcionar apoyo a los ingenieros de software para decidir por qué lenguaje optar cuando la eficiencia energética es una preocupación".

Los investigadores recuerdan que, dado que la energía no se consume a un ritmo constante, no basta con recurrir a la fórmula 'Energía = Tiempo x Potencia'

Los cinco lenguajes más veloces, también los más ecológicos

La mayoría de nosotros podría dar por sentado que una aplicación que se ejecuta más rápido consumirá menos energía. Pero esto no siempre es cierto, pues influyen diversos factores físicos, lo que se refleja en la disparidad en los rankings de cada uno de los tres criterios valorados.

Sin embargo, sí hay coincidencia entre los cinco lenguajes más veloces y los cinco con menor consumo energético, alzándose C con el puesto de 'Lenguaje de programación más verde', seguido muy de cerca por Rust:

  1. C
  2. Rust
  3. C++
  4. Ada
  5. Java

C Verde

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

Tutorial SQL #5: Operaciones con conjuntos

19/11/2021
Artículo original

SQL_Operaciones_De_Conjuntos

Hasta ahora hemos estudiado las consultas simples, las consultas multi-tabla y los diferentes tipos de JOIN en las consultas multi-tabla. Ahora vamos a aprender a operar con conjuntos de resultados.

[youtube:mCQq2_DUduQ]

Combinando consultas multi-tabla

Con las variantes INNER, LEFT, RIGHT y FULL de consultas multi-tabla somos capaces de obtener registros relacionados y los registros relacionados + los registros no relacionados en uno de los dos lados o en ambos, básicamente estas combinaciones de los datos de dos tablas:

INNER-LEFT-RIGHT-FULL-JOIN

Pero ¿qué pasa si queremos jugar con la parte común para conseguir combinaciones como éstas pero excluyendo los datos comunes?

Nota: Si esta serie de artículos sobre SQL te está pareciendo interesante, ni te imaginas lo que puedes aprender con este curso de fundamentos de SQL.

Por ejemplo, en el caso de la base de datos Nortwind, si queremos obtener los clientes que NO tienen pedidos. Sería equivalente a esto en nuestros diagramas de Venn:

LEFT-ONLY

Es decir, sería equivalente a una hipotética cláusula LEFT ONLY (que no existe en SQL) en la que estamos excluyendo el resultado del INNER JOIN.

Dado que lo que queremos es encontrar a los que no tienen relación, es decir, aquellos cuyo campo de unión en el JOIN no existe en la tabla de la derecha, podemos usar una sintaxis como esta:

SELECT T1.Col1, T1.Col2, T1.Col3, T2.Col7
FROM Tabla1 T1 LEFT [OUTER] JOIN Tabla2 T2 ON T1.Col1 = T2.Col1
WHERE T2.Col1 IS NULL

Es decir, basta con indicar que el campo en la tabla de la derecha es nulo, o sea, falla la relación por ese lado.

En nuestra base de datos de ejemplo si lanzamos esta consulta:

SELECT OrderID, C.CustomerID, CompanyName, OrderDate
FROM Customers C FULL JOIN Orders O ON C.CustomerID = O.CustomerID
WHERE O.CustomerID IS NULL

Obtendremos todos los clientes que no tienen pedidos, que como sabemos de otras ocasiones son solamente dos:

LEFT-ONLY-Resultados

Fíjate en como se obtienen los resultados con los campos correspondientes al pedido nulos.

Si solo nos interesara conocer qué clientes son estos sería fácil hacerlo con una consulta y su correspondiente sub-consulta, sin necesidad de usar un JOIN, de la siguiente manera:

SELECT CustomerID, CompanyName FROM Customers
WHERE CustomerID NOT IN (SELECT DISTINCT CustomerID FROM Orders)

que nos devuelve la información que queremos pero la relación que buscamos es menos obvia y no involucra campos de la tabla de la derecha (a excepción de la clave externa, claro).

Exactamente del mismo modo pero cambiando la consulta por su “espejo” podríamos simular una hipotética función RIGHT ONLY de la siguiente manera:

SELECT T1.Col1, T1.Col2, T1.Col3, T2.Col7
FROM Tabla1 T1 LEFT [OUTER] JOIN Tabla2 T2 ON T1.Col1 = T2.Col1
WHERE T1.Col1 IS NULL

que es equivalente al siguiente diagrama:

RIGHT-ONLY

Finalmente, y rizando el rizo, podríamos obtener únicamente todos los registros desparejados de la tabla de la izquierda y todos los desparejados de la tabla de la derecha para una hipotética operación EXCEPT INNER que no existe en SQL:

EXCEPT-INNER

simplemente combinando ambas condiciones vistas antes:

SELECT T1.Col1, T1.Col2, T1.Col3, T2.Col7
FROM Tabla1 T1 LEFT [OUTER] JOIN Tabla2 T2 ON T1.Col1 = T2.Col1
WHERE T1.Col1 IS NULL OR T2.Col1 IS NULL

Con esto tenemos contempladas todas las operaciones entre dos conjuntos de tablas relacionadas.

Operaciones de conjuntos entre tablas independientes

Además de lo visto hasta ahora es posible combinar los resultados de dos consultas independientes y fusionarlos en uno solo o realizar otras operaciones de conjuntos.

Por ejemplo podemos tomar el nombre y apellidos de todos los clientes de una tabla de clientes, y combinarlos con el nombre y los apellidos de todos los proveedores de una tabla de proveedores. No existe relación alguna entre ellos, pero son datos compatibles y podemos querer combinarlos.

Del mismo modo, y asumiendo que puede haber solapamiento entre ambas tablas, podríamos querer averiguar qué clientes tenemos que además son proveedores, o al contrario, qué proveedores no son clientes.

Veamos como...

La cláusula UNION de SQL permite unir las filas devueltas por dos instrucciones SELECT. Para ello se debe cumplir que las columnas devueltas en ambas instrucciones coincidan en número y en tipo de datos de cada una de ellas, ya que en caso contrario dará un error al ejecutarse.

Su sintaxis es:

SELECT Columnas FROM …
UNION [ALL]
SELECT Columnas FROM …

Si utilizamos la opción ALL, aparecerán todas las filas devueltas por ambas instrucciones SELECT, pero si no la ponemos se eliminarán las filas repetidas.

Veamos un ejemplo con la base de datos Northwind:

SELECT ShipCountry FROM Orders
UNION
SELECT Country FROM Customers

Esta consulta nos devolverá la lista de todos los países de destino de los pedidos, unidos a los países de ubicación de los clientes (que no tienen por qué coincidir). En este caso, si lanzamos la consulta, obtendremos 21 registros.

Sin embargo añadiéndole la opción ALL:

SELECT ShipCountry FROM Orders
UNION ALL
SELECT Country FROM Customers

nos devolverá todos los registros existentes, aunque estén repetidos, y obtendremos 921 filas como resultado (¡frente a 21 de antes!).

Si tuviésemos en vez de una sola tabla de ventas (Orders), una tabla de ventas por cada año (por ejemplo Orders2001, Orders2002, Orders2003, Orders2004, Orders2005 y Orders2006). Si necesitamos un listado con el Nº de pedido, el nombre del empleado que la realizó, y la fecha, de todas las ventas del cliente cuyo código es ‘ALFKI’ a lo largo de todos esos años, podríamos combinar los resultados con UNION para obtener el listado consolidado:

SELECT O.OrderID, E.FirstName, O.OrderDate
FROM Orders2001 O INNER JOIN Employees E ON O.EmployeeID = E.EmployeeID
UNION ALL
SELECT O.OrderID, E.FirstName, O.OrderDate
FROM Orders2002 O INNER JOIN Employees E ON O.EmployeeID = E.EmployeeID
UNION ALL
SELECT O.OrderID, E.FirstName, O.OrderDate
FROM Orders2003 O INNER JOIN Employees E ON O.EmployeeID = E.EmployeeID
UNION ALL
SELECT O.OrderID, E.FirstName, O.OrderDate
FROM Orders2004 O INNER JOIN Employees E ON O.EmployeeID = E.EmployeeID
UNION ALL
SELECT O.OrderID, E.FirstName, O.OrderDate
FROM Orders2005 O INNER JOIN Employees E ON O.EmployeeID = E.EmployeeID
UNION ALL
SELECT O.OrderID, E.FirstName, O.OrderDate
FROM Orders2006 O INNER JOIN Employees E ON O.EmployeeID = E.EmployeeID

Nota: También podríamos otras muchas cosas, como crear una vista basada en estas instrucciones SELECT y luego acceder a ella como si de una sola tabla se tratase, pero de momento no sabemos cómo hacer eso y de este modo vemos cómo usar UNION para conseguir el mismo resultado.

Además de esta instrucción, SQL incluye un par de instrucciones adicionales de gran utilidad para trabajar con conjuntos de tablas no relacionadas: EXCEPT e INTERSECT. Como cabría esperar por sus nombres, permiten respectivamente obtener diferencias de conjuntos e intersecar conjuntos.

Nota: Aunque la función INTERSECT está ampliamente adoptada por la mayoría sistemas gestores de bases de datos relacionales, la instrucción EXCEPT está disponible en SQL Server, pero en el caso de Oracle o MySQL se llama MINUS. Aunque cambie el nombre la forma de usarla es idéntica.

Al igual que UNION estas dos operaciones se usan colocándolas entre dos consultas que deben ser compatibles.

  • INTERSECT devuelve los valores distintos devueltos por las consultas y comunes a ambas, con lo que obtenemos una intersección (sólo los registros que están entre los resultados de ambas consultas).
  • EXCEPT (o MINUS) devuelve los valores de la primera consulta que no se encuentran en la segunda. Así podemos averiguar qué registros están en una consulta pero no en la otra, calculando la diferencia entre dos conjuntos de registros. Algo realmente útil en ocasiones y difícil de conseguir con instrucciones más simples.

Con esto hemos dado un repaso bastante amplio a las posibilidades de trabajo con consultas de resultados en SQL estándar, que podremos aplicar a prácticamente cualquier gestor de bases de datos relacionales.

En la siguiente entrega de esta serie iremos ampliando el conocimiento del lenguaje de consultas.

Suerte intentando meter a un desarrollador en la oficina: casi el 90% quiere teletrabajar, según datos de GitHub

18/11/2021
Artículo original

Suerte intentando meter a un desarrollador en la oficina: casi el 90% quiere teletrabajar, según datos de GitHub

GitHub ha publicado su informe anual sobre su enorme comunidad de desarrolladores: The 2021 State of the Octoverse, y por primera vez la investigación realizada para mostrar estos datos ha combinado encuestas a más de 12.000 programadores y datos de telemetría de más de cuatro millones de repositorios alojados en la plataforma.

Una gran parte del informe está dedicado a encontrar respuestas a qué prácticas hacen que los equipos de programadores sean más productivos, rindan más, y tengas mejores experiencias. Un punto muy importante en esto es el trabajo en remoto, algo que, como los números muestran, se ha convertido en fundamental para casi todos los que trabajan en esto.

Los programadores prefieren definitivamente el teletrabajo

Octoverse 2021

Si bien apuntan que en 2021 la productividad comenzó a regresar a los niveles "pre-pandemia" tras el bajón que afectó a todo el mundo con el enorme caos que fue 2020, también dejó claro algo: el paradigma que enfrentan las empresas con el cambio completo a trabajo en remoto o a un modelo híbrido.

De los 12 mil desarrolladores encuestados para este informe, solo el 10.7% espera volver a una oficina cuando "la pandemia termine" (como sea que luzca ese momento en el futuro). Esto representa una caída del 30% versus años anteriores, cuando el 41% de los desarrolladores iban a trabajar a una a tiempo completo o parcial.

De hecho, tanto el modelo híbrido como el remoto por completo han surgido en preferencia, mientras casi el 50% de los desarrolladores prefieren la idea de tener solo algunos miembros del equipo en la oficina mientras otros trabajan en remoto (hibrido), un enorme 38.8% prefiere la idea de que todo el equipo teletrabaje.

Casi el 40% de los desarrolladores quiere formar parte de un equipo donde todos los miembros trabajen 100% en remoto

Esta tendencia no es algo que afecte solo a desarrolladores, tras la pandemia cada vez menos empleados quieren volver a las oficinas, aunque varía mucho dependiendo de dónde vivas. Sin embargo, en el sector tecnológico la tendencia es más marcada, estos datos de GitHub lo reafirman. Solo hay que ver cómo el teletrabajo como opción ha pasado del 30 al 80% en las ofertas de Hacker News.

GitHub, adquirida por Microsoft en 2018 por 7.500 millones de dólares, ya era en ese momento la plataforma de desarrollo por excelencia, pero en los últimos años ha experimentando un crecimiento aún más excepcional.

Tan solo en 2021 añadieron 16 millones de nuevos usuarios y ya cuentan con 73 millones de desarrolladores registrados en la plataforma. En lo que va de año se han creado más de 61 millones de nuevos repositorios, y según datos de la propia GitHub, el 84% de las empresas del Fortune 100 usan GitHub Enterprise.

{"videoId":"x7ziu8u","autoplay":true,"title":"Las matemáticas no se me dan mal, quiero aprender a programar CAPTCHA 2x04"}

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

Suerte intentando meter a un desarrollador en la oficina: casi el 90% quiere trabajar en remoto, según datos de GitHub

18/11/2021
Artículo original

Suerte intentando meter a un desarrollador en la oficina: casi el 90% quiere trabajar en remoto, según datos de GitHub

GitHub ha publicado su informe anual sobre su enorme comunidad de desarrolladores: The 2021 State of the Octoverse, y por primera vez la investigación realizada para mostrar estos datos ha combinado encuestas a más de 12.000 programadores y datos de telemetría de más de cuatro millones de repositorios alojados en la plataforma.

Una gran parte del informe está dedicado a encontrar respuestas a qué prácticas hacen que los equipos de programadores sean más productivos, rindan más, y tengas mejores experiencias. Un punto muy importante en esto es el trabajo en remoto, algo que, como los números muestran, se ha convertido en fundamental para casi todos los que trabajan en esto.

Los programadores prefieren definitivamente el teletrabajo

Octoverse 2021

Si bien apuntan que en 2021 la productividad comenzó a regresar a los niveles "pre-pandemia" tras el bajón que afectó a todo el mundo con el enorme caos que fue 2020, también dejó claro algo: el paradigma que enfrentan las empresas con el cambio completo a trabajo en remoto o a un modelo híbrido.

De los 12 mil desarrolladores encuestados para este informe, solo el 10.7% espera volver a una oficina cuando "la pandemia termine" (como sea que luzca ese momento en el futuro). Esto representa una caída del 30% versus años anteriores, cuando el 41% de los desarrolladores iban a trabajar a una a tiempo completo o parcial.

De hecho, tanto el modelo híbrido como el remoto por completo han surgido en preferencia, mientras casi el 50% de los desarrolladores prefieren la idea de tener solo algunos miembros del equipo en la oficina mientras otros trabajan en remoto (hibrido), un enorme 38.8% prefiere la idea de que todo el equipo teletrabaje.

Casi el 40% de los desarrolladores quiere formar parte de un equipo donde todos los miembros trabajen 100% en remoto

Esta tendencia no es algo que afecte solo a desarrolladores, tras la pandemia cada vez menos empleados quieren volver a las oficinas, aunque varía mucho dependiendo de dónde vivas. Sin embargo, en el sector tecnológico la tendencia es más marcada, estos datos de GitHub lo reafirman. Solo hay que ver cómo el teletrabajo como opción ha pasado del 30 al 80% en las ofertas de Hacker News.

GitHub, adquirida por Microsoft en 2018 por 7.500 millones de dólares, ya era en ese momento la plataforma de desarrollo por excelencia, pero en los últimos años ha experimentando un crecimiento aún más excepcional.

Tan solo en 2021 añadieron 16 millones de nuevos usuarios y ya cuentan con 73 millones de desarrolladores registrados en la plataforma. En lo que va de año se han creado más de 61 millones de nuevos repositorios, y según datos de la propia GitHub, el 84% de las empresas del Fortune 100 usan GitHub Enterprise.

{"videoId":"x7ziu8u","autoplay":true,"title":"Las matemáticas no se me dan mal, quiero aprender a programar CAPTCHA 2x04"}

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

Página Siguiente