-
Notifications
You must be signed in to change notification settings - Fork 1
/
feed.xml
247 lines (240 loc) · 19.8 KB
/
feed.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
<?xml version="1.0"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>HABV</title>
<link>https://www.hermanbarrantes.dev/</link>
<atom:link href="https://www.hermanbarrantes.dev//feed.xml" rel="self" type="application/rss+xml" />
<description>Blog personal de Herman Barrantes sobre Java, Linux, Tecnología y Cultura Geek.</description>
<language>es-cr</language>
<pubDate>mié., 19 may. 2021 08:35:01 -0600</pubDate>
<lastBuildDate>mié., 19 may. 2021 08:35:01 -0600</lastBuildDate>
<item>
<title>Usar chmod en Linux</title>
<link>https://www.hermanbarrantes.dev//blog/2019/04/11/usar-chmod-en-linux.html</link>
<pubDate>jue., 11 abr. 2019 00:00:00 -0600</pubDate>
<guid isPermaLink="false">blog/2019/04/11/usar-chmod-en-linux.html</guid>
<description>
<p>Todos los sistemas de archivos basados en <strong>Unix</strong>, como lo es <strong>Linux</strong>, manejan tres tipos de permisos: lectura, escritura y ejecución. Los mismos se otorgan a tres categorías posibles: el usuario (<em>usuario</em>), el grupo al que pertenece el usuario (<em>grupo</em>) y todos los demás usuarios del sistema (<em>global</em>).</p>
<p>Para ver los permisos de un directorio podemos ejecutar el comando <code>ls -l</code> en un terminal y obtener una salida como la siguiente:</p>
<pre><code class="language-bash">$ ls -l
lrwxrwxrwx 1 usuario grupo 14 may 21 2018 Datos -&gt; /datos/usuario/
-rw-r--r-- 1 usuario grupo 0 abr 11 17:11 ejemplo.txt
drwxr-xr-x 2 usuario grupo 4096 mar 24 11:19 Escritorio
</code></pre>
<p>Los primeros 10 caracteres representan los permisos, para el ejemplo anterior corresponden a:</p>
<table>
<thead>
<tr><th> Tipo de archivo </th><th> Usuario </th><th> Grupo </th><th> Global </th></tr>
</thead>
<tbody>
<tr><td> <code>l</code> Enlace simbólico </td><td> <code>rwx</code> </td><td> <code>rwx</code> </td><td> <code>rwx</code> </td></tr>
<tr><td> <code>-</code> Archivo </td><td> <code>rw-</code> </td><td> <code>r--</code> </td><td> <code>r--</code> </td></tr>
<tr><td> <code>d</code> Directorio </td><td> <code>rwx</code> </td><td> <code>r-x</code> </td><td> <code>r-x</code> </td></tr>
</tbody>
</table>
<p>El primero corresponde al tipo de archivo. Los restantes 9 agrupados en 3 grupos de 3 letras representan los permisos del usuario, el grupo y todos los demás (global) respectivamente. Cada letra representa:</p>
<ul>
<li><code>r</code> Lectura (<strong>r</strong>ead)</li>
<li><code>w</code> Escritura (<strong>w</strong>rite)</li>
<li><code>x</code> Ejecución (e<strong>x</strong>ecute)</li>
</ul>
<p>Ya comprendido lo anterior, la sintaxis a seguir para asignar permisos a un archivo o directorio es la siguiente:</p>
<pre><code class="language-bash">$ chmod [u,g,o,a][+,-,=][r,w,x] archivo_o_directorio
</code></pre>
<p>Donde los parámetros corresponden a:</p>
<table>
<thead>
<tr><th> Parámetro </th><th> Significado </th></tr>
</thead>
<tbody>
<tr><td> <code>u</code> </td><td> Usuario </td></tr>
<tr><td> <code>g</code> </td><td> Grupo </td></tr>
<tr><td> <code>o</code> </td><td> Global </td></tr>
<tr><td> <code>a</code> </td><td> Todos </td></tr>
<tr><td> <code>+</code> </td><td> Otorgar </td></tr>
<tr><td> <code>-</code> </td><td> Revocar </td></tr>
<tr><td> <code>=</code> </td><td> Copiar </td></tr>
<tr><td> <code>r</code> </td><td> Lectura </td></tr>
<tr><td> <code>w</code> </td><td> Escritura </td></tr>
<tr><td> <code>x</code> </td><td> Ejecución </td></tr>
</tbody>
</table>
<p>Por ejemplo, si un usuario quiere otorgarle permisos de escritura al archivo <em>ejemplo.txt</em> a todos los usuarios de su mismo grupo, debe ejecutar <code>chmod</code> con los parámetros <code>g+w</code> de la siguiente manera:</p>
<pre><code class="language-bash">$ chmod g+w ejemplo.txt
</code></pre>
<p>Para revocar el permiso se cambiar el parámetro por <code>g-w</code>:</p>
<pre><code class="language-bash">$ chmod g-w ejemplo.txt
</code></pre>
<p>Si lo que desea es que el grupo tenga los mismos permisos que el usuario sobre el directorio <em>Escritorio</em>, debe ejecutar <code>chmod</code> con los parámetros <code>g=u</code>:</p>
<pre><code class="language-bash">$ chmod g=u Escritorio
</code></pre>
<p>Si se indica la categoría <code>a</code> o no se indica ninguna categoría, los permisos se aplica a todas las categorías:</p>
<pre><code class="language-bash"># Se otorga permiso de ejecución a usuario, grupo y global
$ chmod a+x ejemplo.txt
# Equivalente a
$ chmod +x ejemplo.txt
</code></pre>
<p>Se pueden especificar diferentes permisos al mismo tiempo utilizando coma:</p>
<pre><code class="language-bash">$ chmod g+w,o-rw,a+x ejemplo.txt
</code></pre>
<p>Y se pueden aplicar permisos recursivamente utilizando el parámetro <code>-R</code>:</p>
<pre><code class="language-bash">$ chmod -R +r Escritorio
</code></pre>
<p>El anterior ejemplo, le otorga permisos de lectura al directorio <em>Escritorio</em> al igual que a todo su contenido.</p>
<p>Otro método de establecer permisos es mediante el uso de la <strong>notación octal</strong>, la cual consiste en representar los 3 permisos (lectura, escritura y ejecución) en binario, donde 0 es que no tiene el permiso y 1 que si tiene el permiso y pasarlos luego a su representación en base 8, utilizando los dígitos del 0 al 7.</p>
<table>
<thead>
<tr><th> Binario </th><th> Octal </th><th> Permiso </th></tr>
</thead>
<tbody>
<tr><td> 000 </td><td> 0 </td><td> <code>---</code> </td></tr>
<tr><td> 001 </td><td> 1 </td><td> <code>--x</code> </td></tr>
<tr><td> 010 </td><td> 2 </td><td> <code>-w-</code> </td></tr>
<tr><td> 011 </td><td> 3 </td><td> <code>-wx</code> </td></tr>
<tr><td> 100 </td><td> 4 </td><td> <code>r--</code> </td></tr>
<tr><td> 101 </td><td> 5 </td><td> <code>r-x</code> </td></tr>
<tr><td> 110 </td><td> 6 </td><td> <code>rw-</code> </td></tr>
<tr><td> 111 </td><td> 7 </td><td> <code>rwx</code> </td></tr>
</tbody>
</table>
<p>La sintaxis de la notación octal sería igual a la anterior, remplazado los parámetros por el valor octal:</p>
<pre><code class="language-bash">$ chmod 750 ejemplo.txt
</code></pre>
<p>Así por ejemplo el parámetro <code>750</code> significa que el usuario tiene permisos <code>rwx</code>, el grupo tiene permisos <code>r-x</code> y los otros no tiene permisos <code>---</code>.</p>
<p>Las notaciones octales más frecuentes son:</p>
<table>
<thead>
<tr><th> Octal </th><th> Permisos </th></tr>
</thead>
<tbody>
<tr><td> 777 </td><td> <code>rwxrwxrwx</code> Todos tienen todos los permisos </td></tr>
<tr><td> 755 </td><td> <code>rwxr-xr-x</code> Usuario tiene todos los permisos, los demás solo leer y ejecutar </td></tr>
<tr><td> 644 </td><td> <code>rw-r--r--</code> Usuario puede leer y escribir, los demás solo leer </td></tr>
<tr><td> 600 </td><td> <code>rw-------</code> Usuario puede leer y escribir, los demás sin permisos </td></tr>
</tbody>
</table>
<p><a href="https://asciinema.org/a/doQmFsySVkKizAjD5L9zxWa29"><img src="https://asciinema.org/a/doQmFsySVkKizAjD5L9zxWa29.svg" alt="asciicast" /></a></p>
</description>
</item>
<item>
<title>Descargar Legalmente Máquinas Virtuales de Windows para probar Internet Explorer y Edge</title>
<link>https://www.hermanbarrantes.dev//blog/2019/03/20/descargar-legalmente-maquinas-virtuales-de-windows-para-probar-internet-explorer-y-edge.html</link>
<pubDate>mié., 20 mar. 2019 00:00:00 -0600</pubDate>
<guid isPermaLink="false">blog/2019/03/20/descargar-legalmente-maquinas-virtuales-de-windows-para-probar-internet-explorer-y-edge.html</guid>
<description>
<p>Microsoft cuenta con una página donde se pueden descargar <a href="https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/">Máquinas Virtuales</a> con Windows versión 7, 8.1 y 10 instalado para que los desarrolladores puedan realizar pruebas de Internet Explorer de sus versiones del 8 al 11 y también Edge.</p>
<p>Estas imágenes de <a href="https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/">Máquinas Virtuales</a> <strong>se pueden bajar gratis y legalmente</strong> y se pueden usar <strong>por un periodo de 90 día,</strong> con el único propósito de realizar pruebas sobre el navegador de Microsoft, en este <a href="https://az792536.vo.msecnd.net/vms/release_notes_license_terms_8_1_15.pdf">link</a> se detalle los requisitos y licencia.</p>
<p>Indirectamente también se puede probar estas versiones de Windows ya que vienen con una instalación del sistema operativo totalmente funcional.</p>
<p>La imágenes de las <a href="https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/">Máquinas Virtuales</a> se pueden descargar en el siguiente <a href="https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/">link</a>.</p>
<p>Se recomienda usar una máquina con suficientes recursos para poder usar estas imágenes, dado por ejemplo la de Windows 10 ocupa más de 4GB en disco duro comprimida y se recomienda usar de 1 a 2GB de RAM libres para la misma.</p>
<p>Las Máquinas Virtuales disponibles son:</p>
<ul>
<li>IE8 en Win7</li>
<li>IE9 en Win7</li>
<li>IE10 en Win7</li>
<li>IE11 en Win7</li>
<li>IE11 en Win8.1</li>
<li>MSEdge en Win10</li>
</ul>
<p>Para las plataformas:</p>
<ul>
<li>VirtualBox</li>
<li>Vagrant</li>
<li>VMWare (Windows, Mac)</li>
<li>HyperV (Windows)</li>
<li>Parallels (Mac)</li>
</ul>
</description>
</item>
<item>
<title>Longitud máxima de una dirección IP</title>
<link>https://www.hermanbarrantes.dev//blog/2019/01/05/longitud-maxima-de-una-direccion-ip.html</link>
<pubDate>sáb., 5 ene. 2019 00:00:00 -0600</pubDate>
<guid isPermaLink="false">blog/2019/01/05/longitud-maxima-de-una-direccion-ip.html</guid>
<description>
<p>Si estas diseñando una base de datos de un sitio WEB, y requieres almacenar en un campo de una tabla el valor de la IP de las personas que visitan el sitio, debes de especificar el tamaño máximo de ese campo, es ahí donde surge la pregunta: ¿Cuál es el tamaño máximo de una dirección IP?</p>
<p>Actualmente, los protocolos más usados en Internet son <a href="http://en.wikipedia.org/wiki/IPv4">IPv4</a> u <a href="http://en.wikipedia.org/wiki/IPv6">IPv6</a>, por lo que usaremos estos como base.</p>
<h2>IPv4</h2>
<p>Para el caso de IPv4, la dirección esta compuesta por 32bit o 4 octetos que cumple el siguiente formato: <code>255.255.255.255</code></p>
<p>Por lo que la dirección ocupará una <strong>longitud máxima 15 caracteres</strong>.</p>
<h2>IPv6</h2>
<p>Por su parte, IPv6 esta compuesta por 64bit de prefijo de red y 64bit de dirección, separados por el signo : (dos puntos), y cumple el siguiente formato: <code>2001:0db8:85a3:0000:0000:8a2e:0370:7334</code></p>
<p>Por lo que la dirección ocupará una <strong>longitud máxima de 39 caracteres</strong>.</p>
<h2>Solución</h2>
<p>Es aconsejable crear el campo de al menos <strong>39 caracteres</strong> para almacenar ambos tipos de protocolos.</p>
</description>
</item>
<item>
<title>Tutorial básico de Yaourt</title>
<link>https://www.hermanbarrantes.dev//blog/2018/12/26/tutorial-basico-de-yaourt.html</link>
<pubDate>mié., 26 dic. 2018 00:00:00 -0600</pubDate>
<guid isPermaLink="false">blog/2018/12/26/tutorial-basico-de-yaourt.html</guid>
<description>
<h2>¿Qué es Yaourt?</h2>
<p><code>yaourt</code> (<em>Yet AnOther User Repository Tool</em>, <strong>Yogurt</strong> en francés) es un programa de interfaz de línea de comandos que completa <code>pacman</code> para la instalar software en Archlinux y derivadas.</p>
<p>A diferencia de <code>pacman</code> que instala paquetes solamente de los repositorios oficiales, <code>yaourt</code> permite instalar paquetes desde <strong>Arch User Repository</strong> (<a href="https://wiki.archlinux.org/index.php/Arch_User_Repository_(Espa%C3%B1ol)">AUR</a>) que es un repositorio promovido por los usuarios de la comunidad de Arch.</p>
<blockquote>
<p>Actualmente, el proyecto se encuentra descontinuado, por lo que se recomiendan otras herramientas similares como <a href="https://github.com/polygamma/aurman">aurman</a>, <a href="https://github.com/kitsunyan/pakku">pakku</a> o <a href="https://github.com/Jguer/yay">yay</a>.</p>
</blockquote>
<h2>Como instalar</h2>
<p><del><code>yaourt</code> se puede instalar desde <code>pacman</code> ejecutando: <code>$ sudo pacman -S yaourt</code></del></p>
<p><strong>[Actualización 19/04/2019]</strong></p>
<blockquote>
<p><code>yaourt</code> ya no se encuentra dentro de los repositorios oficiales de <strong>Manjaro Linux</strong> por lo que no se puede instalar directamente mediante el uso de <code>pacman</code>, se recomienda el uso de otras herramientas similares, sin embargo, aún existe la posibilidad de instalarlo siguiendo la guía de <a href="https://linoxide.com/linux-how-to/install-yaourt-arch-linux-2018/" title="LinOxide">LinOxide</a>.</p>
</blockquote>
<h2>Uso básico</h2>
<p>Una de las ventajas que tiene <code>yaourt</code> es que no requiere iniciar la orden con <code>sudo</code> a diferencia de <code>pacman</code>, sino que nos solicitará los privilegios de administrador solo si los requiere.</p>
<p>Ahora bien, esta es una lista de comandos básicos comparados contra los tradicionales comandos de <code>pacman</code>:</p>
<h3>Buscar paquetes</h3>
<p>Se pueden buscar paquetes o grupos de paquetes por su nombre, y nos retornará una lista con todos los resultados encontrados para el nombre de paquete indicado.</p>
<pre><code class="language-bash"># con yaourt
$ yaourt -Ss paquete
# o simplemente
$ yaourt paquete
# con pacman
$ sudo pacman -Ss paquete
</code></pre>
<h3>Actualizar sistema</h3>
<p>Se pueden actualizar todos los paquetes del sistema a sus versiones más actualizadas.</p>
<pre><code class="language-bash"># con yaourt
$ yaourt -Syyu
# actualizar tambien paquetes de AUR
$ yaourt -Syyua
# con pacman
$ sudo pacman -Syyu
</code></pre>
<h3>Instalar/reinstalar paquete</h3>
<p>Ya identificado el paquete que se quiere instalar, simplemente se debe ejecutar el siguiente comando, el cual se encargará no solo de instalarlo, sino instalar todas las dependencias requeridas para su funcionamiento.</p>
<pre><code class="language-bash"># con yaourt
$ yaourt -S paquete
# con pacman
$ sudo pacman -S paquete
</code></pre>
<h3>Eliminar paquetes y sus dependencias</h3>
<p>Si por algún motivo ya no se requiere o desea tener un paquete instalado, se pude ejecutar el siguiente comando para eliminar el paquete y todas las dependencias y configuraciones que fueron instaladas con él.</p>
<pre><code class="language-bash"># con yaourt
$ yaourt -Rnsc paquete
# con pacman
$ sudo pacman -Rnsc paquete
</code></pre>
<h3>Buscar paquetes huérfanos</h3>
<p>En algunas ocasiones quedan paquetes huérfanos, los cuales son paquetes que fueron instalados como dependencias de otros paquetes que posteriormente fueron eliminados, sin embargo, no se eliminaron sus dependencias y ya no son dependencias de ningún otro paquete, por lo que ya no son necesarios.</p>
<pre><code class="language-bash"># con yaourt
$ yaourt -Qdt
# con pacman
$ sudo pacman -Qdt
</code></pre>
<p>Finalmente les dejo el <a href="https://github.com/archlinuxfr/yaourt">Link</a> de repositorio en <strong>Github</strong>.</p>
</description>
</item>
<item>
<title>Hola Mundo</title>
<link>https://www.hermanbarrantes.dev//blog/2018/12/19/hola-mundo.html</link>
<pubDate>mié., 19 dic. 2018 00:00:00 -0600</pubDate>
<guid isPermaLink="false">blog/2018/12/19/hola-mundo.html</guid>
<description>
<p>Primera publicación del Blog ;)</p>
</description>
</item>
</channel>
</rss>