<!DOCTYPE html>
<!--[if IE 7]>
<html class="ie ie7" lang="en-US">
<![endif]-->
<!--[if IE 8]>
<html class="ie ie8" lang="en-US">
<![endif]-->
<!--[if !(IE 7) & !(IE 8)]><!-->
<html lang="en-US">
<!--<![endif]-->
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<title>DRK Blog | Desarrollo de software</title>
<link rel="profile" href="https://gmpg.org/xfn/11">
<link rel="pingback" href="https://blog.drk.com.ar/xmlrpc.php">
<!--[if lt IE 9]>
	<script src="https://blog.drk.com.ar/wp-content/themes/twentyfourteen/js/html5.js?ver=3.7.0"></script>
	<![endif]-->
<meta name='robots' content='max-image-preview:large' />

<meta name="p:domain_verify" content="69ddaacccdc135ff78a145300bd71d68" />
<link rel='dns-prefetch' href='//secure.gravatar.com' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='dns-prefetch' href='//s.w.org' />
<link rel='dns-prefetch' href='//v0.wordpress.com' />
<link rel='dns-prefetch' href='//jetpack.wordpress.com' />
<link rel='dns-prefetch' href='//s0.wp.com' />
<link rel='dns-prefetch' href='//s1.wp.com' />
<link rel='dns-prefetch' href='//s2.wp.com' />
<link rel='dns-prefetch' href='//public-api.wordpress.com' />
<link rel='dns-prefetch' href='//0.gravatar.com' />
<link rel='dns-prefetch' href='//1.gravatar.com' />
<link rel='dns-prefetch' href='//2.gravatar.com' />
<link href='https://fonts.gstatic.com' crossorigin rel='preconnect' />
<link rel="alternate" type="application/rss+xml" title="DRK Blog &raquo; Feed" href="https://blog.drk.com.ar/feed" />
<link rel="alternate" type="application/rss+xml" title="DRK Blog &raquo; Comments Feed" href="https://blog.drk.com.ar/comments/feed" />
<script type="038ad8de5cadcbe4c7cf7d94-text/javascript">
			window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/13.1.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/13.1.0\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/blog.drk.com.ar\/wp-includes\/js\/wp-emoji-release.min.js"}};
			!function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){var a=String.fromCharCode;p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,e),0,0);e=i.toDataURL();return p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,t),0,0),e===i.toDataURL()}function c(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(o=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},r=0;r<o.length;r++)t.supports[o[r]]=function(e){if(!p||!p.fillText)return!1;switch(p.textBaseline="top",p.font="600 32px Arial",e){case"flag":return s([127987,65039,8205,9895,65039],[127987,65039,8203,9895,65039])?!1:!s([55356,56826,55356,56819],[55356,56826,8203,55356,56819])&&!s([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]);case"emoji":return!s([10084,65039,8205,55357,56613],[10084,65039,8203,55357,56613])}return!1}(o[r]),t.supports.everything=t.supports.everything&&t.supports[o[r]],"flag"!==o[r]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[o[r]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(n=t.source||{}).concatemoji?c(n.concatemoji):n.wpemoji&&n.twemoji&&(c(n.twemoji),c(n.wpemoji)))}(window,document,window._wpemojiSettings);
		</script>
<style>
img.wp-smiley,
img.emoji {
	display: inline !important;
	border: none !important;
	box-shadow: none !important;
	height: 1em !important;
	width: 1em !important;
	margin: 0 .07em !important;
	vertical-align: -0.1em !important;
	background: none !important;
	padding: 0 !important;
}
</style>
<link rel='stylesheet' id='twentyfourteen-jetpack-css' href='https://blog.drk.com.ar/wp-content/plugins/jetpack/modules/theme-tools/compat/twentyfourteen.css' media='all' />
<link rel='stylesheet' id='wp-block-library-css' href='https://blog.drk.com.ar/wp-includes/css/dist/block-library/style.min.css' media='all' />
<style id='wp-block-library-inline-css'>
.has-text-align-justify{text-align:justify;}
</style>
<style id='wp-block-library-theme-inline-css'>
#start-resizable-editor-section{display:none}.wp-block-audio figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-audio figcaption{color:hsla(0,0%,100%,.65)}.wp-block-code{font-family:Menlo,Consolas,monaco,monospace;color:#1e1e1e;padding:.8em 1em;border:1px solid #ddd;border-radius:4px}.wp-block-embed figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-embed figcaption{color:hsla(0,0%,100%,.65)}.blocks-gallery-caption{color:#555;font-size:13px;text-align:center}.is-dark-theme .blocks-gallery-caption{color:hsla(0,0%,100%,.65)}.wp-block-image figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-image figcaption{color:hsla(0,0%,100%,.65)}.wp-block-pullquote{border-top:4px solid;border-bottom:4px solid;margin-bottom:1.75em;color:currentColor}.wp-block-pullquote__citation,.wp-block-pullquote cite,.wp-block-pullquote footer{color:currentColor;text-transform:uppercase;font-size:.8125em;font-style:normal}.wp-block-quote{border-left:.25em solid;margin:0 0 1.75em;padding-left:1em}.wp-block-quote cite,.wp-block-quote footer{color:currentColor;font-size:.8125em;position:relative;font-style:normal}.wp-block-quote.has-text-align-right{border-left:none;border-right:.25em solid;padding-left:0;padding-right:1em}.wp-block-quote.has-text-align-center{border:none;padding-left:0}.wp-block-quote.is-large,.wp-block-quote.is-style-large{border:none}.wp-block-search .wp-block-search__label{font-weight:700}.wp-block-group.has-background{padding:1.25em 2.375em;margin-top:0;margin-bottom:0}.wp-block-separator{border:none;border-bottom:2px solid;margin-left:auto;margin-right:auto;opacity:.4}.wp-block-separator:not(.is-style-wide):not(.is-style-dots){width:100px}.wp-block-separator.has-background:not(.is-style-dots){border-bottom:none;height:1px}.wp-block-separator.has-background:not(.is-style-wide):not(.is-style-dots){height:2px}.wp-block-table thead{border-bottom:3px solid}.wp-block-table tfoot{border-top:3px solid}.wp-block-table td,.wp-block-table th{padding:.5em;border:1px solid;word-break:normal}.wp-block-table figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-table figcaption{color:hsla(0,0%,100%,.65)}.wp-block-video figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-video figcaption{color:hsla(0,0%,100%,.65)}.wp-block-template-part.has-background{padding:1.25em 2.375em;margin-top:0;margin-bottom:0}#end-resizable-editor-section{display:none}
</style>
<link rel='stylesheet' id='mediaelement-css' href='https://blog.drk.com.ar/wp-includes/js/mediaelement/mediaelementplayer-legacy.min.css' media='all' />
<link rel='stylesheet' id='wp-mediaelement-css' href='https://blog.drk.com.ar/wp-includes/js/mediaelement/wp-mediaelement.min.css' media='all' />
<link rel='stylesheet' id='genericons-css' href='https://blog.drk.com.ar/wp-content/plugins/jetpack/_inc/genericons/genericons/genericons.css' media='all' />
<link rel='stylesheet' id='parent-style-css' href='https://blog.drk.com.ar/wp-content/themes/twentyfourteen/style.css' media='all' />
<link rel='stylesheet' id='twentyfourteen-lato-css' href='https://fonts.googleapis.com/css?family=Lato%3A300%2C400%2C700%2C900%2C300italic%2C400italic%2C700italic&#038;subset=latin%2Clatin-ext&#038;display=fallback' media='all' />
<link rel='stylesheet' id='twentyfourteen-style-css' href='https://blog.drk.com.ar/wp-content/themes/twentyfourteen-child/style.css' media='all' />
<link rel='stylesheet' id='twentyfourteen-block-style-css' href='https://blog.drk.com.ar/wp-content/themes/twentyfourteen/css/blocks.css' media='all' />
<!--[if lt IE 9]>
<link rel='stylesheet' id='twentyfourteen-ie-css'  href='https://blog.drk.com.ar/wp-content/themes/twentyfourteen/css/ie.css' media='all' />
<![endif]-->
<link rel='stylesheet' id='infinity-twentyfourteen-css' href='https://blog.drk.com.ar/wp-content/plugins/jetpack/modules/infinite-scroll/themes/twentyfourteen.css' media='all' />
<link rel='stylesheet' id='enlighterjs-css' href='https://blog.drk.com.ar/wp-content/plugins/enlighter/cache/enlighterjs.min.css' media='all' />
<link rel='stylesheet' id='jetpack_css-css' href='https://blog.drk.com.ar/wp-content/plugins/jetpack/css/jetpack.css' media='all' />
<script src='https://blog.drk.com.ar/wp-includes/js/jquery/jquery.min.js' id='jquery-core-js' type="038ad8de5cadcbe4c7cf7d94-text/javascript"></script>
<script src='https://blog.drk.com.ar/wp-includes/js/jquery/jquery-migrate.min.js' id='jquery-migrate-js' type="038ad8de5cadcbe4c7cf7d94-text/javascript"></script>
<link rel="https://api.w.org/" href="https://blog.drk.com.ar/wp-json/" /><link rel='shortlink' href='https://wp.me/1XlaH' />

<meta name="keywords" content="Desarrollo de software, Desarrollo, de, software, DRK Blog, programacion, java" />
<meta name="description" content="Desarrollo de software" />


<meta property="og:type" content="website" />
<meta property="og:title" content="DRK Blog" />
<meta property="og:description" content="Desarrollo de software" />
<meta property="og:url" content="https://blog.drk.com.ar/" />
<meta property="og:site_name" content="DRK Blog" />
<meta property="og:image" content="https://blog.drk.com.ar/wp-content/uploads/2021/08/cropped-drkbugs-1.png" />
<meta property="og:image:width" content="512" />
<meta property="og:image:height" content="512" />
<meta property="og:locale" content="en_US" />
<meta name="twitter:creator" content="@drkblog" />
<meta name="twitter:site" content="@#drkbugs" />

<link rel="icon" href="https://blog.drk.com.ar/wp-content/uploads/2021/08/cropped-drkbugs-1-32x32.png" sizes="32x32" />
<link rel="icon" href="https://blog.drk.com.ar/wp-content/uploads/2021/08/cropped-drkbugs-1-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://blog.drk.com.ar/wp-content/uploads/2021/08/cropped-drkbugs-1-180x180.png" />
<meta name="msapplication-TileImage" content="https://blog.drk.com.ar/wp-content/uploads/2021/08/cropped-drkbugs-1-270x270.png" />
</head>
<body class="home blog wp-embed-responsive masthead-fixed list-view full-width footer-widgets grid">
<div id="page" class="hfeed site">
<header id="masthead" class="site-header" role="banner">
<div class="header-main">
<h1 class="site-title"><a href="https://blog.drk.com.ar/" rel="home">DRK Blog</a></h1>
<div class="search-toggle">
<a href="#search-container" class="screen-reader-text" aria-expanded="false" aria-controls="search-container">Search</a>
</div>
<nav id="primary-navigation" class="site-navigation primary-navigation" role="navigation">
<button class="menu-toggle">Primary Menu</button>
<a class="screen-reader-text skip-link" href="#content">Skip to content</a>
<div class="menu-top-container"><ul id="primary-menu" class="nav-menu"><li id="menu-item-143" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-home menu-item-143"><a href="https://blog.drk.com.ar">Home</a></li>
<li id="menu-item-2463" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2463"><a href="https://www.youtube.com/channel/UClPU76FC8TBftSAGFlay36g">Videos en YouTube</a></li>
<li id="menu-item-403" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-403"><a href="https://blog.drk.com.ar/sobre-drk">Sobre este sitio y su autor</a></li>
<li id="menu-item-1293" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1293"><a href="https://blog.drk.com.ar/contacto">Contacto</a></li>
</ul></div> </nav>
</div>
<div id="search-container" class="search-box-wrapper hide">
<div class="search-box">
<form role="search" method="get" class="search-form" action="https://blog.drk.com.ar/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Search &hellip;" value="" name="s" />
</label>
<input type="submit" class="search-submit" value="Search" />
</form> </div>
</div>
</header>
<div id="main" class="site-main">
<div id="main-content" class="main-content">
<div id="featured-content" class="featured-content">
<div class="featured-content-inner">
<article id="post-2510" class="post-2510 post type-post status-publish format-standard has-post-thumbnail hentry category-programacion tag-algoritmo tag-cadena-de-texto tag-como-optimizar-recorrido-de-arrays tag-complejidad-temporal tag-optimizar-recorrido-de-arrays tag-recorrer-un-array tag-valores-ascii">
<a class="post-thumbnail" href="https://blog.drk.com.ar/2020/como-optimizar-recorrido-de-arrays">
<img width="672" height="372" src="https://blog.drk.com.ar/wp-content/uploads/2020/08/funnyStrings-672x372.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Cómo optimizar el contenido de arrays" loading="lazy" srcset="https://blog.drk.com.ar/wp-content/uploads/2020/08/funnyStrings-672x372.png 672w, https://blog.drk.com.ar/wp-content/uploads/2020/08/funnyStrings-1038x576.png 1038w" sizes="(max-width: 672px) 100vw, 672px" /> </a>
<header class="entry-header">
<div class="entry-meta">
<span class="cat-links"><a href="https://blog.drk.com.ar/category/programacion" rel="category tag">Programación</a></span>
</div>
<h1 class="entry-title"><a href="https://blog.drk.com.ar/2020/como-optimizar-recorrido-de-arrays" rel="bookmark">Cómo optimizar recorrido de arrays</a></h1> </header>
</article>
<article id="post-2508" class="post-2508 post type-post status-publish format-standard has-post-thumbnail hentry category-programacion tag-algoritmo tag-big-o tag-complejidad-temporal tag-video">
<a class="post-thumbnail" href="https://blog.drk.com.ar/2020/complejidad-temporal">
<img width="672" height="372" src="https://blog.drk.com.ar/wp-content/uploads/2020/08/complejidadTemporal1-672x372.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Complejidad temporal" loading="lazy" srcset="https://blog.drk.com.ar/wp-content/uploads/2020/08/complejidadTemporal1-672x372.png 672w, https://blog.drk.com.ar/wp-content/uploads/2020/08/complejidadTemporal1-1038x576.png 1038w" sizes="(max-width: 672px) 100vw, 672px" /> </a>
<header class="entry-header">
<div class="entry-meta">
<span class="cat-links"><a href="https://blog.drk.com.ar/category/programacion" rel="category tag">Programación</a></span>
</div>
<h1 class="entry-title"><a href="https://blog.drk.com.ar/2020/complejidad-temporal" rel="bookmark">Complejidad Temporal</a></h1> </header>
</article>
<article id="post-2295" class="post-2295 post type-post status-publish format-standard has-post-thumbnail hentry category-programacion tag-cc tag-concurrencia tag-mutex tag-thread">
<a class="post-thumbnail" href="https://blog.drk.com.ar/2015/jugando-con-threads-en-c11">
<img width="534" height="297" src="https://blog.drk.com.ar/wp-content/uploads/2015/09/threads.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" loading="lazy" srcset="https://blog.drk.com.ar/wp-content/uploads/2015/09/threads.png 534w, https://blog.drk.com.ar/wp-content/uploads/2015/09/threads-300x167.png 300w" sizes="(max-width: 534px) 100vw, 534px" /> </a>
<header class="entry-header">
<div class="entry-meta">
<span class="cat-links"><a href="https://blog.drk.com.ar/category/programacion" rel="category tag">Programación</a></span>
</div>
<h1 class="entry-title"><a href="https://blog.drk.com.ar/2015/jugando-con-threads-en-c11" rel="bookmark">Jugando con threads en C++11</a></h1> </header>
</article>
</div>
</div>
<div id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<article id="post-2784" class="post-2784 post type-post status-publish format-standard hentry category-programacion tag-contrasena tag-keychain tag-keyring tag-linux tag-shell tag-ubuntu">
<header class="entry-header">
<div class="entry-meta">
<span class="cat-links"><a href="https://blog.drk.com.ar/category/programacion" rel="category tag">Programación</a></span>
</div>
<h1 class="entry-title"><a href="https://blog.drk.com.ar/2021/guardar-contrasenas-en-linux" rel="bookmark">Guardar contraseñas en Linux</a></h1>
<div class="entry-meta">
<span class="entry-date"><a href="https://blog.drk.com.ar/2021/guardar-contrasenas-en-linux" rel="bookmark"><time class="entry-date" datetime="2021-08-16T23:20:56-03:00">16/08/2021</time></a></span> <span class="byline"><span class="author vcard"><a class="url fn n" href="https://blog.drk.com.ar/author/_leo_" rel="author">Leandro Fernández</a></span></span> <span class="comments-link"><a href="https://blog.drk.com.ar/2021/guardar-contrasenas-en-linux#respond">Leave a comment</a></span>
</div>
</header>
<div class="entry-content">
<p><em>Unos días atrás expliqué <a href="/2021/2-comandos-para-proteger-tu-contrasena">cómo evitar que tu contraseña quede expuesta en la terminal a través del historial del shell, en Mac</a>. Hoy vamos a ver cómo guardar contraseñas en form segura en Linux.</em></p>
<p>En el artículo enlazado más arriba mencionamos que es común exponer contraseñas al pasarlas como argumento en la línea de comandos. Y el compromiso de seguridad que ello implica. También puede ocurrir que tengamos que manejarnos con una cantidad decente de contraseñas y recordarlas y escribirlas todo el tiempo sea un problema. En ambas situaciones un <em><strong>keyring </strong></em>o una <em><strong>keychain</strong></em> es muy útil. Vamos a ver de qué se trata y cómo aprovecharlos.</p>
<a href="https://blog.drk.com.ar/2021/guardar-contrasenas-en-linux#more-2784" class="more-link">Continue reading <span class="screen-reader-text">Guardar contraseñas en Linux</span> <span class="meta-nav">&rarr;</span></a> </div>
<footer class="entry-meta"><span class="tag-links"><a href="https://blog.drk.com.ar/tag/contrasena" rel="tag">contraseña</a><a href="https://blog.drk.com.ar/tag/keychain" rel="tag">keychain</a><a href="https://blog.drk.com.ar/tag/keyring" rel="tag">keyring</a><a href="https://blog.drk.com.ar/tag/linux" rel="tag">linux</a><a href="https://blog.drk.com.ar/tag/shell" rel="tag">shell</a><a href="https://blog.drk.com.ar/tag/ubuntu" rel="tag">ubuntu</a></span></footer></article>
<article id="post-2773" class="post-2773 post type-post status-publish format-standard hentry category-programacion tag-ancho-variable tag-ascii tag-byte tag-cc tag-caracter tag-char tag-codificacion tag-latin-1 tag-utf-8">
<header class="entry-header">
<div class="entry-meta">
<span class="cat-links"><a href="https://blog.drk.com.ar/category/programacion" rel="category tag">Programación</a></span>
</div>
<h1 class="entry-title"><a href="https://blog.drk.com.ar/2021/como-contar-caracteres-en-utf-8-en-c" rel="bookmark">Cómo contar caracteres en UTF-8 en C++</a></h1>
<div class="entry-meta">
<span class="entry-date"><a href="https://blog.drk.com.ar/2021/como-contar-caracteres-en-utf-8-en-c" rel="bookmark"><time class="entry-date" datetime="2021-08-15T09:41:05-03:00">15/08/2021</time></a></span> <span class="byline"><span class="author vcard"><a class="url fn n" href="https://blog.drk.com.ar/author/_leo_" rel="author">Leandro Fernández</a></span></span> <span class="comments-link"><a href="https://blog.drk.com.ar/2021/como-contar-caracteres-en-utf-8-en-c#respond">Leave a comment</a></span>
</div>
</header>
<div class="entry-content">
<p><strong>UTF-8 </strong>es una codificación de texto muy versátil y difundida. En particular para casos donde se necesita soportar cualquier caracter <strong>Unicode </strong>pero no se quiere pagar un costo alto de almacenamiento. Ya que <strong>Unicode </strong>es enorme no hay manera de codificar todas las posibilidades en un sólo <em>byte</em>. Al mismo tiempo, utilizar dos o cuatro <em>bytes </em>para cada caracter puede ser un desperdicio si la mayoría de los caracteres que usamos entrarán en uno o dos <em>bytes</em>. Ahí es donde UTF-8, que es una codificación con caracter de ancho variable, entra en juego. Ya que nos permite utilizar uno o dos bytes para los caracteres más comunes como <strong>ASCII </strong>y <strong>Latin-1.</strong> Pero al mismo tiempo utilizará más bytes si aparecen caracteres de codificaciones menos frecuentes.</p>
<div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" width="310" height="162" src="https://blog.drk.com.ar/wp-content/uploads/2021/08/utf8-cpp.png" alt="" class="wp-image-2778 size-full" srcset="https://blog.drk.com.ar/wp-content/uploads/2021/08/utf8-cpp.png 310w, https://blog.drk.com.ar/wp-content/uploads/2021/08/utf8-cpp-300x157.png 300w" sizes="(max-width: 310px) 100vw, 310px" /></figure><div class="wp-block-media-text__content">
<p class="has-normal-font-size">La dificultad extra que nos agrega es que no podemos saber de antemano cuántos caracteres hay en una cadena de texto codificada en <strong>UTF-8 </strong>sólo contando cuantos <em>bytes </em>ocupa. Tenemos que recorrerla y procesarla para poder contar los caracteres.</p>
</div></div>
<a href="https://blog.drk.com.ar/2021/como-contar-caracteres-en-utf-8-en-c#more-2773" class="more-link">Continue reading <span class="screen-reader-text">Cómo contar caracteres en UTF-8 en C++</span> <span class="meta-nav">&rarr;</span></a> </div>
<footer class="entry-meta"><span class="tag-links"><a href="https://blog.drk.com.ar/tag/ancho-variable" rel="tag">ancho variable</a><a href="https://blog.drk.com.ar/tag/ascii" rel="tag">ascii</a><a href="https://blog.drk.com.ar/tag/byte" rel="tag">byte</a><a href="https://blog.drk.com.ar/tag/cc" rel="tag">C/C++</a><a href="https://blog.drk.com.ar/tag/caracter" rel="tag">caracter</a><a href="https://blog.drk.com.ar/tag/char" rel="tag">char</a><a href="https://blog.drk.com.ar/tag/codificacion" rel="tag">codificación</a><a href="https://blog.drk.com.ar/tag/latin-1" rel="tag">latin-1</a><a href="https://blog.drk.com.ar/tag/utf-8" rel="tag">utf-8</a></span></footer></article>
<article id="post-2737" class="post-2737 post type-post status-publish format-standard hentry category-programacion tag-artifactory tag-contrasena tag-contrasena-en-el-historial tag-keychain tag-llaveros tag-macos tag-maven tag-password">
<header class="entry-header">
<div class="entry-meta">
<span class="cat-links"><a href="https://blog.drk.com.ar/category/programacion" rel="category tag">Programación</a></span>
</div>
<h1 class="entry-title"><a href="https://blog.drk.com.ar/2021/2-comandos-para-proteger-tu-contrasena" rel="bookmark">2 comandos para proteger tu contraseña</a></h1>
<div class="entry-meta">
<span class="entry-date"><a href="https://blog.drk.com.ar/2021/2-comandos-para-proteger-tu-contrasena" rel="bookmark"><time class="entry-date" datetime="2021-08-13T16:31:06-03:00">13/08/2021</time></a></span> <span class="byline"><span class="author vcard"><a class="url fn n" href="https://blog.drk.com.ar/author/_leo_" rel="author">Leandro Fernández</a></span></span> <span class="comments-link"><a href="https://blog.drk.com.ar/2021/2-comandos-para-proteger-tu-contrasena#respond">Leave a comment</a></span>
</div>
</header>
<div class="entry-content">
<p><em>En este artículo te explico cómo evitar que tu contraseña quede expuesta en la terminal a través del historial del shell, en Mac. Pero el concepto para otros sistemas operativos es el mismo.</em></p>
<p>Como desarrolladores estamos ejecutando comandos en el <em>shell</em> de nuestro equipo gran parte del tiempo. Algunas de las aplicaciones que ejecutamos pueden requerir que pasemos nuestra contraseña como argumento para validar el acceso a un servicio. Y si ese comando queda en el historial del <em>shell</em>, nuestra contraseña quedará expuesta.</p>
<figure class="wp-block-image size-full is-resized"><a href="https://blog.drk.com.ar/wp-content/uploads/2021/08/keychain.png"><img loading="lazy" src="https://blog.drk.com.ar/wp-content/uploads/2021/08/keychain.png" alt="" class="wp-image-2744" width="744" height="434" srcset="https://blog.drk.com.ar/wp-content/uploads/2021/08/keychain.png 851w, https://blog.drk.com.ar/wp-content/uploads/2021/08/keychain-300x175.png 300w, https://blog.drk.com.ar/wp-content/uploads/2021/08/keychain-768x449.png 768w" sizes="(max-width: 744px) 100vw, 744px" /></a></figure>
<p>Si bien muchas aplicaciones de línea de comando evitan recibir un <em>password</em> como argumento con el fin de evitar el problema mencionado anteriormente. Puede que necesitemos escribir un <em>shell</em> script para ejecutar muchos comandos y algunos requieran la contraseña por entrada estándar. Pero al mismo tiempo, esta no se encuentre disponible cuando ejecutamos el script. En este caso la técnica que describo a continuación también puede ser útil.</p>
<a href="https://blog.drk.com.ar/2021/2-comandos-para-proteger-tu-contrasena#more-2737" class="more-link">Continue reading <span class="screen-reader-text">2 comandos para proteger tu contraseña</span> <span class="meta-nav">&rarr;</span></a> </div>
<footer class="entry-meta"><span class="tag-links"><a href="https://blog.drk.com.ar/tag/artifactory" rel="tag">artifactory</a><a href="https://blog.drk.com.ar/tag/contrasena" rel="tag">contraseña</a><a href="https://blog.drk.com.ar/tag/contrasena-en-el-historial" rel="tag">contraseña en el historial</a><a href="https://blog.drk.com.ar/tag/keychain" rel="tag">keychain</a><a href="https://blog.drk.com.ar/tag/llaveros" rel="tag">llaveros</a><a href="https://blog.drk.com.ar/tag/macos" rel="tag">macos</a><a href="https://blog.drk.com.ar/tag/maven" rel="tag">maven</a><a href="https://blog.drk.com.ar/tag/password" rel="tag">password</a></span></footer></article>
<article id="post-2719" class="post-2719 post type-post status-publish format-standard hentry category-programacion tag-cache tag-static-factory tag-static-factory-method">
<header class="entry-header">
<div class="entry-meta">
<span class="cat-links"><a href="https://blog.drk.com.ar/category/programacion" rel="category tag">Programación</a></span>
</div>
<h1 class="entry-title"><a href="https://blog.drk.com.ar/2021/no-uses-new-en-java" rel="bookmark">¡No uses new en Java!</a></h1>
<div class="entry-meta">
<span class="entry-date"><a href="https://blog.drk.com.ar/2021/no-uses-new-en-java" rel="bookmark"><time class="entry-date" datetime="2021-08-10T00:30:49-03:00">10/08/2021</time></a></span> <span class="byline"><span class="author vcard"><a class="url fn n" href="https://blog.drk.com.ar/author/_leo_" rel="author">Leandro Fernández</a></span></span> <span class="comments-link"><a href="https://blog.drk.com.ar/2021/no-uses-new-en-java#respond">Leave a comment</a></span>
</div>
</header>
<div class="entry-content">
<pre class="wp-block-verse">Siempre prefiere static factory methods al uso de constructores.</pre>
<p>Hay dos circunstancias distintas donde debemos seguir esta máxima: <em>cuando creamos una clase y definimos cómo se van a crear sus instancias, y cuando creamos instancias de otras clases que no hemos definido nosotros.</em></p>
<div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><img loading="lazy" width="512" height="512" src="https://blog.drk.com.ar/wp-content/uploads/2021/08/forbidden-new.png" alt="No uses new" class="wp-image-2728 size-full" srcset="https://blog.drk.com.ar/wp-content/uploads/2021/08/forbidden-new.png 512w, https://blog.drk.com.ar/wp-content/uploads/2021/08/forbidden-new-300x300.png 300w, https://blog.drk.com.ar/wp-content/uploads/2021/08/forbidden-new-150x150.png 150w" sizes="(max-width: 512px) 100vw, 512px" /></figure><div class="wp-block-media-text__content">
<p class="has-normal-font-size"><meta charset="utf-8" />Creo que la mayor parte del tiempo tenemos esto presente cuando estamos definiendo nuestra clase. Y no tanto cuando creamos objetos de otras. En especial si esa clase tiene constructores públicos.</p>
</div></div>
<a href="https://blog.drk.com.ar/2021/no-uses-new-en-java#more-2719" class="more-link">Continue reading <span class="screen-reader-text">¡No uses new en Java!</span> <span class="meta-nav">&rarr;</span></a> </div>
<footer class="entry-meta"><span class="tag-links"><a href="https://blog.drk.com.ar/tag/cache" rel="tag">cache</a><a href="https://blog.drk.com.ar/tag/static-factory" rel="tag">static factory</a><a href="https://blog.drk.com.ar/tag/static-factory-method" rel="tag">static factory method</a></span></footer></article>
<article id="post-2699" class="post-2699 post type-post status-publish format-standard hentry category-tecnologia tag-borrar-archivos-de-programa tag-borrar-windows tag-cmd tag-formatear tag-programdata tag-windows">
<header class="entry-header">
<div class="entry-meta">
<span class="cat-links"><a href="https://blog.drk.com.ar/category/tecnologia" rel="category tag">Tecnología</a></span>
</div>
<h1 class="entry-title"><a href="https://blog.drk.com.ar/2021/cuidado-al-borrar-windows-manualmente" rel="bookmark">Cuidado al borrar Windows manualmente</a></h1>
<div class="entry-meta">
<span class="entry-date"><a href="https://blog.drk.com.ar/2021/cuidado-al-borrar-windows-manualmente" rel="bookmark"><time class="entry-date" datetime="2021-08-01T19:16:09-03:00">01/08/2021</time></a></span> <span class="byline"><span class="author vcard"><a class="url fn n" href="https://blog.drk.com.ar/author/_leo_" rel="author">Leandro Fernández</a></span></span> <span class="comments-link"><a href="https://blog.drk.com.ar/2021/cuidado-al-borrar-windows-manualmente#respond">Leave a comment</a></span>
</div>
</header>
<div class="entry-content">
<p>Destruir la instalación de <strong>Windows </strong>de nuestro equipo es sorprendentemente fácil mientras intentamos eliminar <strong>Windows </strong>de un disco viejo.</p>
<p>Cuando compramos un disco más grande para nuestra PC de escritorio o reemplazamos el de nuestra notebook muchas veces nos quedamos con el anterior para guardar datos. En esta circunstancia es altamente probable que en lugar de formatear ese disco decidamos eliminar los archivos que no nos interesan manualmente. Y así ahorrarnos el trabajo de mover los datos temporalmente a otro lado mientras formateamos. Y luego volver a pasar los datos al disco. Los directorios de sistema de <strong>Windows </strong>(esos donde están los archivos binarios y de datos que el sistema operativo maneja) ocupan mucho espacio. Así que es una de las primeras cosas que vamos a remover.</p>
<p>Por supuesto que un usuario con conocimientos básicos no intentaría hacer esto. Pero con cierta experiencia y conocimiento, y sin ser expertos, es completamente esperable que intentemos esto. Y aquí es donde la cosa se pone peligrosa.</p>
<a href="https://blog.drk.com.ar/2021/cuidado-al-borrar-windows-manualmente#more-2699" class="more-link">Continue reading <span class="screen-reader-text">Cuidado al borrar Windows manualmente</span> <span class="meta-nav">&rarr;</span></a> </div>
<footer class="entry-meta"><span class="tag-links"><a href="https://blog.drk.com.ar/tag/borrar-archivos-de-programa" rel="tag">borrar archivos de programa</a><a href="https://blog.drk.com.ar/tag/borrar-windows" rel="tag">borrar windows</a><a href="https://blog.drk.com.ar/tag/cmd" rel="tag">cmd</a><a href="https://blog.drk.com.ar/tag/formatear" rel="tag">formatear</a><a href="https://blog.drk.com.ar/tag/programdata" rel="tag">programdata</a><a href="https://blog.drk.com.ar/tag/windows" rel="tag">windows</a></span></footer></article>
<nav class="navigation paging-navigation" role="navigation">
<h1 class="screen-reader-text">Posts navigation</h1>
<div class="pagination loop-pagination">
<span aria-current="page" class="page-numbers current">1</span>
<a class="page-numbers" href="https://blog.drk.com.ar/page/2?/feeds/index_rss2">2</a>
<span class="page-numbers dots">&hellip;</span>
<a class="page-numbers" href="https://blog.drk.com.ar/page/8?/feeds/index_rss2">8</a>
<a class="next page-numbers" href="https://blog.drk.com.ar/page/2?/feeds/index_rss2">Next &rarr;</a> </div>
</nav>
</div>
</div>
</div>
<div id="secondary">
<h2 class="site-description">Desarrollo de software</h2>
<nav role="navigation" class="navigation site-navigation secondary-navigation">
<div class="menu-left-container"><ul id="menu-left" class="menu"><li id="menu-item-2673" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2673"><a href="/tag/java">Java</a></li>
<li id="menu-item-2675" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2675"><a href="/tag/algoritmo">Algoritmos</a></li>
<li id="menu-item-2674" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2674"><a href="/tag/video">Videos</a></li>
</ul></div> </nav>
<div id="primary-sidebar" class="primary-sidebar widget-area" role="complementary">
<aside id="categories-3" class="widget widget_categories"><h1 class="widget-title">Categorías</h1><nav role="navigation" aria-label="Categorías">
<ul>
<li class="cat-item cat-item-49"><a href="https://blog.drk.com.ar/category/electronica">Electrónica</a>
</li>
<li class="cat-item cat-item-7"><a href="https://blog.drk.com.ar/category/internet">Internet</a>
</li>
<li class="cat-item cat-item-16"><a href="https://blog.drk.com.ar/category/programacion">Programación</a>
</li>
<li class="cat-item cat-item-6"><a href="https://blog.drk.com.ar/category/tecnologia">Tecnología</a>
</li>
</ul>
</nav></aside><aside id="meta-3" class="widget widget_meta"><h1 class="widget-title">Administración</h1><nav role="navigation" aria-label="Administración">
<ul>
<li><a href="https://blog.drk.com.ar/wp-login.php">Log in</a></li>
<li><a href="https://blog.drk.com.ar/feed">Entries feed</a></li>
<li><a href="https://blog.drk.com.ar/comments/feed">Comments feed</a></li>
<li><a href="https://wordpress.org/">WordPress.org</a></li>
</ul>
</nav></aside> </div>
</div>
</div>
<footer id="colophon" class="site-footer" role="contentinfo">
<div id="supplementary">
<div id="footer-sidebar" class="footer-sidebar widget-area" role="complementary">
<aside id="text-3" class="widget widget_text"> <div class="textwidget">
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-29993798-6" type="038ad8de5cadcbe4c7cf7d94-text/javascript"></script>
<script type="038ad8de5cadcbe4c7cf7d94-text/javascript">
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-29993798-6');
</script></div>
</aside> </div>
</div>
<div class="site-info">
<a href="https://wordpress.org/" class="imprint">
Proudly powered by WordPress </a>
</div>
</footer>
</div>
<script type="038ad8de5cadcbe4c7cf7d94-text/javascript">
		//<![CDATA[
		var infiniteScroll = JSON.parse( decodeURIComponent( '%7B%22settings%22%3A%7B%22id%22%3A%22content%22%2C%22ajaxurl%22%3A%22https%3A%5C%2F%5C%2Fblog.drk.com.ar%5C%2F%3Finfinity%3Dscrolling%22%2C%22type%22%3A%22click%22%2C%22wrapper%22%3Atrue%2C%22wrapper_class%22%3A%22infinite-wrap%22%2C%22footer%22%3A%22page%22%2C%22click_handle%22%3A%221%22%2C%22text%22%3A%22Older%20posts%22%2C%22totop%22%3A%22Scroll%20back%20to%20top%22%2C%22currentday%22%3A%2201.08.21%22%2C%22order%22%3A%22DESC%22%2C%22scripts%22%3A%5B%5D%2C%22styles%22%3A%5B%5D%2C%22google_analytics%22%3Atrue%2C%22offset%22%3A1%2C%22history%22%3A%7B%22host%22%3A%22blog.drk.com.ar%22%2C%22path%22%3A%22%5C%2Fpage%5C%2F%25d%22%2C%22use_trailing_slashes%22%3Afalse%2C%22parameters%22%3A%22%3F%5C%2Ffeeds%5C%2Findex.rss2%22%7D%2C%22query_args%22%3A%7B%22error%22%3A%22%22%2C%22m%22%3A%22%22%2C%22p%22%3A0%2C%22post_parent%22%3A%22%22%2C%22subpost%22%3A%22%22%2C%22subpost_id%22%3A%22%22%2C%22attachment%22%3A%22%22%2C%22attachment_id%22%3A0%2C%22name%22%3A%22%22%2C%22pagename%22%3A%22%22%2C%22page_id%22%3A0%2C%22second%22%3A%22%22%2C%22minute%22%3A%22%22%2C%22hour%22%3A%22%22%2C%22day%22%3A0%2C%22monthnum%22%3A0%2C%22year%22%3A0%2C%22w%22%3A0%2C%22category_name%22%3A%22%22%2C%22tag%22%3A%22%22%2C%22cat%22%3A%22%22%2C%22tag_id%22%3A%22%22%2C%22author%22%3A%22%22%2C%22author_name%22%3A%22%22%2C%22feed%22%3A%22%22%2C%22tb%22%3A%22%22%2C%22paged%22%3A0%2C%22meta_key%22%3A%22%22%2C%22meta_value%22%3A%22%22%2C%22preview%22%3A%22%22%2C%22s%22%3A%22%22%2C%22sentence%22%3A%22%22%2C%22title%22%3A%22%22%2C%22fields%22%3A%22%22%2C%22menu_order%22%3A%22%22%2C%22embed%22%3A%22%22%2C%22category__in%22%3A%5B%5D%2C%22category__not_in%22%3A%5B%5D%2C%22category__and%22%3A%5B%5D%2C%22post__in%22%3A%5B%5D%2C%22post__not_in%22%3A%5B2510%2C2508%2C2295%5D%2C%22post_name__in%22%3A%5B%5D%2C%22tag__in%22%3A%5B%5D%2C%22tag__not_in%22%3A%5B%5D%2C%22tag__and%22%3A%5B%5D%2C%22tag_slug__in%22%3A%5B%5D%2C%22tag_slug__and%22%3A%5B%5D%2C%22post_parent__in%22%3A%5B%5D%2C%22post_parent__not_in%22%3A%5B%5D%2C%22author__in%22%3A%5B%5D%2C%22author__not_in%22%3A%5B%5D%2C%22posts_per_page%22%3A5%2C%22ignore_sticky_posts%22%3Afalse%2C%22suppress_filters%22%3Afalse%2C%22cache_results%22%3Atrue%2C%22update_post_term_cache%22%3Atrue%2C%22lazy_load_term_meta%22%3Atrue%2C%22update_post_meta_cache%22%3Atrue%2C%22post_type%22%3A%22%22%2C%22nopaging%22%3Afalse%2C%22comments_per_page%22%3A%2250%22%2C%22no_found_rows%22%3Afalse%2C%22order%22%3A%22DESC%22%7D%2C%22query_before%22%3A%222021-08-17%2001%3A07%3A30%22%2C%22last_post_date%22%3A%222021-08-01%2019%3A16%3A09%22%2C%22body_class%22%3A%22infinite-scroll%22%2C%22loading_text%22%3A%22Loading%20new%20page%22%2C%22stats%22%3A%22blog%3D28919075%26host%3Dblog.drk.com.ar%26v%3Dext%26j%3D1%3A10.0%26x_pagetype%3Dinfinite-click-jetpack%22%7D%7D' ) );
		//]]>
		</script>
<script src='https://blog.drk.com.ar/wp-content/plugins/jetpack/_inc/build/infinite-scroll/infinity.min.js' id='the-neverending-homepage-js' type="038ad8de5cadcbe4c7cf7d94-text/javascript"></script>
<script src='https://blog.drk.com.ar/wp-includes/js/imagesloaded.min.js' id='imagesloaded-js' type="038ad8de5cadcbe4c7cf7d94-text/javascript"></script>
<script src='https://blog.drk.com.ar/wp-includes/js/masonry.min.js' id='masonry-js' type="038ad8de5cadcbe4c7cf7d94-text/javascript"></script>
<script src='https://blog.drk.com.ar/wp-includes/js/jquery/jquery.masonry.min.js' id='jquery-masonry-js' type="038ad8de5cadcbe4c7cf7d94-text/javascript"></script>
<script src='https://blog.drk.com.ar/wp-content/themes/twentyfourteen/js/functions.js' id='twentyfourteen-script-js' type="038ad8de5cadcbe4c7cf7d94-text/javascript"></script>
<script src='https://blog.drk.com.ar/wp-content/plugins/enlighter/cache/enlighterjs.min.js' id='enlighterjs-js' type="038ad8de5cadcbe4c7cf7d94-text/javascript"></script>
<script id='enlighterjs-js-after' type="038ad8de5cadcbe4c7cf7d94-text/javascript">
!function(e,n){if("undefined"!=typeof EnlighterJS){var o={"selectors":{"block":"pre.EnlighterJSRAW","inline":"code.EnlighterJSRAW"},"options":{"indent":4,"ampersandCleanup":true,"linehover":true,"rawcodeDbclick":false,"textOverflow":"scroll","linenumbers":true,"theme":"beyond","language":"generic","retainCssClasses":false,"collapse":false,"toolbarOuter":"","toolbarTop":"{BTN_RAW}{BTN_COPY}{BTN_WINDOW}{BTN_WEBSITE}","toolbarBottom":""}};(e.EnlighterJSINIT=function(){EnlighterJS.init(o.selectors.block,o.selectors.inline,o.options)})()}else{(n&&(n.error||n.log)||function(){})("Error: EnlighterJS resources not loaded yet!")}}(window,console);
</script>
<script src='https://blog.drk.com.ar/wp-includes/js/wp-embed.min.js' id='wp-embed-js' type="038ad8de5cadcbe4c7cf7d94-text/javascript"></script>
<script type="038ad8de5cadcbe4c7cf7d94-text/javascript">
			(function() {
				var extend = function(out) {
					out = out || {};

					for (var i = 1; i < arguments.length; i++) {
						if (!arguments[i])
						continue;

						for (var key in arguments[i]) {
						if (arguments[i].hasOwnProperty(key))
							out[key] = arguments[i][key];
						}
					}

					return out;
				};
				extend( window.infiniteScroll.settings.scripts, ["jquery-core","jquery-migrate","jquery","the-neverending-homepage","imagesloaded","masonry","jquery-masonry","twentyfourteen-script","enlighterjs","wp-embed"] );
				extend( window.infiniteScroll.settings.styles, ["twentyfourteen-jetpack","the-neverending-homepage","wp-block-library","wp-block-library-theme","mediaelement","wp-mediaelement","genericons","parent-style","twentyfourteen-lato","twentyfourteen-style","twentyfourteen-block-style","twentyfourteen-ie","infinity-twentyfourteen","enlighterjs","jetpack_css"] );
			})();
		</script>
<span id="infinite-aria" aria-live="assertive"></span>
<script src='https://stats.wp.com/e-202133.js' defer type="038ad8de5cadcbe4c7cf7d94-text/javascript"></script>
<script type="038ad8de5cadcbe4c7cf7d94-text/javascript">
	_stq = window._stq || [];
	_stq.push([ 'view', {v:'ext',j:'1:10.0',blog:'28919075',post:'0',tz:'-3',srv:'blog.drk.com.ar'} ]);
	_stq.push([ 'clickTrackerInit', '28919075', '0' ]);
</script>
<script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="038ad8de5cadcbe4c7cf7d94-|49" defer=""></script></body>
</html>
