{"id":1756,"date":"2026-03-16T11:13:46","date_gmt":"2026-03-16T11:13:46","guid":{"rendered":"https:\/\/lineo.es\/blog-desarrollo-web\/"},"modified":"2026-04-02T07:39:28","modified_gmt":"2026-04-02T07:39:28","slug":"web-development-blog","status":"publish","type":"page","link":"https:\/\/lineo.es\/en\/web-development-blog\/","title":{"rendered":"Blog"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1756\" class=\"elementor elementor-1756\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-71c0a8e e-flex e-con-boxed e-con e-parent\" data-id=\"71c0a8e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-4e07cdd e-con-full e-flex e-con e-child\" data-id=\"4e07cdd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6af92a4 elementor-widget elementor-widget-heading\" data-id=\"6af92a4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Here you\u2019ll find articles about the world of web development.<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8c65777 e-con-full e-flex e-con e-child\" data-id=\"8c65777\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1d6d8cc elementor-grid-1 elementor-posts--align-center elementor-grid-tablet-2 elementor-grid-mobile-1 elementor-posts--thumbnail-top elementor-widget elementor-widget-posts\" data-id=\"1d6d8cc\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;classic_columns&quot;:&quot;1&quot;,&quot;classic_row_gap&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:40,&quot;sizes&quot;:[]},&quot;classic_columns_tablet&quot;:&quot;2&quot;,&quot;classic_columns_mobile&quot;:&quot;1&quot;,&quot;classic_row_gap_laptop&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;classic_row_gap_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;classic_row_gap_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"posts.classic\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-posts-container elementor-posts elementor-posts--skin-classic elementor-grid\" role=\"list\">\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-1920 post type-post status-publish format-standard hentry category-sin-categoria\" role=\"listitem\">\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<h3 class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/lineo.es\/en\/throttling-emails\/\" >\n\t\t\t\tThrottling outbound emails with Mailman &#038; Exim\t\t\t<\/a>\n\t\t<\/h3>\n\t\t\t\t<div class=\"elementor-post__meta-data\">\n\t\t\t\t\t<span class=\"elementor-post-date\">\n\t\t\tMarch 25, 2018\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>Many ISPs have limits on the amount of emails received in a period of time, not respecting this will reduce the reputation of the sender. Mailman 2 doesn\u2019t support throttling, though there\u2019re some patches in the wild adding this feature. Exim supports rate limiting incoming emails, but not emails going out, though it may be possible to do this with<\/p>\n\t\t<\/div>\n\t\t\n\t\t<a class=\"elementor-post__read-more\" href=\"https:\/\/lineo.es\/en\/throttling-emails\/\" aria-label=\"Read more about Throttling outbound emails with Mailman &#038; Exim\" tabindex=\"-1\" >\n\t\t\tLeer m\u00e1s \u00bb\t\t<\/a>\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-1795 post type-post status-publish format-standard hentry category-sin-categoria\" role=\"listitem\">\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<h3 class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/lineo.es\/en\/system-ui-font-family\/\" >\n\t\t\t\tThe system-ui font\t\t\t<\/a>\n\t\t<\/h3>\n\t\t\t\t<div class=\"elementor-post__meta-data\">\n\t\t\t\t\t<span class=\"elementor-post-date\">\n\t\t\tJanuary 31, 2017\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>Imagine: font-family: system-ui, sans-serif; Enabled by default in Chrome 56,\u00a0system-ui\u00a0is a special font name, that tells Chrome to use the system font (be it\u00a0Cantarell\u00a0in Gnome,\u00a0San Francisco\u00a0in macOS, etc.) But system-ui is something new, as far as I know available only in the latest versions of Blink based browsers. So what to do as of today? This is from Bootstrap 4:<\/p>\n\t\t<\/div>\n\t\t\n\t\t<a class=\"elementor-post__read-more\" href=\"https:\/\/lineo.es\/en\/system-ui-font-family\/\" aria-label=\"Read more about The system-ui font\" tabindex=\"-1\" >\n\t\t\tLeer m\u00e1s \u00bb\t\t<\/a>\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-1784 post type-post status-publish format-standard hentry category-sin-categoria\" role=\"listitem\">\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<h3 class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/lineo.es\/en\/hsts\/\" >\n\t\t\t\tHTTP Strict Transport Security (HSTS)\t\t\t<\/a>\n\t\t<\/h3>\n\t\t\t\t<div class=\"elementor-post__meta-data\">\n\t\t\t\t\t<span class=\"elementor-post-date\">\n\t\t\tJanuary 30, 2017\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>Just learned about HSTS and started using it. First let me explain HSTS with my own words. Scenario without hsts: The user types the domain name in the URL bar without the protocol, such as \u201cexample.com\u201d, and the browser automatically adds the \u201chttp:\/\/\u201d prefix. This first request is vulnerable to Man In The Middle (MITM) attacks. The server replies with<\/p>\n\t\t<\/div>\n\t\t\n\t\t<a class=\"elementor-post__read-more\" href=\"https:\/\/lineo.es\/en\/hsts\/\" aria-label=\"Read more about HTTP Strict Transport Security (HSTS)\" tabindex=\"-1\" >\n\t\t\tLeer m\u00e1s \u00bb\t\t<\/a>\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-1779 post type-post status-publish format-standard hentry category-sin-categoria\" role=\"listitem\">\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<h3 class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/lineo.es\/en\/backup-mx\/\" >\n\t\t\t\tBackup MX for Mailman, with Exim\t\t\t<\/a>\n\t\t<\/h3>\n\t\t\t\t<div class=\"elementor-post__meta-data\">\n\t\t\t\t\t<span class=\"elementor-post-date\">\n\t\t\tFebruary 28, 2013\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>This week a hard disk from one of my servers broke. It has been replaced with just 3 minutes of downtime (kudos to\u00a0OVH), and right now the RAID array is being rebuilt. Since this is the first time this happens to me, and the server is running a production mailman service, I decided to take my time and set-up a\u00a0backup<\/p>\n\t\t<\/div>\n\t\t\n\t\t<a class=\"elementor-post__read-more\" href=\"https:\/\/lineo.es\/en\/backup-mx\/\" aria-label=\"Read more about Backup MX for Mailman, with Exim\" tabindex=\"-1\" >\n\t\t\tLeer m\u00e1s \u00bb\t\t<\/a>\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-1766 post type-post status-publish format-standard hentry category-sin-categoria\" role=\"listitem\">\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<h3 class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/lineo.es\/en\/python-valgrind\/\" >\n\t\t\t\tPython: Running Valgrind on a C extension\t\t\t<\/a>\n\t\t<\/h3>\n\t\t\t\t<div class=\"elementor-post__meta-data\">\n\t\t\t\t\t<span class=\"elementor-post-date\">\n\t\t\tDecember 23, 2012\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>This is how I use\u00a0Valgrind\u00a0to check for memory bugs in\u00a0pygit2. Glibc with debug symbols The first issue I run into is that Valgrind refused to work if\u00a0Glibc\u00a0was not compiled with debug symbols. This is how I did in my\u00a0Gentoo\u00a0notebook, I edited the \/etc\/portage\/make.conf file to enable the\u00a0splitdebug\u00a0feature: \/etc\/portage\/make.conf FEATURES=&#8221;${FEATURES} splitdebug compressdebug -nostrip&#8221; Then re-emerged the glibc: $ sudo emerge glibc<\/p>\n\t\t<\/div>\n\t\t\n\t\t<a class=\"elementor-post__read-more\" href=\"https:\/\/lineo.es\/en\/python-valgrind\/\" aria-label=\"Read more about Python: Running Valgrind on a C extension\" tabindex=\"-1\" >\n\t\t\tLeer m\u00e1s \u00bb\t\t<\/a>\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-1771 post type-post status-publish format-standard hentry category-sin-categoria\" role=\"listitem\">\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<h3 class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/lineo.es\/en\/gentoo-debug\/\" >\n\t\t\t\tGentoo: How to debug Exim\t\t\t<\/a>\n\t\t<\/h3>\n\t\t\t\t<div class=\"elementor-post__meta-data\">\n\t\t\t\t\t<span class=\"elementor-post-date\">\n\t\t\tDecember 23, 2012\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>If you have some problem with exim, and the logs are not enough, edit the\u00a0\/etc\/conf.d\/exim\u00a0file, and add the debugging option (-d): \/etc\/conf.d\/exim # Command-line options for running exim EXIM_OPTS=&#8221;-bd -q15m -d&#8221; Then restart exim: # \/etc\/init.d\/exim restart The exim daemon will not be detached from the console, the debug information will be printed to the standard output.\u00a0Good luck!<\/p>\n\t\t<\/div>\n\t\t\n\t\t<a class=\"elementor-post__read-more\" href=\"https:\/\/lineo.es\/en\/gentoo-debug\/\" aria-label=\"Read more about Gentoo: How to debug Exim\" tabindex=\"-1\" >\n\t\t\tLeer m\u00e1s \u00bb\t\t<\/a>\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-1760 post type-post status-publish format-standard hentry category-sin-categoria\" role=\"listitem\">\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<h3 class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/lineo.es\/en\/gentoo-mailman\/\" >\n\t\t\t\tGentoo: Mailman with Nginx &#038; Exim\t\t\t<\/a>\n\t\t<\/h3>\n\t\t\t\t<div class=\"elementor-post__meta-data\">\n\t\t\t\t\t<span class=\"elementor-post-date\">\n\t\t\tJuly 16, 2012\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>This is how I installed\u00a0Mailman\u00a0in a\u00a0Gentoo\u00a0server, using\u00a0Nginx\u00a0as the web server and\u00a0Exim\u00a0as the MTA. Mailman By default Mailman runs with the Apache user and group. First step is to configure Mailman so it runs with the Nginx user and group. To do so edit \/etc\/make.conf and add these lines: \/etc\/make.conf MAILMAN_CGIUID=&#8221;nginx&#8221; MAILMAN_CGIGID=&#8221;nginx&#8221; Now you can go ahead and emerge Mailman. Next<\/p>\n\t\t<\/div>\n\t\t\n\t\t<a class=\"elementor-post__read-more\" href=\"https:\/\/lineo.es\/en\/gentoo-mailman\/\" aria-label=\"Read more about Gentoo: Mailman with Nginx &#038; Exim\" tabindex=\"-1\" >\n\t\t\tLeer m\u00e1s \u00bb\t\t<\/a>\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/article>\n\t\t\t\t<\/div>\n\t\t\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Here you\u2019ll find articles about the world of web development.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-1756","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/lineo.es\/en\/wp-json\/wp\/v2\/pages\/1756","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lineo.es\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lineo.es\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lineo.es\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lineo.es\/en\/wp-json\/wp\/v2\/comments?post=1756"}],"version-history":[{"count":37,"href":"https:\/\/lineo.es\/en\/wp-json\/wp\/v2\/pages\/1756\/revisions"}],"predecessor-version":[{"id":2155,"href":"https:\/\/lineo.es\/en\/wp-json\/wp\/v2\/pages\/1756\/revisions\/2155"}],"wp:attachment":[{"href":"https:\/\/lineo.es\/en\/wp-json\/wp\/v2\/media?parent=1756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}