206 lines
9.5 KiB
HTML
206 lines
9.5 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="es">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>Sistema Alquileres DevLog n1</title>
|
|
<link rel="stylesheet" href="/css/main.css">
|
|
<link rel="stylesheet" href="/css/styles.css">
|
|
|
|
|
|
</head>
|
|
<body>
|
|
<main>
|
|
|
|
<nav class="bg-gray-800 fixed w-full top-0 z-3">
|
|
<div class="mx-auto px-4">
|
|
<div class="flex items-center justify-between h-16">
|
|
<div class="flex items-center">
|
|
<a href="/" class="text-white font-bold text-xl"
|
|
>Fede Landing Site</a
|
|
>
|
|
</div>
|
|
|
|
<div class="hidden md:flex">
|
|
<a
|
|
href="/git"
|
|
target="_blank"
|
|
class="text-gray-300 hover:text-white px-3 py-2"
|
|
>Git</a
|
|
>
|
|
<a
|
|
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
|
title="Under Construction 🚧👷♂️🏗️"
|
|
target="_blank"
|
|
>CV</a
|
|
>
|
|
<a
|
|
href="https://github.com/fedpo2"
|
|
target="_blank"
|
|
class="text-gray-300 hover:text-white px-3 py-2"
|
|
>GitHub</a
|
|
>
|
|
<a
|
|
href="mailto:federico.nicolas.polidoro@gmail.com"
|
|
target="_blank"
|
|
class="text-gray-300 hover:text-white px-3 py-2"
|
|
>Email</a
|
|
>
|
|
<a
|
|
href="https://www.linkedin.com/in/federico-polidoro-40137a25b/"
|
|
target="_blank"
|
|
class="text-gray-300 hover:text-white px-3 py-2"
|
|
>LinkedIn</a
|
|
>
|
|
</div>
|
|
|
|
<div class="md:hidden cursor-context-menu">
|
|
<button
|
|
onclick="toggleOffCanvas()"
|
|
class="border px-2 py-1 rounded text-white"
|
|
>
|
|
<svg
|
|
class="h-6 w-6"
|
|
fill="none"
|
|
viewBox="0 0 24 24"
|
|
stroke="currentColor"
|
|
>
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
d="M0 6h25M0 12h25M0 18h25"
|
|
/>
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div
|
|
id="offCanvas"
|
|
class="fixed top-16 right-0 w-64 h-screen bg-gray-800 transform translate-x-full transition-transform duration-200 ease-in-out"
|
|
>
|
|
<div class="flex flex-col p-4">
|
|
<a
|
|
href="/git"
|
|
target="_blank"
|
|
class="text-gray-300 hover:text-white px-3 py-2"
|
|
>Git</a
|
|
>
|
|
<a
|
|
class="text-gray-300 hover:text-white px-3 py-2 muted"
|
|
title="Under Construction 🚧👷♂️🏗️"
|
|
target="_blank"
|
|
>CV</a
|
|
>
|
|
<a
|
|
href="https://github.com/fedpo2"
|
|
target="_blank"
|
|
class="text-gray-300 hover:text-white px-3 py-2"
|
|
>GitHub</a
|
|
>
|
|
<a
|
|
href="mailto:federico.nicolas.polidoro@gmail.com"
|
|
target="_blank"
|
|
class="text-gray-300 hover:text-white px-3 py-2"
|
|
>Email</a
|
|
>
|
|
<a
|
|
href="https://www.linkedin.com/in/federico-polidoro-40137a25b/"
|
|
target="_blank"
|
|
class="text-gray-300 hover:text-white px-3 py-2"
|
|
>LinkedIn</a
|
|
>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
<script>
|
|
function toggleOffCanvas() {
|
|
const offCanvas = document.getElementById("offCanvas");
|
|
offCanvas.classList.toggle("translate-x-full");
|
|
}
|
|
</script>
|
|
|
|
<div class="bg-blue-300 p-12"></div>
|
|
<div class="bg-blue-300">
|
|
<div class="bg-white rounded-md flex flex-col items-center px-2 py-6 max-w-4xl mx-auto">
|
|
|
|
<div class="w-full mb-8 overflow-hidden rounded-lg shadow-xl border-4 border-black">
|
|
|
|
<img
|
|
src="/cover2.png"
|
|
alt="Sistema Alquileres DevLog n1"
|
|
class="w-full h-auto object-cover"
|
|
/>
|
|
|
|
</div>
|
|
|
|
|
|
<h1 class="text-4xl font-bold mb-4 text-center">Sistema Alquileres DevLog n1</h1>
|
|
|
|
|
|
<div class="text-sm text-gray-600 mb-6 font-mono flex gap-4 justify-center">
|
|
<span>Publicado el: Nov 10, 2024</span>
|
|
|
|
<div class="flex gap-2">
|
|
|
|
<span class="px-2 py-1 bg-gray-200 rounded-full">#DevLog</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="prose prose-lg max-w-none mb-12">
|
|
<h1 id="que-es-esto">¿Que es esto?</h1>
|
|
<p>Estas son pequeñas updates que voy a estar haciendo sobre el proyecto final mio de “Ingenieria de Software” (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>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 “audio” o para escribir a un almacenamiento en cinta necesita pertenecer al grupo “tape”) 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
|
|
</span></span><span style="display:flex;"><span>.Where(c => c.Dni == cli.Dni)
|
|
</span></span><span style="display:flex;"><span>.SelectMany(c => c.Idgrupos)
|
|
</span></span><span style="display:flex;"><span>.SelectMany(g => g.Idpermisos)
|
|
</span></span><span style="display:flex;"><span>.Distinct();
|
|
</span></span></code></pre></div><p>Esto dandome una lista de todos los permisos que posee el cliente.</p>
|
|
<p>Tambien tengo hechos los abm de inquilino/propietario pero hay menos que comentar sobre eso.</p>
|
|
<h1 id="almacenamiento-de-contratos-de-alquiler">Almacenamiento de Contratos de Alquiler</h1>
|
|
<p>Un requisito que considero muy importante es almacenamiento de los contratos de alquiler. En una primera instancia pense que almacenarlos en un campo blob de mysql podia ser factible pero entre lo que escuché sobre que hace los backups de la base de datos gigantes y el hecho de que estaria haciendo una query a la base de datos para obtener, ponele, 3MB me parece un montón</p>
|
|
<p>Almacenarlos con un fileserver simple como <a href="https://github.com/svenstaro/miniserve">Miniserve</a> que es una excelente herramienta si bien para casos donde tenes un solo servidor pareceria masomenos pasable al final termina no siendo tan buena idea si llegas a necesitar algo minimanente distribuido o que maneje permisos.</p>
|
|
<p>Así fue como luego de preguntarle a un amigo y a chatgpt. me decidí por darle una oportunidad a <a href="https://min.io/">Minio</a> que es una alternativa “S3 pero hosteado en casa”. tengo mucho que aprender aún sobre s3 porque tengo solo una idea general de como funciona. Así que voy a dejar una update de esto en unos dias o semanas (no hay chances que sea consistente publicando acá) sobre como va esto. bye.</p>
|
|
|
|
</div>
|
|
|
|
|
|
<a
|
|
href="/"
|
|
class="
|
|
inline-block mt-6
|
|
border-2 border-black bg-white px-6 py-2
|
|
shadow-[0_4px_0_black]
|
|
hover:shadow-[0_8px_0_black]
|
|
hover:-translate-y-1
|
|
transition-all duration-100 ease-linear
|
|
font-medium
|
|
"
|
|
>
|
|
← Volver
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<div class="bg-blue-300 p-5"></div>
|
|
|
|
</main>
|
|
<br>
|
|
<footer class="text-center text-sm text-gray-500 mt-12 py-6 border-t">
|
|
© 2025 Federico Polidoro
|
|
</footer>
|
|
</body>
|
|
</html>
|