Eliminado venv y www del repositorio, agrege un requirements igual
This commit is contained in:
@@ -35,7 +35,7 @@ las redes sociales como ya lo hice con Facebook.</p>
|
||||
});
|
||||
}
|
||||
|
||||
window.addEventListener('DOMContentLoaded', (event) => {
|
||||
window.addEventListener('load', (event) => {
|
||||
makeImagesClickeable();
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -1,55 +1,3 @@
|
||||
/******************************************************************************
|
||||
=> Fonts
|
||||
*******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
=> Source Code Pro
|
||||
*******************************************************************************/
|
||||
@font-face {
|
||||
font-family: 'Source Code Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Source Code Pro'), url('https://static.danielcortes.xyz/fonts/SourceCodePro/SourceCodePro-Regular.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Source Code Pro';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Source Code Pro'), url('https://static.danielcortes.xyz/fonts/SourceCodePro/SourceCodePro-Bold.ttf') format('truetype');
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
=> Source Serif Pro
|
||||
*******************************************************************************/
|
||||
@font-face {
|
||||
font-family: 'Source Serif Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Source Serif Pro'), url('https://static.danielcortes.xyz/fonts/SourceSerifPro/SourceSerifPro-Regular.ttf') format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Serif Pro';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Source Serif Pro'), url('https://static.danielcortes.xyz/fonts/SourceSerifPro/SourceSerifPro-Bold.ttf') format('truetype');
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
=> Source Sans Pro
|
||||
*******************************************************************************/
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Source Sans Pro'), url('https://static.danielcortes.xyz/fonts/SourceSansPro/SourceSansPro-Regular.ttf') format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Source Sans Pro'), url('https://static.danielcortes.xyz/fonts/SourceSansPro/SourceSansPro-Bold.ttf') format('truetype');
|
||||
}
|
||||
.codehilite .hll { background-color: #f1fa8c }
|
||||
.codehilite { background: #282a36; color: #f8f8f2 }
|
||||
.codehilite .c { color: #6272a4 } /* Comment */
|
||||
@@ -127,6 +75,79 @@
|
||||
.codehilite .vi { color: #8be9fd; font-style: italic } /* Name.Variable.Instance */
|
||||
.codehilite .vm { color: #8be9fd; font-style: italic } /* Name.Variable.Magic */
|
||||
.codehilite .il { color: #bd93f9 } /* Literal.Number.Integer.Long */
|
||||
:root{
|
||||
--background-color: hsl(10, 20%, 98%);
|
||||
--foreground-color: hsl(10, 10%, 13%);
|
||||
--primary-color: hsl(200, 90%, 40%);
|
||||
--highlight-color: hsl(290, 86%, 43%);
|
||||
--light-color: hsl(10, 10%, 40%);
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: var(--background-color);
|
||||
color: var(--foreground-color);
|
||||
overflow-y: scroll;
|
||||
|
||||
font-family: 'Source Sans Pro', sans-serif;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 800px) {
|
||||
body {
|
||||
font-size: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 80ch;
|
||||
padding: 2ch;
|
||||
padding-bottom: 5em;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
time {
|
||||
color: var(--light-color);
|
||||
}
|
||||
|
||||
p {
|
||||
line-height: 1.5em;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
a, a:visited {
|
||||
color: var(--highlight-color);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
code {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.codehilite {
|
||||
font-family: 'Source Code Pro', monospace;
|
||||
font-size: 1.2em;
|
||||
border: none;
|
||||
border-radius: 5px;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.codehilite pre {
|
||||
margin: 1em;
|
||||
}
|
||||
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
|
||||
|
||||
/* Document
|
||||
@@ -476,96 +497,62 @@ template {
|
||||
[hidden] {
|
||||
display: none;
|
||||
}
|
||||
:root{
|
||||
--background-color: hsl(10, 20%, 98%);
|
||||
--foreground-color: hsl(10, 10%, 13%);
|
||||
--primary-color: hsl(200, 90%, 40%);
|
||||
--highlight-color: hsl(290, 86%, 43%);
|
||||
--light-color: hsl(10, 10%, 40%);
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: var(--background-color);
|
||||
color: var(--foreground-color);
|
||||
overflow-y: scroll;
|
||||
|
||||
font-family: 'Source Sans Pro', sans-serif;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 800px) {
|
||||
body {
|
||||
font-size: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 80ch;
|
||||
padding: 2ch;
|
||||
padding-bottom: 5em;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
time {
|
||||
color: var(--light-color);
|
||||
}
|
||||
|
||||
p {
|
||||
line-height: 1.5em;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
a, a:visited {
|
||||
color: var(--highlight-color);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
code {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.codehilite {
|
||||
font-family: 'Source Code Pro', monospace;
|
||||
font-size: 1.2em;
|
||||
border: none;
|
||||
border-radius: 5px;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.codehilite pre {
|
||||
margin: 1em;
|
||||
}
|
||||
/******************************************************************************
|
||||
=> FONTS
|
||||
=> Fonts
|
||||
*******************************************************************************/
|
||||
@font-face{font-family:'Source Code Pro';font-style:normal;font-weight:400;src:local('Source Code Pro'),url(https://static.danielcortes.xyz/fonts/SourceCodePro/SourceCodePro-Regular.woff2) format('woff2');font-display:swap}
|
||||
@font-face{font-family:'Source Code Pro';font-style:normal;font-weight:700;src:local('Source Code Pro'),url(https://static.danielcortes.xyz/fonts/SourceCodePro/SourceCodePro-Bold.woff2) format('woff2');font-display:swap}
|
||||
@font-face{font-family:'Source Serif Pro';font-style:normal;font-weight:400;src:local('Source Serif Pro'),url(https://static.danielcortes.xyz/fonts/SourceSerifPro/SourceSerifPro-Regular.woff2) format('woff2')}
|
||||
@font-face{font-family:'Source Serif Pro';font-style:normal;font-weight:700;src:local('Source Serif Pro'),url(https://static.danielcortes.xyz/fonts/SourceSerifPro/SourceSerifPro-Bold.woff2) format('woff2');font-display:swap}
|
||||
@font-face{font-family:'Source Sans Pro';font-style:normal;font-weight:400;src:local('Source Sans Pro'),url(https://static.danielcortes.xyz/fonts/SourceSansPro/SourceSansPro-Regular.woff2) format('woff2');font-display:swap}
|
||||
@font-face{font-family:'Source Sans Pro';font-style:normal;font-weight:700;src:local('Source Sans Pro'),url(https://static.danielcortes.xyz/fonts/SourceSansPro/SourceSansPro-Bold.woff2) format('woff2');font-display:swap}
|
||||
|
||||
/******************************************************************************
|
||||
=> Source Code Pro
|
||||
*******************************************************************************/
|
||||
@font-face {
|
||||
font-family: 'Source Code Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Source Code Pro'), url('https://static.danielcortes.xyz/fonts/SourceCodePro/SourceCodePro-Regular.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Source Code Pro';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Source Code Pro'), url('https://static.danielcortes.xyz/fonts/SourceCodePro/SourceCodePro-Bold.ttf') format('truetype');
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
=> Source Serif Pro
|
||||
*******************************************************************************/
|
||||
@font-face {
|
||||
font-family: 'Source Serif Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Source Serif Pro'), url('https://static.danielcortes.xyz/fonts/SourceSerifPro/SourceSerifPro-Regular.ttf') format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Serif Pro';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Source Serif Pro'), url('https://static.danielcortes.xyz/fonts/SourceSerifPro/SourceSerifPro-Bold.ttf') format('truetype');
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
=> Source Sans Pro
|
||||
*******************************************************************************/
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Source Sans Pro'), url('https://static.danielcortes.xyz/fonts/SourceSansPro/SourceSansPro-Regular.ttf') format('truetype');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Source Sans Pro'), url('https://static.danielcortes.xyz/fonts/SourceSansPro/SourceSansPro-Bold.ttf') format('truetype');
|
||||
}
|
||||
/******************************************************************************
|
||||
=> CODEHILITE
|
||||
*******************************************************************************/
|
||||
.codehilite .hll{background-color:#f1fa8c}.codehilite{background:#282a36;color:#f8f8f2}.codehilite .c{color:#6272a4}.codehilite .err,.codehilite .g{color:#f8f8f2}.codehilite .k{color:#ff79c6}.codehilite .l,.codehilite .n{color:#f8f8f2}.codehilite .o{color:#ff79c6}.codehilite .p,.codehilite .x{color:#f8f8f2}.codehilite .ch,.codehilite .cm{color:#6272a4}.codehilite .cp{color:#ff79c6}.codehilite .c1,.codehilite .cpf,.codehilite .cs{color:#6272a4}.codehilite .gd{color:#8b080b}.codehilite .ge{color:#f8f8f2;text-decoration:underline}.codehilite .gr{color:#f8f8f2}.codehilite .gh,.codehilite .gi{color:#f8f8f2;font-weight:700}.codehilite .go{color:#44475a}.codehilite .gp,.codehilite .gs,.codehilite .gt{color:#f8f8f2}.codehilite .gu{color:#f8f8f2;font-weight:700}.codehilite .kc{color:#ff79c6}.codehilite .kd{color:#8be9fd;font-style:italic}.codehilite .kn,.codehilite .kp,.codehilite .kr{color:#ff79c6}.codehilite .kt{color:#8be9fd}.codehilite .ld{color:#f8f8f2}.codehilite .m{color:#bd93f9}.codehilite .s{color:#f1fa8c}.codehilite .na{color:#50fa7b}.codehilite .nb{color:#8be9fd;font-style:italic}.codehilite .nc{color:#50fa7b}.codehilite .nd,.codehilite .ne,.codehilite .ni,.codehilite .no{color:#f8f8f2}.codehilite .nf{color:#50fa7b}.codehilite .nl{color:#8be9fd;font-style:italic}.codehilite .nn,.codehilite .nx,.codehilite .py{color:#f8f8f2}.codehilite .nt{color:#ff79c6}.codehilite .nv{color:#8be9fd;font-style:italic}.codehilite .ow{color:#ff79c6}.codehilite .w{color:#f8f8f2}.codehilite .mb,.codehilite .mf,.codehilite .mh,.codehilite .mi,.codehilite .mo{color:#bd93f9}.codehilite .dl,.codehilite .s1,.codehilite .s2,.codehilite .sa,.codehilite .sb,.codehilite .sc,.codehilite .sd,.codehilite .se,.codehilite .sh,.codehilite .si,.codehilite .sr,.codehilite .ss,.codehilite .sx{color:#f1fa8c}.codehilite .bp{color:#f8f8f2;font-style:italic}.codehilite .fm{color:#50fa7b}.codehilite .vc,.codehilite .vg,.codehilite .vi,.codehilite .vm{color:#8be9fd;font-style:italic}.codehilite .il{color:#bd93f9}
|
||||
/******************************************************************************
|
||||
=> NORMALIZE.CSS
|
||||
*******************************************************************************/
|
||||
button,hr,input{overflow:visible}progress,sub,sup{vertical-align:baseline}[type=checkbox],[type=radio],legend{box-sizing:border-box;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}details,main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{padding:.35em .75em .625em}legend{color:inherit;display:table;max-width:100%;white-space:normal}textarea{overflow:auto}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}[hidden],template{display:none}
|
||||
/******************************************************************************
|
||||
=> MAIN STYLES
|
||||
*******************************************************************************/
|
||||
@@ -641,3 +628,16 @@ code {
|
||||
.codehilite pre {
|
||||
margin: 1em;
|
||||
}
|
||||
/******************************************************************************
|
||||
=> NORMALIZE.CSS
|
||||
*******************************************************************************/
|
||||
button,hr,input{overflow:visible}progress,sub,sup{vertical-align:baseline}[type=checkbox],[type=radio],legend{box-sizing:border-box;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}details,main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{padding:.35em .75em .625em}legend{color:inherit;display:table;max-width:100%;white-space:normal}textarea{overflow:auto}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}[hidden],template{display:none}
|
||||
/******************************************************************************
|
||||
=> FONTS
|
||||
*******************************************************************************/
|
||||
@font-face{font-family:'Source Code Pro';font-style:normal;font-weight:400;src:local('Source Code Pro'),url(https://static.danielcortes.xyz/fonts/SourceCodePro/SourceCodePro-Regular.woff2) format('woff2');font-display:swap}
|
||||
@font-face{font-family:'Source Code Pro';font-style:normal;font-weight:700;src:local('Source Code Pro'),url(https://static.danielcortes.xyz/fonts/SourceCodePro/SourceCodePro-Bold.woff2) format('woff2');font-display:swap}
|
||||
@font-face{font-family:'Source Serif Pro';font-style:normal;font-weight:400;src:local('Source Serif Pro'),url(https://static.danielcortes.xyz/fonts/SourceSerifPro/SourceSerifPro-Regular.woff2) format('woff2')}
|
||||
@font-face{font-family:'Source Serif Pro';font-style:normal;font-weight:700;src:local('Source Serif Pro'),url(https://static.danielcortes.xyz/fonts/SourceSerifPro/SourceSerifPro-Bold.woff2) format('woff2');font-display:swap}
|
||||
@font-face{font-family:'Source Sans Pro';font-style:normal;font-weight:400;src:local('Source Sans Pro'),url(https://static.danielcortes.xyz/fonts/SourceSansPro/SourceSansPro-Regular.woff2) format('woff2');font-display:swap}
|
||||
@font-face{font-family:'Source Sans Pro';font-style:normal;font-weight:700;src:local('Source Sans Pro'),url(https://static.danielcortes.xyz/fonts/SourceSansPro/SourceSansPro-Bold.woff2) format('woff2');font-display:swap}
|
||||
|
||||
@@ -18,37 +18,37 @@ ocurrencias, o tal vez necesitas contar los largos de una lista de palabras,
|
||||
etc (ahora no se me ocurren mas).</p>
|
||||
<p>Previo a Java 8, la única forma (que a mi se me ocurra al menos) de hacer esto
|
||||
era así: </p>
|
||||
<pre class="codehilite"><code class="language-java">String[] things = {
|
||||
"ball", "celery", "hand", "celery",
|
||||
"mind", "ball", "fresh", "hand", "ball",
|
||||
"fresh", "fresh"
|
||||
};
|
||||
<div class="codehilite"><pre><span></span><code><span class="n">String</span><span class="o">[]</span> <span class="n">things</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s">"ball"</span><span class="p">,</span> <span class="s">"celery"</span><span class="p">,</span> <span class="s">"hand"</span><span class="p">,</span> <span class="s">"celery"</span><span class="p">,</span>
|
||||
<span class="s">"mind"</span><span class="p">,</span> <span class="s">"ball"</span><span class="p">,</span> <span class="s">"fresh"</span><span class="p">,</span> <span class="s">"hand"</span><span class="p">,</span> <span class="s">"ball"</span><span class="p">,</span>
|
||||
<span class="s">"fresh"</span><span class="p">,</span> <span class="s">"fresh"</span>
|
||||
<span class="p">};</span>
|
||||
|
||||
Map<String, Integer> oldWay = new HashMap<>();
|
||||
<span class="n">Map</span><span class="o"><</span><span class="n">String</span><span class="p">,</span> <span class="n">Integer</span><span class="o">></span> <span class="n">oldWay</span> <span class="o">=</span> <span class="k">new</span> <span class="n">HashMap</span><span class="o"><></span><span class="p">();</span>
|
||||
|
||||
for (String thing : things) {
|
||||
if (oldWay.containsKey(thing)) {
|
||||
oldWay.put(thing, oldWay.get(thing) + 1);
|
||||
} else {
|
||||
oldWay.put(thing, 1);
|
||||
}
|
||||
}
|
||||
<span class="k">for</span> <span class="p">(</span><span class="n">String</span> <span class="n">thing</span> <span class="p">:</span> <span class="n">things</span><span class="p">)</span> <span class="p">{</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">oldWay</span><span class="p">.</span><span class="na">containsKey</span><span class="p">(</span><span class="n">thing</span><span class="p">))</span> <span class="p">{</span>
|
||||
<span class="n">oldWay</span><span class="p">.</span><span class="na">put</span><span class="p">(</span><span class="n">thing</span><span class="p">,</span> <span class="n">oldWay</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="n">thing</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
|
||||
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
|
||||
<span class="n">oldWay</span><span class="p">.</span><span class="na">put</span><span class="p">(</span><span class="n">thing</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
|
||||
System.out.println("ball => " + oldWay.get("ball"));
|
||||
System.out.println("celery => " + oldWay.get("celery"));
|
||||
System.out.println("hand => " + oldWay.get("hand"));
|
||||
System.out.println("fresh => " + oldWay.get("fresh"));
|
||||
System.out.println("mind => " + oldWay.get("mind"));</code></pre>
|
||||
|
||||
<span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">"ball => "</span> <span class="o">+</span> <span class="n">oldWay</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="s">"ball"</span><span class="p">));</span>
|
||||
<span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">"celery => "</span> <span class="o">+</span> <span class="n">oldWay</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="s">"celery"</span><span class="p">));</span>
|
||||
<span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">"hand => "</span> <span class="o">+</span> <span class="n">oldWay</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="s">"hand"</span><span class="p">));</span>
|
||||
<span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">"fresh => "</span> <span class="o">+</span> <span class="n">oldWay</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="s">"fresh"</span><span class="p">));</span>
|
||||
<span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">"mind => "</span> <span class="o">+</span> <span class="n">oldWay</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="s">"mind"</span><span class="p">));</span>
|
||||
</code></pre></div>
|
||||
|
||||
<p>Lo cual resulta en:</p>
|
||||
<pre class="codehilite"><code class="language-md">ball => 3
|
||||
<div class="codehilite"><pre><span></span><code>ball => 3
|
||||
celery => 2
|
||||
hand => 2
|
||||
fresh => 3
|
||||
mind => 1</code></pre>
|
||||
|
||||
mind => 1
|
||||
</code></pre></div>
|
||||
|
||||
<p>Este es el código que utilizaba siempre cuando estaba aprendiendo Java, pero
|
||||
es realmente confuso cuando estas empezando, al menos yo tuve muchos problemas
|
||||
@@ -60,11 +60,11 @@ la key con el valor por default, en este caso 1.</p>
|
||||
actualmente estamos en Java 13 así que no hay escusa, ahora tenemos Lambdas y
|
||||
<code>HashMap</code> recibió nuevas funciones, entre ellas las que se usaran aquí,
|
||||
<code>putIfAbsent()</code> y <code>computeIfPresent()</code>: </p>
|
||||
<pre class="codehilite"><code class="language-java">for (String thing : things) {
|
||||
eightWay.putIfAbsent(thing, 0);
|
||||
eightWay.computeIfPresent(thing, (key, value) -> value + 1);
|
||||
}</code></pre>
|
||||
|
||||
<div class="codehilite"><pre><span></span><code><span class="k">for</span> <span class="p">(</span><span class="n">String</span> <span class="n">thing</span> <span class="p">:</span> <span class="n">things</span><span class="p">)</span> <span class="p">{</span>
|
||||
<span class="n">eightWay</span><span class="p">.</span><span class="na">putIfAbsent</span><span class="p">(</span><span class="n">thing</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
|
||||
<span class="n">eightWay</span><span class="p">.</span><span class="na">computeIfPresent</span><span class="p">(</span><span class="n">thing</span><span class="p">,</span> <span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> <span class="o">-></span> <span class="n">value</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
</code></pre></div>
|
||||
|
||||
<p><code>pufIfAbsent()</code> agrega una key solamente si no existe previamente y
|
||||
<code>computeIfPresent()</code> calcula el nuevo valor que contendrá la key con el
|
||||
@@ -72,10 +72,10 @@ lambda que se entrega en el segundo argumento, como los 2 serán ejecutados si
|
||||
es que el elemento no existe en el <code>HashMap</code>, se empieza a contar desde 0.</p>
|
||||
<p>Pero tenemos una función que es mas concisa y al menos a mi me agrada mas para
|
||||
solucionar este problema, esta se llama <code>merge()</code>:</p>
|
||||
<pre class="codehilite"><code class="language-java">for (String thing : things) {
|
||||
betterWay.merge(thing, 1, (oldValue, newValue) -> oldValue + newValue);
|
||||
}</code></pre>
|
||||
|
||||
<div class="codehilite"><pre><span></span><code><span class="k">for</span> <span class="p">(</span><span class="n">String</span> <span class="n">thing</span> <span class="p">:</span> <span class="n">things</span><span class="p">)</span> <span class="p">{</span>
|
||||
<span class="n">betterWay</span><span class="p">.</span><span class="na">merge</span><span class="p">(</span><span class="n">thing</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="p">(</span><span class="n">oldValue</span><span class="p">,</span> <span class="n">newValue</span><span class="p">)</span> <span class="o">-></span> <span class="n">oldValue</span> <span class="o">+</span> <span class="n">newValue</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
</code></pre></div>
|
||||
|
||||
<p><code>merge()</code> toma por argumentos, la key que se agregara, el valor que se quiere
|
||||
agregar y un lambda que ejecutar si es ya existía la key, en el se podrá
|
||||
@@ -83,10 +83,10 @@ calcular el nuevo valor que en este caso suma el valor antiguo con el valor
|
||||
que se quiere agregar.</p>
|
||||
<p>Incluso esta forma puede quedar aun mas corta si se utiliza una referencia de
|
||||
método, en ingles: method reference, que suena bastante mejor a mi gusto:</p>
|
||||
<pre class="codehilite"><code class="language-java">for (String thing : things) {
|
||||
evenBetterWay.merge(thing, 1, Integer::sum);
|
||||
}</code></pre>
|
||||
|
||||
<div class="codehilite"><pre><span></span><code><span class="k">for</span> <span class="p">(</span><span class="n">String</span> <span class="n">thing</span> <span class="p">:</span> <span class="n">things</span><span class="p">)</span> <span class="p">{</span>
|
||||
<span class="n">evenBetterWay</span><span class="p">.</span><span class="na">merge</span><span class="p">(</span><span class="n">thing</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">Integer</span><span class="p">::</span><span class="n">sum</span><span class="p">);</span>
|
||||
<span class="p">}</span>
|
||||
</code></pre></div>
|
||||
|
||||
<p>Y esa seria una mejor forma de contar con <code>HashMaps</code>, no es que sea
|
||||
necesariamente mas rápido, de hecho ni siquiera he testeado su velocidad, pero
|
||||
@@ -101,7 +101,7 @@ recordar.</p>
|
||||
});
|
||||
}
|
||||
|
||||
window.addEventListener('DOMContentLoaded', (event) => {
|
||||
window.addEventListener('load', (event) => {
|
||||
makeImagesClickeable();
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
window.addEventListener('DOMContentLoaded', (event) => {
|
||||
window.addEventListener('load', (event) => {
|
||||
makeImagesClickeable();
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -14,32 +14,32 @@
|
||||
<p><time datetime="2019-10-23">Oct 23, 2019</time></p>
|
||||
<p>Aquí ire dejando multiples comandos de git que he estado buscando muchas veces y siempre vuelvo a olvidar</p>
|
||||
<h3>1 - Sacar archivo o carpeta de la zona de stage</h3>
|
||||
<pre class="codehilite"><code class="language-bash">git reset HEAD -- <archivo/carpeta></code></pre>
|
||||
|
||||
<div class="codehilite"><pre><span></span><code>git reset HEAD -- <archivo/carpeta>
|
||||
</code></pre></div>
|
||||
|
||||
<h3>2 - Deshacer ultimo commit</h3>
|
||||
<pre class="codehilite"><code class="language-bash">git reset --soft HEAD~1</code></pre>
|
||||
|
||||
<div class="codehilite"><pre><span></span><code>git reset --soft HEAD~1
|
||||
</code></pre></div>
|
||||
|
||||
<h3>3 - Cambiar el nombre de una annotated tag</h3>
|
||||
<pre class="codehilite"><code class="language-bash">git tag <new> <old> -f -a</code></pre>
|
||||
|
||||
<div class="codehilite"><pre><span></span><code>git tag <new> <old> -f -a
|
||||
</code></pre></div>
|
||||
|
||||
<h3>4 - Deshabilitar fast forward por default</h3>
|
||||
<pre class="codehilite"><code class="language-bash">git config --global merge.ff false</code></pre>
|
||||
|
||||
<div class="codehilite"><pre><span></span><code>git config --global merge.ff <span class="nb">false</span>
|
||||
</code></pre></div>
|
||||
|
||||
<h3>5 - Siempre firmar commits</h3>
|
||||
<pre class="codehilite"><code class="language-bash">git config --global commit.gpgsign true</code></pre>
|
||||
|
||||
<div class="codehilite"><pre><span></span><code>git config --global commit.gpgsign <span class="nb">true</span>
|
||||
</code></pre></div>
|
||||
|
||||
<h3>6 - Siempre mostrar diff en commit</h3>
|
||||
<pre class="codehilite"><code class="language-bash">git config --global commit.verbose true</code></pre>
|
||||
|
||||
<div class="codehilite"><pre><span></span><code>git config --global commit.verbose <span class="nb">true</span>
|
||||
</code></pre></div>
|
||||
|
||||
<h3>7 - Push tags</h3>
|
||||
<pre class="codehilite"><code class="language-bash">git push --tags</code></pre>
|
||||
|
||||
<div class="codehilite"><pre><span></span><code>git push --tags
|
||||
</code></pre></div>
|
||||
|
||||
<p>Esta lista ira creciendo a medida que valla necesitando nuevos comandos :3</p>
|
||||
</div>
|
||||
@@ -50,7 +50,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
window.addEventListener('DOMContentLoaded', (event) => {
|
||||
window.addEventListener('load', (event) => {
|
||||
makeImagesClickeable();
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -18,37 +18,37 @@ hacer un left join, siempre olvido su sintaxis, por eso aquí mantendré una lis
|
||||
de comandos que uso constantemente.</p>
|
||||
<p>Todos los datos son basados en MySQL, que es la base de datos que mas utilizo.</p>
|
||||
<h2>1 - Crear tabla</h2>
|
||||
<pre class="codehilite"><code class="language-sql">create table usuario
|
||||
(
|
||||
id int primary key auto_increment,
|
||||
nombre varchar(255) not null,
|
||||
password binary(32) not null,
|
||||
salt binary(16) not null,
|
||||
trabajador int not null,
|
||||
foreign key (trabajador) references trabajador (id),
|
||||
inserted_at timestamp,
|
||||
modified_at timestamp,
|
||||
);</code></pre>
|
||||
|
||||
<div class="codehilite"><pre><span></span><code><span class="k">create</span> <span class="k">table</span> <span class="n">usuario</span>
|
||||
<span class="p">(</span>
|
||||
<span class="n">id</span> <span class="nb">int</span> <span class="k">primary</span> <span class="k">key</span> <span class="n">auto_increment</span><span class="p">,</span>
|
||||
<span class="n">nombre</span> <span class="nb">varchar</span><span class="p">(</span><span class="mi">255</span><span class="p">)</span> <span class="k">not</span> <span class="k">null</span><span class="p">,</span>
|
||||
<span class="n">password</span> <span class="nb">binary</span><span class="p">(</span><span class="mi">32</span><span class="p">)</span> <span class="k">not</span> <span class="k">null</span><span class="p">,</span>
|
||||
<span class="n">salt</span> <span class="nb">binary</span><span class="p">(</span><span class="mi">16</span><span class="p">)</span> <span class="k">not</span> <span class="k">null</span><span class="p">,</span>
|
||||
<span class="n">trabajador</span> <span class="nb">int</span> <span class="k">not</span> <span class="k">null</span><span class="p">,</span>
|
||||
<span class="k">foreign</span> <span class="k">key</span> <span class="p">(</span><span class="n">trabajador</span><span class="p">)</span> <span class="k">references</span> <span class="n">trabajador</span> <span class="p">(</span><span class="n">id</span><span class="p">),</span>
|
||||
<span class="n">inserted_at</span> <span class="k">timestamp</span><span class="p">,</span>
|
||||
<span class="n">modified_at</span> <span class="k">timestamp</span><span class="p">,</span>
|
||||
<span class="p">);</span>
|
||||
</code></pre></div>
|
||||
|
||||
<h2>2 - Como usar on delete y on update</h2>
|
||||
<p>Cuando se crean foreign keys se tiene la opción de agregar on delete y on update
|
||||
constraints, siempre olvido exactamente que significa cada modo de estos
|
||||
constraints así que para ilustrarlos usare el siguiente modelo:</p>
|
||||
<pre class="codehilite"><code class="language-sql">create table trabajador
|
||||
(
|
||||
id int primary,
|
||||
nombre varchar(255) not null
|
||||
);
|
||||
|
||||
create table usuario
|
||||
(
|
||||
id int primary key,
|
||||
nombre varchar(255) not null,
|
||||
trabajador_id int not null,
|
||||
foreign key (trabajador_id) references trabajador on (id)
|
||||
);</code></pre>
|
||||
<div class="codehilite"><pre><span></span><code><span class="k">create</span> <span class="k">table</span> <span class="n">trabajador</span>
|
||||
<span class="p">(</span>
|
||||
<span class="n">id</span> <span class="nb">int</span> <span class="k">primary</span><span class="p">,</span>
|
||||
<span class="n">nombre</span> <span class="nb">varchar</span><span class="p">(</span><span class="mi">255</span><span class="p">)</span> <span class="k">not</span> <span class="k">null</span>
|
||||
<span class="p">);</span>
|
||||
|
||||
<span class="k">create</span> <span class="k">table</span> <span class="n">usuario</span>
|
||||
<span class="p">(</span>
|
||||
<span class="n">id</span> <span class="nb">int</span> <span class="k">primary</span> <span class="k">key</span><span class="p">,</span>
|
||||
<span class="n">nombre</span> <span class="nb">varchar</span><span class="p">(</span><span class="mi">255</span><span class="p">)</span> <span class="k">not</span> <span class="k">null</span><span class="p">,</span>
|
||||
<span class="n">trabajador_id</span> <span class="nb">int</span> <span class="k">not</span> <span class="k">null</span><span class="p">,</span>
|
||||
<span class="k">foreign</span> <span class="k">key</span> <span class="p">(</span><span class="n">trabajador_id</span><span class="p">)</span> <span class="k">references</span> <span class="n">trabajador</span> <span class="k">on</span> <span class="p">(</span><span class="n">id</span><span class="p">)</span>
|
||||
<span class="p">);</span>
|
||||
</code></pre></div>
|
||||
|
||||
<h3><code>ON UPDATE</code></h3>
|
||||
<ul>
|
||||
@@ -74,8 +74,9 @@ usuarios que tengan su id asociado.</li>
|
||||
tabla usuarios sera llenadas con nulls.</li>
|
||||
</ul>
|
||||
<h2>3 - Creación de foreign keys fuera del create table</h2>
|
||||
<pre class="codehilite"><code class="language-sql">alter table usuario add constraint fk_usuario_trabajador
|
||||
foreign key (trabajador_id) references trabajador (id);</code></pre>
|
||||
<div class="codehilite"><pre><span></span><code><span class="k">alter</span> <span class="k">table</span> <span class="n">usuario</span> <span class="k">add</span> <span class="k">constraint</span> <span class="n">fk_usuario_trabajador</span>
|
||||
<span class="k">foreign</span> <span class="k">key</span> <span class="p">(</span><span class="n">trabajador_id</span><span class="p">)</span> <span class="k">references</span> <span class="n">trabajador</span> <span class="p">(</span><span class="n">id</span><span class="p">);</span>
|
||||
</code></pre></div>
|
||||
</div>
|
||||
<script>
|
||||
function makeImagesClickeable() {
|
||||
@@ -84,7 +85,7 @@ foreign key (trabajador_id) references trabajador (id);</code></pre>
|
||||
});
|
||||
}
|
||||
|
||||
window.addEventListener('DOMContentLoaded', (event) => {
|
||||
window.addEventListener('load', (event) => {
|
||||
makeImagesClickeable();
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
window.addEventListener('DOMContentLoaded', (event) => {
|
||||
window.addEventListener('load', (event) => {
|
||||
makeImagesClickeable();
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
window.addEventListener('DOMContentLoaded', (event) => {
|
||||
window.addEventListener('load', (event) => {
|
||||
makeImagesClickeable();
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
window.addEventListener('DOMContentLoaded', (event) => {
|
||||
window.addEventListener('load', (event) => {
|
||||
makeImagesClickeable();
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
window.addEventListener('DOMContentLoaded', (event) => {
|
||||
window.addEventListener('load', (event) => {
|
||||
makeImagesClickeable();
|
||||
});
|
||||
</script>
|
||||
|
||||
140
www/setup.html
140
www/setup.html
@@ -16,48 +16,48 @@
|
||||
<p>Actualmente el setup que estoy usando a cambiado, ya no puedo utilizar un tiling window manager como <code>herbstluftwm</code>, porque estoy obligado a usar VirtualBox para poder correr Microsoft Teams, que es lo que esta utilizando mi universidad para hacer clases y VirtualBox tiene problemas al entrar a modo fullscreen o seamless.</p>
|
||||
<p>Así que bueno, me cambie a <code>cwm</code> el cual es un stacking window manager desarrollado como parte de <code>OpenBSD</code>, usa tan solo un archivo de configuración en el <code>$HOME</code> donde se pueden configurar grupos, los que son equivalente a los típicos workspaces, y cambiar los key bindings para ejecutar programas, mover ventanas en la pantalla y entre grupos, hay solo un par de opciones mas que cambiar en realidad por lo que se siente bastante minimalista comparado con <code>OpenBox</code> por usar XML y tener mil opciones.</p>
|
||||
<p>La configuración que estoy usando para <code>cwm</code> es la siguiente:</p>
|
||||
<pre class="codehilite"><code class="language-sh">moveamount 10
|
||||
gap 25 15 15 15
|
||||
<div class="codehilite"><pre><span></span><code>moveamount <span class="m">10</span>
|
||||
gap <span class="m">25</span> <span class="m">15</span> <span class="m">15</span> <span class="m">15</span>
|
||||
|
||||
ignore polybar
|
||||
|
||||
sticky yes
|
||||
|
||||
autogroup 1 Firefox
|
||||
autogroup 8 Spotify
|
||||
autogroup 9 Thunderbird
|
||||
autogroup <span class="m">1</span> Firefox
|
||||
autogroup <span class="m">8</span> Spotify
|
||||
autogroup <span class="m">9</span> Thunderbird
|
||||
|
||||
unbind-key all
|
||||
unbind-mouse all
|
||||
|
||||
bind-key 4S-r restart
|
||||
bind-key 4S-e quit
|
||||
bind-key 4-d "dmenu_custom -r -e cwm"
|
||||
bind-key <span class="m">4</span>-d <span class="s2">"dmenu_custom -r -e cwm"</span>
|
||||
|
||||
bind-key 4C-h window-resize-left
|
||||
bind-key 4C-j window-resize-down
|
||||
bind-key 4C-k window-resize-up
|
||||
bind-key 4C-l window-resize-right
|
||||
|
||||
bind-key 4-f window-maximize
|
||||
bind-key <span class="m">4</span>-f window-maximize
|
||||
bind-key 4S-f window-fullscreen
|
||||
|
||||
bind-key M-Tab window-cycle-ingroup
|
||||
bind-key 4S-q window-delete
|
||||
|
||||
bind-mouse 4-1 window-move
|
||||
bind-mouse 4-3 window-resize
|
||||
bind-mouse 4-2 window-stick
|
||||
bind-mouse <span class="m">4</span>-1 window-move
|
||||
bind-mouse <span class="m">4</span>-3 window-resize
|
||||
bind-mouse <span class="m">4</span>-2 window-stick
|
||||
|
||||
bind-key 4-1 group-only-1
|
||||
bind-key 4-2 group-only-2
|
||||
bind-key 4-3 group-only-3
|
||||
bind-key 4-4 group-only-4
|
||||
bind-key 4-5 group-only-5
|
||||
bind-key 4-6 group-only-6
|
||||
bind-key 4-7 group-only-7
|
||||
bind-key 4-8 group-only-8
|
||||
bind-key 4-9 group-only-9
|
||||
bind-key <span class="m">4</span>-1 group-only-1
|
||||
bind-key <span class="m">4</span>-2 group-only-2
|
||||
bind-key <span class="m">4</span>-3 group-only-3
|
||||
bind-key <span class="m">4</span>-4 group-only-4
|
||||
bind-key <span class="m">4</span>-5 group-only-5
|
||||
bind-key <span class="m">4</span>-6 group-only-6
|
||||
bind-key <span class="m">4</span>-7 group-only-7
|
||||
bind-key <span class="m">4</span>-8 group-only-8
|
||||
bind-key <span class="m">4</span>-9 group-only-9
|
||||
|
||||
bind-key 4S-1 window-movetogroup-1
|
||||
bind-key 4S-2 window-movetogroup-2
|
||||
@@ -69,73 +69,73 @@ bind-key 4S-7 window-movetogroup-7
|
||||
bind-key 4S-8 window-movetogroup-8
|
||||
bind-key 4S-9 window-movetogroup-9
|
||||
|
||||
bind-key 4S-h "tile l"
|
||||
bind-key 4S-j "tile b"
|
||||
bind-key 4S-k "tile t"
|
||||
bind-key 4S-l "tile r"
|
||||
|
||||
bind-key 4-h "move l"
|
||||
bind-key 4-j "move b"
|
||||
bind-key 4-k "move t"
|
||||
bind-key 4-l "move r"</code></pre>
|
||||
bind-key 4S-h <span class="s2">"tile l"</span>
|
||||
bind-key 4S-j <span class="s2">"tile b"</span>
|
||||
bind-key 4S-k <span class="s2">"tile t"</span>
|
||||
bind-key 4S-l <span class="s2">"tile r"</span>
|
||||
|
||||
bind-key <span class="m">4</span>-h <span class="s2">"move l"</span>
|
||||
bind-key <span class="m">4</span>-j <span class="s2">"move b"</span>
|
||||
bind-key <span class="m">4</span>-k <span class="s2">"move t"</span>
|
||||
bind-key <span class="m">4</span>-l <span class="s2">"move r"</span>
|
||||
</code></pre></div>
|
||||
|
||||
<p>Realmente la mayoría de la configuración que tengo es para mover las ventanas alrededor al estilo de un tiling window manager, porque esas costumbres no mueren.</p>
|
||||
<p>Lo otro que tengo es <code>polybar</code> con un script bastante pequeño, porque cuando configure esto mi idea era que realmente era un ambiente para usar solo la maquina virtual de Windows, por lo que lo único que necesitaría saber en cada momento era la hora, si mi micrófono esta muteado y la batería disponible.</p>
|
||||
<pre class="codehilite"><code>[bar/bar]
|
||||
width = 100%
|
||||
height = 15
|
||||
override-redirect=true
|
||||
<div class="codehilite"><pre><span></span><code><span class="k">[bar/bar]</span>
|
||||
<span class="na">width</span> <span class="o">=</span> <span class="s">100%</span>
|
||||
<span class="na">height</span> <span class="o">=</span> <span class="s">15 </span>
|
||||
<span class="na">override-redirect</span><span class="o">=</span><span class="s">true</span>
|
||||
|
||||
background = ${xrdb:background:#222}
|
||||
foreground = ${xrdb:foreground:#fff}
|
||||
<span class="na">background</span> <span class="o">=</span> <span class="s">${xrdb:background:#222}</span>
|
||||
<span class="na">foreground</span> <span class="o">=</span> <span class="s">${xrdb:foreground:#fff}</span>
|
||||
|
||||
padding = 3
|
||||
module-margin = 1
|
||||
<span class="na">padding</span> <span class="o">=</span> <span class="s">3</span>
|
||||
<span class="na">module-margin</span> <span class="o">=</span> <span class="s">1</span>
|
||||
|
||||
font-0 = "monospace:pixelsize=10;0"
|
||||
<span class="na">font-0</span> <span class="o">=</span> <span class="s">"monospace:pixelsize=10;0"</span>
|
||||
|
||||
separator = |
|
||||
wm-name = polybar
|
||||
<span class="na">separator</span> <span class="o">=</span> <span class="s">|</span>
|
||||
<span class="na">wm-name</span> <span class="o">=</span> <span class="s">polybar</span>
|
||||
|
||||
modules-left = window
|
||||
modules-right = muted date battery
|
||||
<span class="na">modules-left</span> <span class="o">=</span> <span class="s">window</span>
|
||||
<span class="na">modules-right</span> <span class="o">=</span> <span class="s">muted date battery</span>
|
||||
|
||||
[module/window]
|
||||
type = internal/xwindow
|
||||
<span class="k">[module/window]</span>
|
||||
<span class="na">type</span> <span class="o">=</span> <span class="s">internal/xwindow</span>
|
||||
|
||||
[module/battery]
|
||||
type = internal/battery
|
||||
battery = BAT0
|
||||
adapter = AC
|
||||
full-at = 100
|
||||
<span class="k">[module/battery]</span>
|
||||
<span class="na">type</span> <span class="o">=</span> <span class="s">internal/battery</span>
|
||||
<span class="na">battery</span> <span class="o">=</span> <span class="s">BAT0</span>
|
||||
<span class="na">adapter</span> <span class="o">=</span> <span class="s">AC</span>
|
||||
<span class="na">full-at</span> <span class="o">=</span> <span class="s">100</span>
|
||||
|
||||
[module/date]
|
||||
type = internal/date
|
||||
interval = 10
|
||||
<span class="k">[module/date]</span>
|
||||
<span class="na">type</span> <span class="o">=</span> <span class="s">internal/date</span>
|
||||
<span class="na">interval</span> <span class="o">=</span> <span class="s">10</span>
|
||||
|
||||
date = %d/%m
|
||||
time = %H:%M
|
||||
label = %time%
|
||||
|
||||
[module/muted]
|
||||
type = custom/script
|
||||
exec = is_muted
|
||||
tail = true</code></pre>
|
||||
<span class="na">date</span> <span class="o">=</span> <span class="s">%d/%m</span>
|
||||
<span class="na">time</span> <span class="o">=</span> <span class="s">%H:%M</span>
|
||||
<span class="na">label</span> <span class="o">=</span> <span class="s">%time%</span>
|
||||
|
||||
<span class="k">[module/muted]</span>
|
||||
<span class="na">type</span> <span class="o">=</span> <span class="s">custom/script</span>
|
||||
<span class="na">exec</span> <span class="o">=</span> <span class="s">is_muted</span>
|
||||
<span class="na">tail</span> <span class="o">=</span> <span class="s">true</span>
|
||||
</code></pre></div>
|
||||
|
||||
<p>Para configurar el color y todo eso estoy simplemente usando pywal con la imagen de fondo y la saturacion al 100%</p>
|
||||
<p>Lo ultimo que afecta directamente a todo lo que hago, es la configuración de <code>urxvt</code>, la cual igual que todo, bastante cortita, la fuente que sea la <code>monospace</code> global, actualmente es <code>envypn</code>, un borde interno y quitando la scrollbar que realmente no hace falta.</p>
|
||||
<pre class="codehilite"><code>URxvt.font: xft:monospace
|
||||
URxvt.letterSpace: 0
|
||||
URxvt.lineSpace: 1
|
||||
URxvt.internalBorder: 30
|
||||
URxvt.cursorBlink: true
|
||||
URxvt.cursorUnderline: false
|
||||
URxvt.scrollBar: false
|
||||
URxvt.saveLines: 10000
|
||||
URxvt.depth: 32</code></pre>
|
||||
|
||||
<div class="codehilite"><pre><span></span><code><span class="err">URxvt.font: xft:monospace</span>
|
||||
<span class="err">URxvt.letterSpace: 0</span>
|
||||
<span class="err">URxvt.lineSpace: 1</span>
|
||||
<span class="err">URxvt.internalBorder: 30</span>
|
||||
<span class="err">URxvt.cursorBlink: true</span>
|
||||
<span class="err">URxvt.cursorUnderline: false</span>
|
||||
<span class="err">URxvt.scrollBar: false</span>
|
||||
<span class="err">URxvt.saveLines: 10000</span>
|
||||
<span class="err">URxvt.depth: 32</span>
|
||||
</code></pre></div>
|
||||
|
||||
<p>Y eso es en resumen este setup que ocupo ahorita, hay unos cuantos scripts que uso comúnmente, <code>screenshot</code>, <code>is_mute</code>, <code>move</code>, <code>tile</code> y <code>cpu</code>, ademas de varios programas que uso siempre, <code>dmenu</code>, <code>pass</code>, <code>sxhkd</code> y otros, todo esto esta subido a mi <code>git</code>, al menos lo intento mantener actualizado.</p>
|
||||
</div>
|
||||
@@ -146,7 +146,7 @@ URxvt.depth: 32</code></pre>
|
||||
});
|
||||
}
|
||||
|
||||
window.addEventListener('DOMContentLoaded', (event) => {
|
||||
window.addEventListener('load', (event) => {
|
||||
makeImagesClickeable();
|
||||
});
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user