feat: añadido sitemap custom

This commit is contained in:
2026-03-16 15:37:56 -03:00
parent 660a5690ee
commit 85e93a52f2
29 changed files with 247 additions and 86 deletions

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="es">
<head>
<meta name="generator" content="Hugo 0.147.9">
<meta name="generator" content="Hugo 0.155.3">
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Blog Fede</title>
@@ -123,7 +123,7 @@
</script>
<div
class="rounded flex dark:bg-black justify-center items-center h-screen w-screen bg-[repeating-linear-gradient(transparent,transparent_27px,#333_28px)] dark:bg-[repeating-linear-gradient(transparent,transparent_27px,#aaa_28px)] bg-[size:100%_28px] shadow-[0_4px_6px_-1px_rgb(107,114,128)]"
class="rounded flex dark:bg-black justify-center items-center h-screen w-full bg-[repeating-linear-gradient(transparent,transparent_27px,#333_28px)] dark:bg-[repeating-linear-gradient(transparent,transparent_27px,#aaa_28px)] bg-[size:100%_28px] shadow-[0_4px_6px_-1px_rgb(107,114,128)]"
>
<div
class="bg-cyan-200 dark:bg-emerald-500 border-2 dark:border-white rounded-lg p-2"
@@ -161,27 +161,90 @@
</div>
<hr class="m-4" />
<div class="flex justify-center p-8 flex-col items-center bg-teal-200 rounded-t-lg shadow-md">
<p
class="underline font-serif font-bold text-2xl md:text-4xl lg:text-5xl self-center"
>
Sitemap
</p>
<div class="container mx-auto px-4 py-8">
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<div
class="
bg-white rounded-lg
border-4 border-black
shadow-[0_4px_0_black]
hover:shadow-[0_8px_0_black]
hover:-translate-y-1
hover:scale-105
transition-all duration-100 ease-linear
overflow-hidden
transform
mx-auto
hover:z-2
"
>
<a href="/git" class="block w-86 h-48">
<div class="w-full h-48 border border-gray-200 flex flex-col justify-center items-center p-5">
<span class="text-gray-700 font-mono text-lg font-medium leading-tight">
Gitea
</span>
<p class="text-gray-400 font-mono text-sm line-clamp-2 bg-grey-300 p-1 rounded-lg">
/git
</p>
</div>
</a>
</div>
<div
class="
bg-white rounded-lg
border-4 border-black
shadow-[0_4px_0_black]
hover:shadow-[0_8px_0_black]
hover:-translate-y-1
hover:scale-105
transition-all duration-100 ease-linear
overflow-hidden
transform
mx-auto
hover:z-2
"
>
<a href="/ircc" class="block w-86 h-48">
<div class="w-full h-48 border border-gray-200 flex flex-col justify-center items-center p-5">
<span class="text-gray-700 font-mono text-lg font-medium leading-tight">
Irc
</span>
<p class="text-gray-400 font-mono text-sm line-clamp-2 bg-grey-300 p-1 rounded-lg">
/ircc
</p>
</div>
</a>
</div>
</div>
</div>
</div>
<hr class="m-4" />
<div class="flex justify-center p-8 flex-col items-center bg-sky-200 rounded-t-lg shadow-md">
<div
class="w-[80%] rounded-lg overflow-hidden border-2 shadow-2xl bg-[radial-gradient(circle,rgba(0,0,0,0)_0%,rgba(0,0,0,0.5)_70%,#ffffff_100%),repeating-linear-gradient(45deg,#000000,#000000_10px,#ffffff_10px,#ffffff_20px)]"
<p
class="underline font-serif font-bold text-2xl md:text-4xl lg:text-5xl self-center"
>
<div class="px-6 py-4 flex flex-col sm:flex-row justify-between">
<span
class="inline-block bg-gray-200 border rounded-full px-3 py-1 text-sm font-semibold text-gray-700 mr-2 mb-2 sm:mb-0"
>
<div class="font-bold text-black text-xl">Portfolio</div>
</span>
<span
class="inline-block bg-gray-200 border rounded-full px-3 py-1 text-sm font-semibold text-gray-700 mr-2"
>
<p class="text-black text-sm md:text-xl">
Algunos proyectos que he estado haciendo
</p>
</span>
</div>
</div>
Portfolio
</p>
<div class="container mx-auto px-4 py-8">
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
@@ -554,7 +617,7 @@ Si utilizan <strong>arch</strong> sabrán que se pueden configurar &lsquo;hooks&
</main>
<br>
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
© 2025 Federico Polidoro
© 2026 Federico Polidoro
</footer>
</body>
</html>

View File

@@ -55,7 +55,7 @@
<link>https://fedesrv.ddns.net/posts/string-interpolation/</link>
<pubDate>Tue, 24 Oct 2023 22:24:17 +0800</pubDate>
<guid>https://fedesrv.ddns.net/posts/string-interpolation/</guid>
<description>&lt;h1 id=&#34;que-es&#34;&gt;¿Que es?&lt;/h1&gt;&#xA;&lt;p&gt;Es un proceso de evaluado, en el cual se reemplazan placeholders en &lt;code&gt;string&lt;/code&gt; por valores, en nuestro caso, de variables en momento de ejecución.&lt;/p&gt;&#xA;&lt;h1 id=&#34;sintaxis&#34;&gt;Sintaxis&lt;/h1&gt;&#xA;&lt;pre&gt;&lt;code&gt;var manzanas = 4;&#xA;var bananas = 3;&#xA;&#xA;Console.WriteLine($&amp;quot;Tengo {manzanas} manzanas&amp;quot;);&#xA;Console.WriteLine($&amp;quot;Vendí {manzanas + bananas} frutas&amp;quot;);&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Basicamente son plantillas.&lt;/p&gt;&lt;/blockquote&gt;</description>
<description>&lt;h1 id=&#34;que-es&#34;&gt;¿Que es?&lt;/h1&gt;&#xA;&lt;p&gt;Es un proceso de evaluado, en el cual se reemplazan placeholders en &lt;code&gt;string&lt;/code&gt; por valores, en nuestro caso, de variables en momento de ejecución.&lt;/p&gt;&#xA;&lt;h1 id=&#34;sintaxis&#34;&gt;Sintaxis&lt;/h1&gt;&#xA;&lt;pre&gt;&lt;code&gt;var manzanas = 4;&#xA;var bananas = 3;&#xA;&#xA;Console.WriteLine($&amp;quot;Tengo {manzanas} manzanas&amp;quot;);&#xA;Console.WriteLine($&amp;quot;Vendí {manzanas + bananas} frutas&amp;quot;);&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Basicamente son plantillas.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
</item>
<item>
<title>Anuncio Aoc 2023</title>
@@ -76,14 +76,14 @@
<link>https://fedesrv.ddns.net/posts/pasar-imagenes-a-blanco-y-negro/</link>
<pubDate>Sat, 23 Sep 2023 10:35:18 -0300</pubDate>
<guid>https://fedesrv.ddns.net/posts/pasar-imagenes-a-blanco-y-negro/</guid>
<description>&lt;h1 id=&#34;gimp&#34;&gt;Gimp&lt;/h1&gt;&#xA;&lt;p&gt;Hay varias formas de pasar una imagen a blanco y negro. yo prefiero la de usar &lt;strong&gt;Gimp&lt;/strong&gt; con la opcion de &lt;code&gt;Color &amp;gt; Desaturacion &amp;gt; Color a gama de grises&lt;/code&gt;. Pero voy a listar un par de métodos alternativos para obtener el ~mismo resultado.&lt;br&gt;&#xA;&lt;img src=&#34;https://fedesrv.ddns.net/fedecomp.png&#34; alt=&#34;Comparación&#34;&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;imagemagick&#34;&gt;ImageMagick&lt;/h1&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Es un conjunto de utilidades de código abierto para mostrar, manipular y convertir imágenes, capaz de leer y escribir más de 200 formatos.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Una de esas utilidades es llamada &lt;code&gt;convert&lt;/code&gt;, la cual acepta un archivo y convierte este a el formato que se le especifique. Existe una flag llamada &lt;code&gt;-colorspace&lt;/code&gt; la cual si le damos el parametro &lt;strong&gt;Gray&lt;/strong&gt; la imagen resultante estará representada en una gama de grises.&#xA;&lt;img src=&#34;https://fedesrv.ddns.net/fedeg.jpg&#34; alt=&#34;Imagen en gama de grises&#34;&gt;&lt;/p&gt;</description>
<description>&lt;h1 id=&#34;gimp&#34;&gt;Gimp&lt;/h1&gt;&#xA;&lt;p&gt;Hay varias formas de pasar una imagen a blanco y negro. yo prefiero la de usar &lt;strong&gt;Gimp&lt;/strong&gt; con la opcion de &lt;code&gt;Color &amp;gt; Desaturacion &amp;gt; Color a gama de grises&lt;/code&gt;. Pero voy a listar un par de métodos alternativos para obtener el ~mismo resultado.&lt;br&gt;&#xA;&lt;img src=&#34;https://fedesrv.ddns.net/fedecomp.png&#34; alt=&#34;Comparación&#34;&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;imagemagick&#34;&gt;ImageMagick&lt;/h1&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Es un conjunto de utilidades de código abierto para mostrar, manipular y convertir imágenes, capaz de leer y escribir más de 200 formatos.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Una de esas utilidades es llamada &lt;code&gt;convert&lt;/code&gt;, la cual acepta un archivo y convierte este a el formato que se le especifique. Existe una flag llamada &lt;code&gt;-colorspace&lt;/code&gt; la cual si le damos el parametro &lt;strong&gt;Gray&lt;/strong&gt; la imagen resultante estará representada en una gama de grises.&#xA;&lt;img src=&#34;https://fedesrv.ddns.net/fedeg.jpg&#34; alt=&#34;Imagen en gama de grises&#34;&gt;&lt;/p&gt;</description>
</item>
<item>
<title>Diseño de Software Incident</title>
<link>https://fedesrv.ddns.net/posts/dise%C3%B1o-de-software-incident/</link>
<pubDate>Fri, 22 Sep 2023 15:08:17 +0800</pubDate>
<guid>https://fedesrv.ddns.net/posts/dise%C3%B1o-de-software-incident/</guid>
<description>&lt;h1 id=&#34;instanciacion-del-sqlconnection&#34;&gt;Instanciacion del SqlConnection&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;using&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; connection = &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; SqlConnection(configuration.GetConnectionString(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DefaultConnection&amp;#34;&lt;/span&gt;)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Eso genera un sql connection que va a existir hasta que salga del scope del programa.&lt;/p&gt;&#xA;&lt;h1 id=&#34;creacion-del-sqlcommand&#34;&gt;Creacion del SqlCommand&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;using&lt;/span&gt; var command = &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; SqlCommand();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.CommandText = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;sp_RecuperaProductos&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.CommandType = System.Data.CommandType.StoredProcedure;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;apertura-de-la-coneccion&#34;&gt;Apertura de la coneccion&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.Connection = connection;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.Connection.Open();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;utilizacion-del-executereader&#34;&gt;Utilizacion del ExecuteReader&lt;/h2&gt;&#xA;&lt;p&gt;Es un choclo pero basicamente el codigo de abajo se encarga de iterar por cada uno de las entradas de la tabla. &lt;strong&gt;MUY&lt;/strong&gt; importante, se tiene que añadir los productos dentro del loop principal del reader ya que lo que no se guarde en cada iteracion se pierde. (los maps no son case sensitive).&lt;/p&gt;</description>
<description>&lt;h1 id=&#34;instanciacion-del-sqlconnection&#34;&gt;Instanciacion del SqlConnection&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;using&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; connection = &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; SqlConnection(configuration.GetConnectionString(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DefaultConnection&amp;#34;&lt;/span&gt;)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Eso genera un sql connection que va a existir hasta que salga del scope del programa.&lt;/p&gt;&#xA;&lt;h1 id=&#34;creacion-del-sqlcommand&#34;&gt;Creacion del SqlCommand&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;using&lt;/span&gt; var command = &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; SqlCommand();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.CommandText = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;sp_RecuperaProductos&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.CommandType = System.Data.CommandType.StoredProcedure;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;apertura-de-la-coneccion&#34;&gt;Apertura de la coneccion&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.Connection = connection;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.Connection.Open();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;utilizacion-del-executereader&#34;&gt;Utilizacion del ExecuteReader&lt;/h2&gt;&#xA;&lt;p&gt;Es un choclo pero basicamente el codigo de abajo se encarga de iterar por cada uno de las entradas de la tabla. &lt;strong&gt;MUY&lt;/strong&gt; importante, se tiene que añadir los productos dentro del loop principal del reader ya que lo que no se guarde en cada iteracion se pierde. (los maps no son case sensitive).&lt;/p&gt;</description>
</item>
<item>
<title>RetroArchivements</title>
@@ -99,5 +99,19 @@
<guid>https://fedesrv.ddns.net/posts/sample-post/</guid>
<description>&lt;h1 id=&#34;buenas&#34;&gt;buenas&lt;/h1&gt;&#xA;&lt;p&gt;buenas&#xA;Luego de sufrir bastante con el nginx y su &lt;em&gt;Reverse Proxy&lt;/em&gt;, finalmente me decidí por poner la pagina del blog en el &lt;strong&gt;WebRoot&lt;/strong&gt; y el &lt;em&gt;gitea&lt;/em&gt; en un subfolder.&lt;/p&gt;&#xA;&lt;h2 id=&#34;como-funciona-esto&#34;&gt;Como funciona esto&lt;/h2&gt;&#xA;&lt;p&gt;El programa que estoy usando para hacer este blog se llama &lt;a href=&#34;https://gohugo.io&#34;&gt;Hugo&lt;/a&gt;, consiste de una especie de parceador de &lt;a href=&#34;https://www.markdownguide.org/&#34;&gt;Markdown&lt;/a&gt; a Html estático el cual hosteo con este &lt;a href=&#34;https://nginx.org/en/&#34;&gt;webServer&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h3 id=&#34;como-hago-nuevos-posts&#34;&gt;Como hago nuevos posts&lt;/h3&gt;&#xA;&lt;p&gt;Dentro de la carpeta del proyecto del server hay una que se llama content, todos los &lt;code&gt;.md&lt;/code&gt; que haya ahí cuando utilizo el comando:&lt;/p&gt;</description>
</item>
<item>
<title>Gitea</title>
<link>https://fedesrv.ddns.net/sitemap/gitea/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://fedesrv.ddns.net/sitemap/gitea/</guid>
<description></description>
</item>
<item>
<title>Irc</title>
<link>https://fedesrv.ddns.net/sitemap/ircc/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://fedesrv.ddns.net/sitemap/ircc/</guid>
<description></description>
</item>
</channel>
</rss>

View File

@@ -185,7 +185,7 @@
</main>
<br>
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
© 2025 Federico Polidoro
© 2026 Federico Polidoro
</footer>
</body>
</html>

View File

@@ -183,7 +183,7 @@ Si utilizan <strong>arch</strong> sabrán que se pueden configurar &lsquo;hooks&
</main>
<br>
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
© 2025 Federico Polidoro
© 2026 Federico Polidoro
</footer>
</body>
</html>

View File

@@ -182,7 +182,7 @@
</main>
<br>
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
© 2025 Federico Polidoro
© 2026 Federico Polidoro
</footer>
</body>
</html>

View File

@@ -151,18 +151,18 @@
<article>
<h1 id="instanciacion-del-sqlconnection">Instanciacion del SqlConnection</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">using</span> (<span style="color:#66d9ef">var</span> connection = <span style="color:#66d9ef">new</span> SqlConnection(configuration.GetConnectionString(<span style="color:#e6db74">&#34;DefaultConnection&#34;</span>)))
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">using</span> (<span style="color:#66d9ef">var</span> connection = <span style="color:#66d9ef">new</span> SqlConnection(configuration.GetConnectionString(<span style="color:#e6db74">&#34;DefaultConnection&#34;</span>)))
</span></span></code></pre></div><p>Eso genera un sql connection que va a existir hasta que salga del scope del programa.</p>
<h1 id="creacion-del-sqlcommand">Creacion del SqlCommand</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">using</span> var command = <span style="color:#66d9ef">new</span> SqlCommand();
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">using</span> var command = <span style="color:#66d9ef">new</span> SqlCommand();
</span></span><span style="display:flex;"><span>command.CommandText = <span style="color:#e6db74">&#34;sp_RecuperaProductos&#34;</span>;
</span></span><span style="display:flex;"><span>command.CommandType = System.Data.CommandType.StoredProcedure;
</span></span></code></pre></div><h1 id="apertura-de-la-coneccion">Apertura de la coneccion</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span>command.Connection = connection;
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span>command.Connection = connection;
</span></span><span style="display:flex;"><span>command.Connection.Open();
</span></span></code></pre></div><h2 id="utilizacion-del-executereader">Utilizacion del ExecuteReader</h2>
<p>Es un choclo pero basicamente el codigo de abajo se encarga de iterar por cada uno de las entradas de la tabla. <strong>MUY</strong> importante, se tiene que añadir los productos dentro del loop principal del reader ya que lo que no se guarde en cada iteracion se pierde. (los maps no son case sensitive).</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> reader = command.ExecuteReader();
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> reader = command.ExecuteReader();
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">while</span> (reader.Read())<span style="color:#75715e">//lee a traves de todas las filas que existen en la tabla</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span> <span style="color:#75715e">//por cada fila que creo tengo que asignar manualmente cada columna con cada propiedad</span>
@@ -196,9 +196,9 @@
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><h1 id="cerrado-de-la-coneccion">Cerrado de la coneccion</h1>
<p>NOTA: no ser mamerto y cerrar la coneccion fuera del while-loop.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span>command.Connection.Close();
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span>command.Connection.Close();
</span></span></code></pre></div><h1 id="sub-query">Sub-Query</h1>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">using</span> var commandProveedores = <span style="color:#66d9ef">new</span> SqlCommand();
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">using</span> var commandProveedores = <span style="color:#66d9ef">new</span> SqlCommand();
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>commandProveedores.CommandType = System.Data.CommandType.StoredProcedure;
</span></span><span style="display:flex;"><span>commandProveedores.CommandText = <span style="color:#e6db74">&#34;SP_AGREGARPROVEEDORPRODUCTO&#34;</span>;
@@ -215,7 +215,8 @@
<p>Un query es una consulta de tipo UPDATE, INSERT, DELETE, para el ExecuteNonQuery se devuelve la cantidad de ramas afectadas, menos en el uso de un StoredProcedure donde devuelve -1.</p>
<h1 id="notas">Notas</h1>
<blockquote>
<p>&quot; Si compila y anda, aprueba &quot; ~Laureano</p></blockquote>
<p>&quot; Si compila y anda, aprueba &quot; ~Laureano</p>
</blockquote>
</article>
@@ -241,7 +242,7 @@
</main>
<br>
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
© 2025 Federico Polidoro
© 2026 Federico Polidoro
</footer>
</body>
</html>

View File

@@ -220,7 +220,7 @@ EndSection
</main>
<br>
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
© 2025 Federico Polidoro
© 2026 Federico Polidoro
</footer>
</body>
</html>

View File

@@ -34,7 +34,7 @@
<link>https://fedesrv.ddns.net/posts/string-interpolation/</link>
<pubDate>Tue, 24 Oct 2023 22:24:17 +0800</pubDate>
<guid>https://fedesrv.ddns.net/posts/string-interpolation/</guid>
<description>&lt;h1 id=&#34;que-es&#34;&gt;¿Que es?&lt;/h1&gt;&#xA;&lt;p&gt;Es un proceso de evaluado, en el cual se reemplazan placeholders en &lt;code&gt;string&lt;/code&gt; por valores, en nuestro caso, de variables en momento de ejecución.&lt;/p&gt;&#xA;&lt;h1 id=&#34;sintaxis&#34;&gt;Sintaxis&lt;/h1&gt;&#xA;&lt;pre&gt;&lt;code&gt;var manzanas = 4;&#xA;var bananas = 3;&#xA;&#xA;Console.WriteLine($&amp;quot;Tengo {manzanas} manzanas&amp;quot;);&#xA;Console.WriteLine($&amp;quot;Vendí {manzanas + bananas} frutas&amp;quot;);&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Basicamente son plantillas.&lt;/p&gt;&lt;/blockquote&gt;</description>
<description>&lt;h1 id=&#34;que-es&#34;&gt;¿Que es?&lt;/h1&gt;&#xA;&lt;p&gt;Es un proceso de evaluado, en el cual se reemplazan placeholders en &lt;code&gt;string&lt;/code&gt; por valores, en nuestro caso, de variables en momento de ejecución.&lt;/p&gt;&#xA;&lt;h1 id=&#34;sintaxis&#34;&gt;Sintaxis&lt;/h1&gt;&#xA;&lt;pre&gt;&lt;code&gt;var manzanas = 4;&#xA;var bananas = 3;&#xA;&#xA;Console.WriteLine($&amp;quot;Tengo {manzanas} manzanas&amp;quot;);&#xA;Console.WriteLine($&amp;quot;Vendí {manzanas + bananas} frutas&amp;quot;);&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Basicamente son plantillas.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
</item>
<item>
<title>Anuncio Aoc 2023</title>
@@ -55,14 +55,14 @@
<link>https://fedesrv.ddns.net/posts/pasar-imagenes-a-blanco-y-negro/</link>
<pubDate>Sat, 23 Sep 2023 10:35:18 -0300</pubDate>
<guid>https://fedesrv.ddns.net/posts/pasar-imagenes-a-blanco-y-negro/</guid>
<description>&lt;h1 id=&#34;gimp&#34;&gt;Gimp&lt;/h1&gt;&#xA;&lt;p&gt;Hay varias formas de pasar una imagen a blanco y negro. yo prefiero la de usar &lt;strong&gt;Gimp&lt;/strong&gt; con la opcion de &lt;code&gt;Color &amp;gt; Desaturacion &amp;gt; Color a gama de grises&lt;/code&gt;. Pero voy a listar un par de métodos alternativos para obtener el ~mismo resultado.&lt;br&gt;&#xA;&lt;img src=&#34;https://fedesrv.ddns.net/fedecomp.png&#34; alt=&#34;Comparación&#34;&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;imagemagick&#34;&gt;ImageMagick&lt;/h1&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Es un conjunto de utilidades de código abierto para mostrar, manipular y convertir imágenes, capaz de leer y escribir más de 200 formatos.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Una de esas utilidades es llamada &lt;code&gt;convert&lt;/code&gt;, la cual acepta un archivo y convierte este a el formato que se le especifique. Existe una flag llamada &lt;code&gt;-colorspace&lt;/code&gt; la cual si le damos el parametro &lt;strong&gt;Gray&lt;/strong&gt; la imagen resultante estará representada en una gama de grises.&#xA;&lt;img src=&#34;https://fedesrv.ddns.net/fedeg.jpg&#34; alt=&#34;Imagen en gama de grises&#34;&gt;&lt;/p&gt;</description>
<description>&lt;h1 id=&#34;gimp&#34;&gt;Gimp&lt;/h1&gt;&#xA;&lt;p&gt;Hay varias formas de pasar una imagen a blanco y negro. yo prefiero la de usar &lt;strong&gt;Gimp&lt;/strong&gt; con la opcion de &lt;code&gt;Color &amp;gt; Desaturacion &amp;gt; Color a gama de grises&lt;/code&gt;. Pero voy a listar un par de métodos alternativos para obtener el ~mismo resultado.&lt;br&gt;&#xA;&lt;img src=&#34;https://fedesrv.ddns.net/fedecomp.png&#34; alt=&#34;Comparación&#34;&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;imagemagick&#34;&gt;ImageMagick&lt;/h1&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Es un conjunto de utilidades de código abierto para mostrar, manipular y convertir imágenes, capaz de leer y escribir más de 200 formatos.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Una de esas utilidades es llamada &lt;code&gt;convert&lt;/code&gt;, la cual acepta un archivo y convierte este a el formato que se le especifique. Existe una flag llamada &lt;code&gt;-colorspace&lt;/code&gt; la cual si le damos el parametro &lt;strong&gt;Gray&lt;/strong&gt; la imagen resultante estará representada en una gama de grises.&#xA;&lt;img src=&#34;https://fedesrv.ddns.net/fedeg.jpg&#34; alt=&#34;Imagen en gama de grises&#34;&gt;&lt;/p&gt;</description>
</item>
<item>
<title>Diseño de Software Incident</title>
<link>https://fedesrv.ddns.net/posts/dise%C3%B1o-de-software-incident/</link>
<pubDate>Fri, 22 Sep 2023 15:08:17 +0800</pubDate>
<guid>https://fedesrv.ddns.net/posts/dise%C3%B1o-de-software-incident/</guid>
<description>&lt;h1 id=&#34;instanciacion-del-sqlconnection&#34;&gt;Instanciacion del SqlConnection&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;using&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; connection = &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; SqlConnection(configuration.GetConnectionString(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DefaultConnection&amp;#34;&lt;/span&gt;)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Eso genera un sql connection que va a existir hasta que salga del scope del programa.&lt;/p&gt;&#xA;&lt;h1 id=&#34;creacion-del-sqlcommand&#34;&gt;Creacion del SqlCommand&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;using&lt;/span&gt; var command = &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; SqlCommand();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.CommandText = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;sp_RecuperaProductos&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.CommandType = System.Data.CommandType.StoredProcedure;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;apertura-de-la-coneccion&#34;&gt;Apertura de la coneccion&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.Connection = connection;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.Connection.Open();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;utilizacion-del-executereader&#34;&gt;Utilizacion del ExecuteReader&lt;/h2&gt;&#xA;&lt;p&gt;Es un choclo pero basicamente el codigo de abajo se encarga de iterar por cada uno de las entradas de la tabla. &lt;strong&gt;MUY&lt;/strong&gt; importante, se tiene que añadir los productos dentro del loop principal del reader ya que lo que no se guarde en cada iteracion se pierde. (los maps no son case sensitive).&lt;/p&gt;</description>
<description>&lt;h1 id=&#34;instanciacion-del-sqlconnection&#34;&gt;Instanciacion del SqlConnection&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;using&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; connection = &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; SqlConnection(configuration.GetConnectionString(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DefaultConnection&amp;#34;&lt;/span&gt;)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Eso genera un sql connection que va a existir hasta que salga del scope del programa.&lt;/p&gt;&#xA;&lt;h1 id=&#34;creacion-del-sqlcommand&#34;&gt;Creacion del SqlCommand&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;using&lt;/span&gt; var command = &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; SqlCommand();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.CommandText = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;sp_RecuperaProductos&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.CommandType = System.Data.CommandType.StoredProcedure;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;apertura-de-la-coneccion&#34;&gt;Apertura de la coneccion&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.Connection = connection;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.Connection.Open();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;utilizacion-del-executereader&#34;&gt;Utilizacion del ExecuteReader&lt;/h2&gt;&#xA;&lt;p&gt;Es un choclo pero basicamente el codigo de abajo se encarga de iterar por cada uno de las entradas de la tabla. &lt;strong&gt;MUY&lt;/strong&gt; importante, se tiene que añadir los productos dentro del loop principal del reader ya que lo que no se guarde en cada iteracion se pierde. (los maps no son case sensitive).&lt;/p&gt;</description>
</item>
<item>
<title>RetroArchivements</title>

View File

@@ -155,7 +155,8 @@
<img src="/fedecomp.png" alt="Comparación"></p>
<h1 id="imagemagick">ImageMagick</h1>
<blockquote>
<p>Es un conjunto de utilidades de código abierto para mostrar, manipular y convertir imágenes, capaz de leer y escribir más de 200 formatos.</p></blockquote>
<p>Es un conjunto de utilidades de código abierto para mostrar, manipular y convertir imágenes, capaz de leer y escribir más de 200 formatos.</p>
</blockquote>
<p>Una de esas utilidades es llamada <code>convert</code>, la cual acepta un archivo y convierte este a el formato que se le especifique. Existe una flag llamada <code>-colorspace</code> la cual si le damos el parametro <strong>Gray</strong> la imagen resultante estará representada en una gama de grises.
<img src="/fedeg.jpg" alt="Imagen en gama de grises"></p>
<h2 id="nota">Nota</h2>
@@ -189,7 +190,7 @@
</main>
<br>
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
© 2025 Federico Polidoro
© 2026 Federico Polidoro
</footer>
</body>
</html>

View File

@@ -178,7 +178,7 @@
</main>
<br>
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
© 2025 Federico Polidoro
© 2026 Federico Polidoro
</footer>
</body>
</html>

View File

@@ -157,10 +157,11 @@ Luego de sufrir bastante con el nginx y su <em>Reverse Proxy</em>, finalmente me
<p>El programa que estoy usando para hacer este blog se llama <a href="https://gohugo.io">Hugo</a>, consiste de una especie de parceador de <a href="https://www.markdownguide.org/">Markdown</a> a Html estático el cual hosteo con este <a href="https://nginx.org/en/">webServer</a>.</p>
<h3 id="como-hago-nuevos-posts">Como hago nuevos posts</h3>
<p>Dentro de la carpeta del proyecto del server hay una que se llama content, todos los <code>.md</code> que haya ahí cuando utilizo el comando:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>hugo
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>hugo
</span></span></code></pre></div><p>se genera el html de la paginas del blog las cuales copio usando rsync dentro de la intranet de mi casa</p>
<blockquote>
<p>Luraschi no me robes las llaves del ssh🙏.</p></blockquote>
<p>Luraschi no me robes las llaves del ssh🙏.</p>
</blockquote>
</article>
@@ -186,7 +187,7 @@ Luego de sufrir bastante con el nginx y su <em>Reverse Proxy</em>, finalmente me
</main>
<br>
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
© 2025 Federico Polidoro
© 2026 Federico Polidoro
</footer>
</body>
</html>

View File

@@ -156,13 +156,15 @@
<p>Estas son pequeñas updates que voy a estar haciendo sobre el proyecto final mio de &ldquo;Ingenieria de Software&rdquo; (asi se llama la materia). El cual consiste de un sistema de gestion de alquileres. Pensado para tener varios tipos de usuario como un propietario que carge las propiedades que desea publicar siempre y cuando este verificado que le pertenecen a él y un inquilino el cual podra efectuar busquedas de propiedades para alquilas, ver el estado de los alquileres, y pagar los alquileres que sean correpondientes.</p>
<p>Ahí arriba describi solo 2 o 3 de los casi 26 casos de uso que tengo descriptos. Además voy a reutilizar los conocimiento que adquirí haciendo el panel de control para la materia de base de datos.</p>
<blockquote>
<p>Se vienen cositas</p></blockquote>
<p>Se vienen cositas</p>
</blockquote>
<p>Bueno ahora voy a hacer un mini-informe sobre el modulo de seguridad</p>
<h1 id="permisos-para-los-clientes">Permisos para los clientes</h1>
<p>Cito de la entrega del segundo parcial.</p>
<blockquote>
<p>En cuanto a como va el desarrollo, te diria que bien encaminado, actualmente estoy usando svelte/bootstrap para el front y aspnet core 8 ( ? ) para el backend. ya tengo definido que acciones puede hacer un cliente en el sistema mediante un sistema usuario-grupo-permiso Similar a como los permisos son definidos en linux (donde por ejemplo un usuario para poder acceder al uso del audio del servidor necesita estar en un grupo &ldquo;audio&rdquo; o para escribir a un almacenamiento en cinta necesita pertenecer al grupo &ldquo;tape&rdquo;) En mi proyecto por ahora tengo 3 grupos que consisten en los 3 actores que tengo definidos (inquilino, propietario, administracion). Entonces cuando checkeo por si un cliente tiene acceso a un permiso lo puedo averiguar de forma sencilla:</p></blockquote>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> permisos = con.Clientes
<p>En cuanto a como va el desarrollo, te diria que bien encaminado, actualmente estoy usando svelte/bootstrap para el front y aspnet core 8 ( ? ) para el backend. ya tengo definido que acciones puede hacer un cliente en el sistema mediante un sistema usuario-grupo-permiso Similar a como los permisos son definidos en linux (donde por ejemplo un usuario para poder acceder al uso del audio del servidor necesita estar en un grupo &ldquo;audio&rdquo; o para escribir a un almacenamiento en cinta necesita pertenecer al grupo &ldquo;tape&rdquo;) En mi proyecto por ahora tengo 3 grupos que consisten en los 3 actores que tengo definidos (inquilino, propietario, administracion). Entonces cuando checkeo por si un cliente tiene acceso a un permiso lo puedo averiguar de forma sencilla:</p>
</blockquote>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-csharp" data-lang="csharp"><span style="display:flex;"><span><span style="color:#66d9ef">var</span> permisos = con.Clientes
</span></span><span style="display:flex;"><span>.Where(c =&gt; c.Dni == cli.Dni)
</span></span><span style="display:flex;"><span>.SelectMany(c =&gt; c.Idgrupos)
</span></span><span style="display:flex;"><span>.SelectMany(g =&gt; g.Idpermisos)
@@ -198,7 +200,7 @@
</main>
<br>
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
© 2025 Federico Polidoro
© 2026 Federico Polidoro
</footer>
</body>
</html>

View File

@@ -160,7 +160,8 @@ Console.WriteLine($&quot;Tengo {manzanas} manzanas&quot;);
Console.WriteLine($&quot;Vendí {manzanas + bananas} frutas&quot;);
</code></pre>
<blockquote>
<p>Basicamente son plantillas.</p></blockquote>
<p>Basicamente son plantillas.</p>
</blockquote>
</article>
@@ -186,7 +187,7 @@ Console.WriteLine($&quot;Vendí {manzanas + bananas} frutas&quot;);
</main>
<br>
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
© 2025 Federico Polidoro
© 2026 Federico Polidoro
</footer>
</body>
</html>

View File

@@ -250,7 +250,7 @@ function openmodal(id){
</main>
<br>
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
© 2025 Federico Polidoro
© 2026 Federico Polidoro
</footer>
</body>
</html>

View File

@@ -264,7 +264,7 @@ function openmodal(id){
</main>
<br>
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
© 2025 Federico Polidoro
© 2026 Federico Polidoro
</footer>
</body>
</html>

View File

@@ -260,7 +260,7 @@ function openmodal(id){
</main>
<br>
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
© 2025 Federico Polidoro
© 2026 Federico Polidoro
</footer>
</body>
</html>

View File

@@ -63,5 +63,11 @@
<lastmod>2023-09-22T12:28:17+08:00</lastmod>
</url><url>
<loc>https://fedesrv.ddns.net/categories/</loc>
</url><url>
<loc>https://fedesrv.ddns.net/sitemap/gitea/</loc>
</url><url>
<loc>https://fedesrv.ddns.net/sitemap/ircc/</loc>
</url><url>
<loc>https://fedesrv.ddns.net/sitemap/</loc>
</url>
</urlset>

0
public/sitemap/git Normal file
View File

25
public/sitemap/index.xml Normal file
View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Sitemaps on Blog Fede</title>
<link>https://fedesrv.ddns.net/sitemap/</link>
<description>Recent content in Sitemaps on Blog Fede</description>
<generator>Hugo</generator>
<language>en-us</language>
<atom:link href="https://fedesrv.ddns.net/sitemap/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Gitea</title>
<link>https://fedesrv.ddns.net/sitemap/gitea/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://fedesrv.ddns.net/sitemap/gitea/</guid>
<description></description>
</item>
<item>
<title>Irc</title>
<link>https://fedesrv.ddns.net/sitemap/ircc/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://fedesrv.ddns.net/sitemap/ircc/</guid>
<description></description>
</item>
</channel>
</rss>

View File

@@ -13,7 +13,7 @@
<link>https://fedesrv.ddns.net/posts/string-interpolation/</link>
<pubDate>Tue, 24 Oct 2023 22:24:17 +0800</pubDate>
<guid>https://fedesrv.ddns.net/posts/string-interpolation/</guid>
<description>&lt;h1 id=&#34;que-es&#34;&gt;¿Que es?&lt;/h1&gt;&#xA;&lt;p&gt;Es un proceso de evaluado, en el cual se reemplazan placeholders en &lt;code&gt;string&lt;/code&gt; por valores, en nuestro caso, de variables en momento de ejecución.&lt;/p&gt;&#xA;&lt;h1 id=&#34;sintaxis&#34;&gt;Sintaxis&lt;/h1&gt;&#xA;&lt;pre&gt;&lt;code&gt;var manzanas = 4;&#xA;var bananas = 3;&#xA;&#xA;Console.WriteLine($&amp;quot;Tengo {manzanas} manzanas&amp;quot;);&#xA;Console.WriteLine($&amp;quot;Vendí {manzanas + bananas} frutas&amp;quot;);&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Basicamente son plantillas.&lt;/p&gt;&lt;/blockquote&gt;</description>
<description>&lt;h1 id=&#34;que-es&#34;&gt;¿Que es?&lt;/h1&gt;&#xA;&lt;p&gt;Es un proceso de evaluado, en el cual se reemplazan placeholders en &lt;code&gt;string&lt;/code&gt; por valores, en nuestro caso, de variables en momento de ejecución.&lt;/p&gt;&#xA;&lt;h1 id=&#34;sintaxis&#34;&gt;Sintaxis&lt;/h1&gt;&#xA;&lt;pre&gt;&lt;code&gt;var manzanas = 4;&#xA;var bananas = 3;&#xA;&#xA;Console.WriteLine($&amp;quot;Tengo {manzanas} manzanas&amp;quot;);&#xA;Console.WriteLine($&amp;quot;Vendí {manzanas + bananas} frutas&amp;quot;);&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Basicamente son plantillas.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
</item>
<item>
<title>Anuncio Aoc 2023</title>
@@ -34,14 +34,14 @@
<link>https://fedesrv.ddns.net/posts/pasar-imagenes-a-blanco-y-negro/</link>
<pubDate>Sat, 23 Sep 2023 10:35:18 -0300</pubDate>
<guid>https://fedesrv.ddns.net/posts/pasar-imagenes-a-blanco-y-negro/</guid>
<description>&lt;h1 id=&#34;gimp&#34;&gt;Gimp&lt;/h1&gt;&#xA;&lt;p&gt;Hay varias formas de pasar una imagen a blanco y negro. yo prefiero la de usar &lt;strong&gt;Gimp&lt;/strong&gt; con la opcion de &lt;code&gt;Color &amp;gt; Desaturacion &amp;gt; Color a gama de grises&lt;/code&gt;. Pero voy a listar un par de métodos alternativos para obtener el ~mismo resultado.&lt;br&gt;&#xA;&lt;img src=&#34;https://fedesrv.ddns.net/fedecomp.png&#34; alt=&#34;Comparación&#34;&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;imagemagick&#34;&gt;ImageMagick&lt;/h1&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Es un conjunto de utilidades de código abierto para mostrar, manipular y convertir imágenes, capaz de leer y escribir más de 200 formatos.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Una de esas utilidades es llamada &lt;code&gt;convert&lt;/code&gt;, la cual acepta un archivo y convierte este a el formato que se le especifique. Existe una flag llamada &lt;code&gt;-colorspace&lt;/code&gt; la cual si le damos el parametro &lt;strong&gt;Gray&lt;/strong&gt; la imagen resultante estará representada en una gama de grises.&#xA;&lt;img src=&#34;https://fedesrv.ddns.net/fedeg.jpg&#34; alt=&#34;Imagen en gama de grises&#34;&gt;&lt;/p&gt;</description>
<description>&lt;h1 id=&#34;gimp&#34;&gt;Gimp&lt;/h1&gt;&#xA;&lt;p&gt;Hay varias formas de pasar una imagen a blanco y negro. yo prefiero la de usar &lt;strong&gt;Gimp&lt;/strong&gt; con la opcion de &lt;code&gt;Color &amp;gt; Desaturacion &amp;gt; Color a gama de grises&lt;/code&gt;. Pero voy a listar un par de métodos alternativos para obtener el ~mismo resultado.&lt;br&gt;&#xA;&lt;img src=&#34;https://fedesrv.ddns.net/fedecomp.png&#34; alt=&#34;Comparación&#34;&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;imagemagick&#34;&gt;ImageMagick&lt;/h1&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Es un conjunto de utilidades de código abierto para mostrar, manipular y convertir imágenes, capaz de leer y escribir más de 200 formatos.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Una de esas utilidades es llamada &lt;code&gt;convert&lt;/code&gt;, la cual acepta un archivo y convierte este a el formato que se le especifique. Existe una flag llamada &lt;code&gt;-colorspace&lt;/code&gt; la cual si le damos el parametro &lt;strong&gt;Gray&lt;/strong&gt; la imagen resultante estará representada en una gama de grises.&#xA;&lt;img src=&#34;https://fedesrv.ddns.net/fedeg.jpg&#34; alt=&#34;Imagen en gama de grises&#34;&gt;&lt;/p&gt;</description>
</item>
<item>
<title>Diseño de Software Incident</title>
<link>https://fedesrv.ddns.net/posts/dise%C3%B1o-de-software-incident/</link>
<pubDate>Fri, 22 Sep 2023 15:08:17 +0800</pubDate>
<guid>https://fedesrv.ddns.net/posts/dise%C3%B1o-de-software-incident/</guid>
<description>&lt;h1 id=&#34;instanciacion-del-sqlconnection&#34;&gt;Instanciacion del SqlConnection&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;using&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; connection = &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; SqlConnection(configuration.GetConnectionString(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DefaultConnection&amp;#34;&lt;/span&gt;)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Eso genera un sql connection que va a existir hasta que salga del scope del programa.&lt;/p&gt;&#xA;&lt;h1 id=&#34;creacion-del-sqlcommand&#34;&gt;Creacion del SqlCommand&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;using&lt;/span&gt; var command = &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; SqlCommand();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.CommandText = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;sp_RecuperaProductos&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.CommandType = System.Data.CommandType.StoredProcedure;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;apertura-de-la-coneccion&#34;&gt;Apertura de la coneccion&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.Connection = connection;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.Connection.Open();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;utilizacion-del-executereader&#34;&gt;Utilizacion del ExecuteReader&lt;/h2&gt;&#xA;&lt;p&gt;Es un choclo pero basicamente el codigo de abajo se encarga de iterar por cada uno de las entradas de la tabla. &lt;strong&gt;MUY&lt;/strong&gt; importante, se tiene que añadir los productos dentro del loop principal del reader ya que lo que no se guarde en cada iteracion se pierde. (los maps no son case sensitive).&lt;/p&gt;</description>
<description>&lt;h1 id=&#34;instanciacion-del-sqlconnection&#34;&gt;Instanciacion del SqlConnection&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;using&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; connection = &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; SqlConnection(configuration.GetConnectionString(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;DefaultConnection&amp;#34;&lt;/span&gt;)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Eso genera un sql connection que va a existir hasta que salga del scope del programa.&lt;/p&gt;&#xA;&lt;h1 id=&#34;creacion-del-sqlcommand&#34;&gt;Creacion del SqlCommand&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;using&lt;/span&gt; var command = &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; SqlCommand();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.CommandText = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;sp_RecuperaProductos&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.CommandType = System.Data.CommandType.StoredProcedure;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;apertura-de-la-coneccion&#34;&gt;Apertura de la coneccion&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.Connection = connection;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command.Connection.Open();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;utilizacion-del-executereader&#34;&gt;Utilizacion del ExecuteReader&lt;/h2&gt;&#xA;&lt;p&gt;Es un choclo pero basicamente el codigo de abajo se encarga de iterar por cada uno de las entradas de la tabla. &lt;strong&gt;MUY&lt;/strong&gt; importante, se tiene que añadir los productos dentro del loop principal del reader ya que lo que no se guarde en cada iteracion se pierde. (los maps no son case sensitive).&lt;/p&gt;</description>
</item>
<item>
<title>RetroArchivements</title>