<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[btw, I read Galex's Blog 🧸]]></title><description><![CDATA[btw, I read Galex's Blog 🧸]]></description><link>https://blog.galexbh.dev</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 23:12:37 GMT</lastBuildDate><atom:link href="https://blog.galexbh.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How to Run an Oracle Database Container]]></title><description><![CDATA[Hi Argonauts, in college I had a dilemma in one of my classes and it was to use Oracle dataBase on my Arch based operating system and I didn't want to mess up my system with a database manager so I decided to use Docker for this process but on Docker...]]></description><link>https://blog.galexbh.dev/how-to-run-an-oracle-database-container</link><guid isPermaLink="true">https://blog.galexbh.dev/how-to-run-an-oracle-database-container</guid><category><![CDATA[Docker]]></category><category><![CDATA[Oracle]]></category><dc:creator><![CDATA[Gabriel Barrientos]]></dc:creator><pubDate>Sat, 09 Jul 2022 17:27:39 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1657346562958/VftAYye5Q.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi Argonauts, in college I had a dilemma in one of my classes and it was to use Oracle dataBase on my Arch based operating system and I didn't want to mess up my system with a database manager so I decided to use Docker for this process but on Dockerhub I didn't find a very clear documentation on how to create a container using the image provided by oracle.</p>
<p>Until in a <a target="_blank" href="https://gist.github.com/megos/2df071c04817456bee04597f52e60063">gits</a> I found a solution and today I bring you a guide so you can build your own OracleDB image plus I will also show you an image in Dockerhub that serves this purpose very well and is very well documented in case you don't want to do this process yourself.</p>
<h2 id="heading-pre-requisites">Pre-Requisites</h2>
<ul>
<li>Docker &amp; Docker-compose</li>
<li>Unix-like OS</li>
<li>Git</li>
</ul>
<h2 id="heading-build-oracle-docker-image">Build Oracle Docker Image</h2>
<p>For the creation of our image we will use a repository provided by the official Oracle github account. What we are interested in is in the oracle database directory in single instances.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://github.com/oracle/docker-images">https://github.com/oracle/docker-images</a></div>
<p>So the first thing we will do is to clone this repository using the following command:</p>
<pre><code class="lang-bash">git <span class="hljs-built_in">clone</span> git@github.com:oracle/docker-images.git
</code></pre>
<p>Once cloned we will move to the following directory: </p>
<pre><code class="lang-bash"><span class="hljs-built_in">cd</span> docker-images/OracleDatabase/SingleInstance/dockerfiles
</code></pre>
<p>Within this path we will find different versions of oracle database xe now we have to download through the official <a target="_blank" href="https://www.oracle.com/database/technologies/oracle-database-software-downloads.html">Oracle website</a> the XE version we need.</p>
<p>For this case I will use version 21c although this is agnostic to any other version of oracleDatabase.</p>
<blockquote>
<p>Note: Versions 11 and 12.1 are deprecated so I would not recommend their use because they do not currently support JDBC so they could not be used with a current driver.</p>
</blockquote>
<p>Once we have downloaded the file we will see it inside the folder to the version that matches.</p>
<p>Then we will position again in OracleDatabase/SingleInstance/dockerfiles</p>
<pre><code class="lang-bash">sudo ./buildContainerImage.sh -v 21.3.0 -x
</code></pre>
<blockquote>
<p>Please note that this process may take some time.</p>
</blockquote>
<p>When the process is finished we will verify the creation of the image using the command:</p>
<pre><code class="lang-bash">docker images
</code></pre>
<p>And we will get an output very similar to the following:</p>
<pre><code class="lang-output">REPOSITORY        TAG           IMAGE ID       CREATED         SIZE
oracle/database   21.3.0-xe     f38d45b4b7b4   1 minutes ago   6.53GB
</code></pre>
<h2 id="heading-creating-a-container-using-the-built-image">Creating a Container Using The Built Image</h2>
<p>Now that we have our image ready to be used we will create a directory '/templates' in Documents or wherever you prefer.</p>
<p>Inside we will create another directory called '/oracle-21' where we will create two files <strong>docker-compose.yml</strong> and <strong>.env</strong> and we will put the following:</p>
<blockquote>
<p>docker-compose.yml</p>
</blockquote>
<pre><code class="lang-yaml"><span class="hljs-attr">version:</span> <span class="hljs-string">'3.9'</span>

<span class="hljs-attr">services:</span>
  <span class="hljs-attr">oracle:</span>
    <span class="hljs-attr">image:</span> <span class="hljs-string">oracle/database:21.3.0-xe</span>
    <span class="hljs-attr">container_name:</span> <span class="hljs-string">oracle-21-build</span>
    <span class="hljs-attr">restart:</span> <span class="hljs-string">always</span>
    <span class="hljs-attr">environment:</span>
      <span class="hljs-attr">ORACLE_PWD:</span> <span class="hljs-string">${ORACLE_PWD}</span>
    <span class="hljs-attr">ports:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-number">1521</span><span class="hljs-string">:1521</span>
      <span class="hljs-bullet">-</span> <span class="hljs-number">5500</span><span class="hljs-string">:5500</span>
    <span class="hljs-attr">volumes:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">data-data:/opt/oracle/oradata</span>

<span class="hljs-attr">volumes:</span>
    <span class="hljs-attr">data-data:</span>
        <span class="hljs-attr">driver:</span> <span class="hljs-string">local</span>
</code></pre>
<blockquote>
<p>.env</p>
</blockquote>
<pre><code class="lang-textplain">ORACLE_PWD=Admin12345
</code></pre>
<p>Once we have our files created, we will open a terminal inside the directory and proceed to create our container using docker-compose.</p>
<pre><code class="lang-bash">docker-compose up -d
</code></pre>
<p>This process takes a while so I recommend to check the logs to verify that it has been created correctly and the service is already running.</p>
<pre><code>docker<span class="hljs-operator">-</span>compose logs
docker<span class="hljs-operator">-</span>compose ps
</code></pre><p>When all this process is finished we will be able to access inside the container and perform some test queries with:</p>
<pre><code class="lang-bash">docker-compose <span class="hljs-built_in">exec</span> oracle /bin/bash

sqlplus sys as sysdba

SELECT NAME FROM v<span class="hljs-variable">$database</span>;
</code></pre>
<p>Now we will connect to a client like Dbeaver to be able to use our database manager for this we must pass it the following connection parameters :</p>
<ul>
<li>Host: localhost</li>
<li>Database: XE -&gt; SID</li>
<li>Authentication:<ul>
<li>User: sys</li>
<li>Password: Admin12345</li>
<li>Role: SYSDBA</li>
</ul>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1657387244000/RF2zZ0SVc.png" alt="Screenshot_20220709_111652.png" /></p>
<p>And with this we can now manage our manager and start working. </p>
<h2 id="heading-creating-a-container-using-a-dockerhub-image">Creating a Container Using a Dockerhub Image</h2>
<p>Of course, not everyone likes the idea of creating from scratch the whole process of building an image so here I bring an alternative to streamline this process with a <a target="_blank" href="https://hub.docker.com/r/gvenzl/oracle-xe">DockerHub image</a> that is very well documented and using the database that brings by default the creation of the container is fast enough.</p>
<p>So in our '/templates' folder we will create a new directory that we will call "oracle-dh", we will create our two files <strong>docker-compose.yml</strong> and our <strong>.env</strong> and we will write the following:</p>
<blockquote>
<p>docker-compose.yml</p>
</blockquote>
<pre><code class="lang-yaml"><span class="hljs-attr">version:</span> <span class="hljs-string">'3.9'</span>

<span class="hljs-attr">services:</span>
  <span class="hljs-attr">oracle:</span>
    <span class="hljs-attr">image:</span> <span class="hljs-string">gvenzl/oracle-xe:21.3.0</span>
    <span class="hljs-attr">container_name:</span> <span class="hljs-string">oracle-21</span>
    <span class="hljs-attr">restart:</span> <span class="hljs-string">always</span>
    <span class="hljs-attr">environment:</span>
      <span class="hljs-comment">#APP_USER: ${APP_USER}</span>
      <span class="hljs-comment">#APP_USER_PASSWORD: ${APP_USER_PASSWORD}</span>
      <span class="hljs-attr">ORACLE_PASSWORD:</span> <span class="hljs-string">${ORACLE_PASSWORD}</span>
      <span class="hljs-comment">#ORACLE_DATABASE: ${ORACLE_DATABASE}</span>
    <span class="hljs-attr">ports:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-number">1521</span><span class="hljs-string">:1521</span>
    <span class="hljs-attr">volumes:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">data-or:/opt/oracle/oradata</span>

<span class="hljs-attr">volumes:</span>
    <span class="hljs-attr">data-or:</span>
        <span class="hljs-attr">driver:</span> <span class="hljs-string">local</span>
</code></pre>
<blockquote>
<p>.env</p>
</blockquote>
<pre><code class="lang-textplane">APP_USER=galex
APP_USER_PASSWORD=12345
ORACLE_PASSWORD=admin
ORACLE_DATABASE=XE
</code></pre>
<p>As explained in the documentation now to be able to use the oracle manager with the default database are the following parameters and to be able to visualize it better I will use Dbeaver as client.</p>
<ul>
<li>Host: localhost</li>
<li>Database: XEPDB1 -&gt; Services Name</li>
<li>Authentication:<ul>
<li>User: sys</li>
<li>Password: admin</li>
<li>Role: SYSDBA</li>
</ul>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1657368970328/pEMiiJQ3Q.png" alt="Screenshot_20220709_061525.png" /></p>
<p>We must not forget to stop our container when we finish working so that the service does not remain in the background and we must not worry about losing information since we have a volume where everything we do will be stored.</p>
<pre><code class="lang-bash">docker-compose down
</code></pre>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Docker provides us with an easy and clean way for the installation of our database managers also we avoid messing up our operating system and saving computer resources.</p>
]]></content:encoded></item><item><title><![CDATA[Data Warehouse Introduction]]></title><description><![CDATA[Hello argonauta in recent days I have been studying the creation of the data warehouse and I bring a summary of the most important points that you should know as well as some considerations at the end to take into account when creating our business i...]]></description><link>https://blog.galexbh.dev/data-warehouse-introduction</link><guid isPermaLink="true">https://blog.galexbh.dev/data-warehouse-introduction</guid><category><![CDATA[dataware]]></category><dc:creator><![CDATA[Gabriel Barrientos]]></dc:creator><pubDate>Mon, 04 Jul 2022 02:46:21 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1656900146557/GoMDb7WF2.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello argonauta in recent days I have been studying the creation of the data warehouse and I bring a summary of the most important points that you should know as well as some considerations at the end to take into account when creating our business intelligence projects can be successful.</p>
<h2 id="heading-business-intelligence">Business Intelligence</h2>
<p>It is a process that is performed in order to obtain, analyze, and present information to users. This process is performed iteratively in order to continuously update the information we obtain.</p>
<h3 id="heading-elements">Elements</h3>
<ul>
<li>Graphic information systems.</li>
<li>Customer relationship management systems.</li>
<li>Knowledge management systems.</li>
<li>Knowledge management systems.</li>
<li>Decision making systems.</li>
<li>Data warehouse.</li>
<li>OLAP (Online Analytical Processing).</li>
</ul>
<h2 id="heading-data-warehouse">Data Warehouse</h2>
<p>It is a warehouse of large amounts of information that is of utmost importance to the company, through this information that must be timely, reliable and concise, it is possible to perform analysis of the same and allow to obtain results that help to improve decision making within the company.</p>
<p>The data source is updated daily and is available in various formats, including relational databases, excel, csv and many others.</p>
<p>It seeks to answer questions about the current state of a business.</p>
<h3 id="heading-data-mart">Data Mart</h3>
<p>A data warehouse is composed of one or several data mart, which is a view of the data warehouse, whose main function is oriented to a specific aspect of the business, examples of data mart:</p>
<ul>
<li>Sales data mart.</li>
<li>Human resources data mart.</li>
<li>Organizational performance data mart.</li>
<li>Budget data mart.</li>
</ul>
<h3 id="heading-facts-and-dimensions-table">Facts And Dimensions Table</h3>
<p>In order to build a data mart, two important concepts are required:</p>
<ul>
<li><p>The fact table, is that table that contains all the concrete aspects of the business that you want to measure, for example: total quantity of sales of a product, quantity of items shipped to a region budgets, etc.</p>
<p>  The fact table can only have the following fields:</p>
<ul>
<li>The primary key.</li>
<li>Foreign keys.</li>
<li>Metric (numeric value).</li>
</ul>
</li>
<li><p>The dimension table is the one that represents the information through which you want to measure the facts. Examples: time, regions, products, models, etc.</p>
<p>  It must include all the information that gives meaning to the numerical value represented by the metric.</p>
</li>
</ul>
<h2 id="heading-data-warehouse-models">Data Warehouse Models</h2>
<h3 id="heading-star-model">Star Model</h3>
<p>The central table is the fact table and at the end of the model represents the dimension tables.</p>
<p><img src="https://miro.medium.com/max/1054/0*hHNlMw83jDLJNzal" alt="Star model" class="image--center mx-auto" /></p>
<h3 id="heading-snowflake-model">Snowflake Model</h3>
<p>Unlike the star model the snowflake is that each dimension table can be related to another dimension table. And that other dimension table is not going to relate to the fact table.</p>
<p><img src="https://miro.medium.com/max/1400/1*EmwSOiKpwuXxlcqUSautrw.png" alt="Star model" class="image--center mx-auto" /></p>
<blockquote>
<p>It is important to mention that standardization is not necessary since it is not relevant for the design of these models.</p>
</blockquote>
<h2 id="heading-etl">ETL</h2>
<p>This process is known as Extraction, Transformation and Loading of data.</p>
<p>It is the process that consists of the extraction of data from different sources, the extracted data is transformed to the data required by the business and finally the data is loaded into each of the data marks that make up the data ware house.</p>
<h2 id="heading-olap-cubes">OLAP cubes</h2>
<p>It is a structure that allows to visualize the information from different perspectives, and according to the perspective of the cube, the information can be interpreted in one way or another.</p>
<p><img src="https://www.holistics.io/blog/content/images/2020/01/olap-3d-cube.png" alt="Star model" class="image--center mx-auto" /></p>
<p>According to the perspective or view you have of the cube, it will be analyzed in one way or another.</p>
<h2 id="heading-set-of-tools-to-build-a-data-warehouse">Set of tools to build a data warehouse</h2>
<p>Among the tools that can be used to build a data warehouse, the following can be used:</p>
<p><strong>Integration Services</strong> → Tool to build ETL.</p>
<p><strong>Analysis Services</strong> → Tool to build the OLAP cube</p>
<p><strong>Report Services</strong> → Tool to build the interactive reports.</p>
<h3 id="heading-decision-support-system-dss">Decision Support System (DSS).</h3>
<p>It is a BI (Business Intelligence) tool which can be used to perform the analysis services of a data warehouse and through which reports can be visualized interactively based on the desired perspectives of the OLAP cube.</p>
<h2 id="heading-building-a-data-mart">Building a Data Mart</h2>
<p>To build the data warehouse it is necessary to carry out the following steps:</p>
<ul>
<li>Obtain the questions to be answered for the business.</li>
<li>Identify the metric(s) that generate the business questions.</li>
<li>Identify the dimension tables.</li>
<li>Decide which model is used to design the data mart.</li>
<li>From the OLTP database, identify the tables that will be used to populate the fact tables and the dimension tables.</li>
<li>Analyze with which fields of the OLTP database the metrics will be obtained.</li>
</ul>
<h2 id="heading-considerations">Considerations</h2>
<ul>
<li><p>It is not convenient that the data warehouse coexists in the same environment as our transaction systems such as an ERP or POS.</p>
<p>Since it can lower the performance of the server when making queries to large volumes of data or also run the risk of not delivering the information in an agile way.</p>
</li>
<li><p>The nature of the data warehouse must be multipurpose, its data must be in a format that supports any and all possible forms of BI analysis.</p>
</li>
<li><p>The amount of time in which the data warehouse will be executed must be defined, this can vary according to the requirement of the company since it can be defined between a day, a week, a month or even a year.</p>
<p>This is due to the fact that the ETL process can take a long time and must continue from the last point where the process was carried out, because if the previous records could certainly be eliminated and the process would not be efficient due to the increase in the volume of records.</p>
</li>
<li><p>It is important to define well the questions for the data mart since this will be the main axis for the creation of our model and if we do not have a good model we can face problems such as long response times, inconsistent information, problems to display information among others.</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Biometric Identification Systems]]></title><description><![CDATA[In this article, we will cover the concepts and methods of biometric authentication as well as its applications in operating systems, use cases, comparisons against traditional methods and limitations, so we will see how secure it is, why it should b...]]></description><link>https://blog.galexbh.dev/biometric-identification-systems</link><guid isPermaLink="true">https://blog.galexbh.dev/biometric-identification-systems</guid><category><![CDATA[Security]]></category><dc:creator><![CDATA[Gabriel Barrientos]]></dc:creator><pubDate>Tue, 29 Mar 2022 14:35:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1648564330324/S8X1vpped.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this article, we will cover the concepts and methods of biometric authentication as well as its applications in operating systems, use cases, comparisons against traditional methods and limitations, so we will see how secure it is, why it should be used and what innovative developments it will bring in the near future.</p>
<blockquote>
<p>En este artículo, cubriremos los conceptos y métodos de autenticación biométrica así como sus aplicaciones en sistemas operativos, casos de uso, comparaciones contra los métodos tradicionales y limitaciones, de esta manera veremos qué tan seguro es, por qué se deben usar y qué desarrollos innovadores traerá en un futuro próximo.</p>
</blockquote>
<h2 id="heading-introduction">INTRODUCTION</h2>
<p>Biometric authentication is a secure process that relies on a person's unique biometric data to verify that they are who they are. Biometric authentication systems compare physical or behavioral characteristics with actual data stored and validated in a database. Authentication is verified if two biometric patterns match. Typically, biometric authentication is used to manage access to physical and digital assets, such as buildings, rooms and IT equipment.</p>
<p>Biometrics uses biometric data such as fingerprints or retinal scans to identify a person, while biometric authentication uses biometric data to verify that people are who they say they are.</p>
<h2 id="heading-use-cases">Use Cases</h2>
<h3 id="heading-law-enforcement">Law enforcement</h3>
<p>Law enforcement, state and federal agencies use different types of biometric data for identification purposes. </p>
<p>For example, the Automated Fingerprint Identification System (AFIS) is a database used to identify fingerprints. It was first used in the early 1970s as a way for police departments to automate their manual fingerprinting process, making it faster and more efficient. In the past, trained human inspectors had to compare fingerprint images with those on file. If there was a match, the examiner would recheck both prints to verify the match. Today, AFIS can match fingerprints against a database of millions of fingerprints in minutes.</p>
<h3 id="heading-travel">Travel</h3>
<p>Electronic passports (e-passports) are the same size as traditional passports and contain a microchip that stores the same biometric information as traditional passports, including a digital photo of the holder. The chip stores a digital image of the passport holder's photo, which is associated with the holder's name and other identifying information. E-passports are issued electronically by a country's issuing authority, verify the applicant's identity through fingerprints or other biometric information, and confirm the data on the chip with information provided by the applicant before issuing the passport. </p>
<h3 id="heading-healthcare">Healthcare</h3>
<p>Hospitals use biometrics to track patients more accurately and avoid confusion, while clinics and doctors' offices apply biometrics to keep patient information secure. With biometric data, hospitals can store and access patient medical records. This information can be used to ensure that the right patients receive the right care, whether it's faster identification in an emergency or preventing medical errors.</p>
<h2 id="heading-biometrics-in-operating-systems">Biometrics In Operating Systems</h2>
<h3 id="heading-secure-enclave">Secure Enclave</h3>
<p>It is not just a simple co-processor used in Apple devices, as it actually acts as a separate computer within the device. The co-processor uses its own microchip channel, which cannot be accessed from the main operating system (or any application) and has 4MB of dedicated memory to store the 256-bit elliptic curve private key.</p>
<p>By safeguard, nothing can access these keys, or rather the system requires the co-processor to use the keys to decrypt the information it needs, but these are never shared with the system, nor are they operated or sent to the cloud.</p>
<p>What is the purpose of a secure area?</p>
<p>This memory is isolated so that no one has access and is very difficult to compromise, making it difficult for users or attackers to decrypt smartphone data without biometric information. Some applications can also store biometric information in this memory, but they will never have access to it and can only request that their data be encrypted and decrypted using these keys.</p>
<h3 id="heading-windows-hello">Windows Hello</h3>
<p>When Windows 10 was first released, it included Microsoft Passport and Windows Hello, which together provided multi-factor authentication. To simplify deployment and improve compliance, Microsoft has consolidated these technologies into a single solution called Windows Hello.</p>
<p>Windows Hello is a biometric authentication feature that improves authentication and prevents impersonation using facial recognition and fingerprints.</p>
<p>Windows Hello Authenticator is used to authenticate employees and grant them access to the corporate network. Authentication is not passed between devices, is not shared with a server and cannot be easily extracted from a device. If multiple employees share a device, each employee will use their own biometric data on the device.</p>
<p>Where does Windows Hello store data?</p>
<p>The biometric data to support Windows Hello is stored locally on the device only. It is not sent to an external server or device. This separation helps deter potential attackers by preventing the creation of a single collection point where attackers can emerge to steal biometric data. Furthermore, even if an attacker obtains the biometric data from the device, there is no way to convert it back to the original biometric pattern that the biometric sensor can recognize.</p>
<p>Each sensor in the device has its own biometric database file where the sample data is stored. Each database has a unique randomly generated key that is encrypted in the system. The sensor sample data will be encrypted with this key in the database using AES with CBC binding mode. The abbreviation is SHA256.</p>
<h2 id="heading-biometric-authentication-methods">Biometric Authentication Methods</h2>
<p>The following technologies can be used to digitally identify individuals or grant them permission to access a system:</p>
<ul>
<li><p><strong>Chemical biometric devices</strong>.</p>
<ul>
<li><strong>DNA</strong> (deoxyribonucleic acid) matching uses genetic material to identify a person.</li>
</ul>
</li>
<li><p><strong>Visual biometric devices</strong>.</p>
<ul>
<li><strong>Retinal scans</strong> identify subjects by analyzing the pattern of blood vessels in the back of their eyes.</li>
<li><strong>Iris recognition</strong> uses an image of the iris to identify individuals.</li>
<li><strong>Fingerprint scanning</strong> identifies people based on their fingerprints.</li>
<li><strong>Hand geometry recognition</strong> verifies identity or authorizes transactions using a mathematical representation of the unique characteristics of people's hands. It does this by measuring the distances between various parts of the hand, such as the length and width of the fingers and the shape of the valleys between the knuckles.</li>
<li><strong>Facial recognition relies</strong> on the unique characteristics and patterns of people's faces to confirm their identity. The system identifies 80 nodal points on a human face, which form numerical codes called facial fingerprints.</li>
<li><strong>Ear authentication</strong> verifies identity based on the unique shape of the user's ear.</li>
<li><strong>Signature recognition</strong> uses pattern recognition to identify people from their handwritten signature.</li>
</ul>
</li>
<li><p><strong>Vein or vascular scans</strong>.</p>
<ul>
<li><strong>Finger vein identification</strong> identifies people based on the patterns of the veins in their finger.</li>
</ul>
</li>
<li><p><strong>Behavioral identifiers</strong>.</p>
<ul>
<li><strong>Gait</strong> analyzes the way people walk.</li>
<li><strong>Handwriting recognition</strong> establishes people's identity based on their unique handwriting characteristics, including how fast they write.</li>
</ul>
</li>
<li><p><strong>Auditory biometric devices</strong>.</p>
<ul>
<li><strong>Voice identification</strong> identifies people by their voice and is based on characteristics created by the shape of the mouth and throat.</li>
</ul>
</li>
</ul>
<h2 id="heading-is-biometric-identification-technology-secure">Is biometric identification technology secure?</h2>
<p>Biometric processes are more convenient, but are they reliable? The providers that use them must ensure that the data is stored securely and encrypted directly on the device not how it was or still is done in large servers (cloud) because if these are hacked the data and the encryption system itself is lost so the thief can enter the system thousands of times (Juan Sebastian Gomez). </p>
<p>The biometric system, yes, improved security but also has some problems for example Israeli researchers managed to hack a database of 23gb with more than 27 million personal data (fingerprints, face, name, name, password of that user and many more) of more than 1 million people.</p>
<p>These types of dangerous vulnerabilities are very common and unfortunately often receive very negative responses from companies who will be told that the vulnerability is a threat, not a help (Rotem and Locar).</p>
<p>So even biometric passwords are not 100% foolproof, still it is a much safer way to protect our digital activities, manufacturers are relying more and more on biometric security. Now we will see a comparison between some biometric vs password security methods:</p>
<h3 id="heading-fingerprint-vs-password">Fingerprint Vs Password.</h3>
<p>The fingerprint is much more convenient, just place your finger on the sensor of the device and it is easier than typing a password, which have more disadvantages because they are insecure and are subject to many attacks, besides being a very old-fashioned method but it is easy to implement and that is why it is so widespread (Prof. Dr. Christoph Meinel).</p>
<h3 id="heading-facial-recognition-vs-password">Facial Recognition Vs Password</h3>
<p>It is a question of cost, the more sensors you use the more accurately you can capture a fingerprint, face or other biometric feature. The level of security depends on how the system is implemented. If there are enough sensors it is more secure than a password (Prof. Dr. Christoph Meinel).</p>
<h3 id="heading-iris-recognition-vs-password">Iris recognition Vs Password</h3>
<p>Iris scanning, fingerprint, fingerprint, facial recognition are similar methods, you take a constant characteristic of the individual and the system recognizes him/her based on that. I have to memorize the password, I can't write it down because if someone finds it they could impersonate me. The future lies in multifactor authentication of at least two characteristics and I believe that the methods that least disturb the user will prevail (Prof. Dr. Christoph Meinel).</p>
<h3 id="heading-cancelable-biometric-data">Cancelable Biometric Data</h3>
<p>However developments continue and this is where cancellable biometrics comes in where biometric data is not stored one by one (one piece of data and one record). </p>
<p>Cancellable biometrics refers to the intentional and systematically repeatable distortion of biometric characteristics in order to protect sensitive user-specific data. If a cancellable feature is compromised, the distortion characteristics change, and the same biometric is assigned to a new template, which is subsequently used. Cancellable biometrics is one of the main categories for biometric template protection, in addition to the biometric cryptosystem (Dr. Andrew Teoh Beng Jin and Mr. Lim Meng Hui).</p>
<p>Cancellable biometrics provides privacy protection as the user's actual biometric data is never exposed during the authentication process. It provides feature-level pattern protection with irreversible transformations/cuts. On the other hand, biometric data that can be destroyed has certain limitations that need to be taken into account, for example in biometric designs that may become unreliable in case of data leakage of auxiliary material.</p>
<h2 id="heading-dna-id-statistical-and-theoretical-analysis">DNA-ID Statistical and Theoretical Analysis</h2>
<p>The most commonly studied or used biometric data are fingerprints, facial, iris, voice, signatures, retinas, and geometric patterns of hands and veins (Shen and Tan, 1999; Vijaya Kumar et al., 2004). There is no one-size-fits-all model. In addition, these techniques are based on feature similarity measures. This leads to inaccuracies that make the modern state unsuitable for general purpose deterministic systems. However, information on DNA polymorphisms such as STR (Short Tandem Repeat Structure) and SNP (Single Nucleotide Polymorphism) provides the most reliable individual identification. These data can be identified at a minimum, digitally, and remain unchanged during life or after death.</p>
<h3 id="heading-probability-of-match-between-the-dna-ids-of-any-two-persons">Probability of match between the DNA-IDs of any two persons</h3>
<p>The probability p that the STR count at the same locus (specific site on the chromosome where a gene or other DNA sequence, such as its genetic address, is located) is identical for any two people can be expressed as:</p>
<p>\[
When\:j\:=\:k,\:\sum _{j=1}^m\left(p_j\cdot p_k\right)^2
\]</p>
<p>\[
When\:j\:\ne \:k,\:\sum _{1\le jk\le m}^m\left(2p_j\cdot p_k\right)^2\:\:
\]</p>
<p>\[
p=\sum _{k=1}^m\:\left(p_j\right)^4
\]</p>
<p>\[
+\:\sum \:_{1\le \:jk\le \:m}^m\left(2p_j\cdot \:p_k\right)^2
\]</p>
<p>The probability that the STR counts at locus i match for any two individuals is denoted p_i. When n loci are used, the probability p_n that the DNA-IDs of any two individuals match is as follows:</p>
<p>\[
p_n=
\]</p>
<p>\[
\prod \:_{i=1}^n\left(p_i\right)
\]</p>
<p>Here it is assumed that there is no correlation between STR loci.</p>
<h2 id="heading-conclusions">CONCLUSIONS</h2>
<p>There are also limitations to DNA identification, including long analysis times, ethical issues and high costs. However, they suggest that DNA identification should be used as a biometric method using innovative methods developed in the near future.</p>
<p>While biometrics has many advantages in some areas, there is controversy about its use. For example, organizations can circumvent the security of these data-driven security systems. If criminals intercept biometric data after loading it into a central database, they can fraudulently copy the data for another transaction. For example, by intercepting a person's fingerprint and using it to access a fingerprint-protected device, criminals can gain access to sensitive data such as private messages or financial information.</p>
<h2 id="heading-acknowledgements">ACKNOWLEDGEMENTS</h2>
<p>Constantino Sorto, for his support with the development of the necessary faculties to be able to elaborate this type of documents and quality in education.</p>
<h2 id="heading-references">REFERENCES</h2>
<ol>
<li>Romero, M. S. (2019, 15 agosto). Expuestas un millón de huellas dactilares que usaban empresas, bancos y la policía. ComputerHoy. https://computerhoy.com/tutoriales/tecnologia/seguridad-millon-huellas-dactilares-brecha-bancos-policia-474811#:%7E:text=Los%20investigadores%20israel%C3%ADes%20Noam%20Rotem,unos%2023%20gigabytes%20de%20datos.</li>
<li>DW Español. (2020, 7 enero). ¿Es segura la tecnología de identificación por datos biométricos? [Vídeo]. YouTube. https://www.youtube.com/watch?v=wLFPOeB_3a4</li>
<li>Contributor, T. (2021, 3 noviembre). What is biometric authentication? SearchSecurity. https://www.techtarget.com/searchsecurity/definition/biometric-authentication</li>
<li>Hashiyada, M. (2011, 26 octubre). DNA biometrics. intechopen. https://www.intechopen.com/chapters/16506</li>
<li>G. (2022, 9 marzo). Windows Hello biometría en la empresa (Windows) - Windows security. Microsoft Docs. https://docs.microsoft.com/es-es/windows/security/identity-protection/hello-for-business/hello-biometrics-in-enterprise</li>
<li>Jin, A. T. B. (2010, 10 enero). Cancelable biometrics - Scholarpedia. Scholarpedia. http://www.scholarpedia.org/article/Cancelable_biometrics</li>
<li>¿Está tu smartphone protegido realmente con la huella dactilar? Sistemas biométricos. (2017, 11 mayo). YouTube. https://www.youtube.com/watch?v=2YV562CK_aI</li>
</ol>
<h2 id="heading-video">VIDEO</h2>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/2mOdh5DlLK4">https://youtu.be/2mOdh5DlLK4</a></div>
<h2 id="heading-authors">AUTHORS</h2>
<ol>
<li>Gabriel Barrientos</li>
<li>Andy Avelar</li>
<li>Kevin Hernández</li>
<li>Alejandro Ramos</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[Getting To Know Oracle Database]]></title><description><![CDATA[In this article we will address in a general way the main features of the Oracle database manager, in this way we will see the types of licensing it provides and thanks to this it has great popularity among companies. It is a robust manager with an o...]]></description><link>https://blog.galexbh.dev/getting-to-know-oracle-database</link><guid isPermaLink="true">https://blog.galexbh.dev/getting-to-know-oracle-database</guid><category><![CDATA[Oracle]]></category><category><![CDATA[database]]></category><category><![CDATA[SQL]]></category><dc:creator><![CDATA[Gabriel Barrientos]]></dc:creator><pubDate>Sun, 06 Feb 2022 17:24:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1644081836142/868-7VB9g.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this article we will address in a general way the main features of the Oracle database manager, in this way we will see the types of licensing it provides and thanks to this it has great popularity among companies. It is a robust manager with an object-relational data model, which means that it presents information in the form of objects, and of course it has a wide variety of data types, which allows it to be used optimally in certain scenarios.</p>
<blockquote>
<p>En este artículo abordaremos de manera general las principales características del gestor de bases de datos de Oracle, de esta manera veremos los tipos de licenciamiento que provee ya que gracias a esto dispone de gran popularidad entre las empresas. Es un gestor robusto y con un modelo de datos objeto-relacional lo que significa que presenta la información en forma de objetos, y desde luego dispone de una gran variedad de tipos de datos lo que permite utilizarla de forma óptima en determinados escenarios. </p>
</blockquote>
<h2 id="heading-database-management-system">DATABASE MANAGEMENT SYSTEM</h2>
<p>A database management system (or DBMS) is essentially nothing more than a computerized data maintenance system. Users of the system are given facilities to perform various types of operations on that system, either for manipulation of the data in the database or for management of the database structure itself. </p>
<h2 id="heading-oracle-database">ORACLE DATABASE</h2>
<p>Oracle is not a database in itself, but the means or the interface through which we will develop, assemble and work with them. In fact, to develop in Oracle, we use a special 5th generation programming language, known as PL/SQL (Procedural Language/Structured Query Language), an Oracle embedded variant of SQL (Structured Query Language), but which contains novel and special features such as the possibility of handling variables and developing flow control and decision making structures, among others.</p>
<h3 id="heading-licensing">Licensing</h3>
<p>One of the biggest complications when choosing the type of licensing is a legal threat of being mislicensed on your platforms.</p>
<p>Today there are an innumerable variety of software deployment scenarios, so there can be a lot of doubt and confusion. Also part of the problem can arise because Oracle does not use software keys, or codes to activate licenses, so it is very easy to install and get into an under-licensing scenario. It will be up to us to license the software before using it as these licenses are not tied to the product version either.</p>
<p>The following are some ideas based on the official documentation dealing with licensing</p>
<h4 id="heading-oracle-database-offerings">Oracle Database Offerings</h4>
<ul>
<li><p><strong>Oracle Database Express Edition:</strong>
It is a free community-supported edition of the Oracle Database family.</p>
</li>
<li><p><strong>Oracle Database Standard Edition 2:</strong>
It includes the features needed to develop workgroup, departmental and web-based applications.</p>
</li>
<li><p><strong>Oracle Database Enterprise Edition:</strong>
It provides performance, availability, scalability and security for the development of applications such as high-volume online transaction processing (OLTP) applications, query-intensive data warehouses and demanding Internet applications.</p>
</li>
<li><p><strong>Oracle Database Enterprise Edition on Engineered Systems:</strong>
Includes all Oracle Database components. </p>
</li>
<li><p><strong>Oracle Database Personal Edition:</strong>
Includes all components included in Enterprise Edition, as well as all Oracle Database options, with the exception of the Oracle RAC One Node and Oracle Real Application Clusters options, which cannot be used with Personal Edition. </p>
</li>
<li><p><strong>Oracle Database Cloud Service Standard Edition:</strong>
Includes Oracle Database Standard Edition 2 software.</p>
</li>
<li><p><strong>Oracle Database Cloud Service Enterprise Edition:</strong>
Includes Oracle Database Enterprise Edition software.</p>
</li>
<li><p><strong>Oracle Database Cloud Service Enterprise Edition - High Performance:</strong>
Includes Oracle Database Enterprise Edition software, plus many Oracle Database options and Oracle management packs.</p>
</li>
<li><p><strong>Oracle Database Cloud Service Enterprise Edition - Extreme Performance:</strong>
Includes Oracle Database Enterprise Edition software plus all Oracle Database options and Oracle management packs suitable for use in Oracle Database Cloud Service.</p>
</li>
<li><p><strong>Oracle Database Exadata Cloud Service:</strong>
These offerings include Oracle Database Enterprise Edition software plus all Oracle Database options and Oracle management packs that are suitable for use on Oracle Database Exadata Cloud Service or Oracle Database Exadata Cloud@Customer.</p>
</li>
</ul>
<h3 id="heading-data-type">Data Type</h3>
<p>It can be said that choosing the appropriate data type seems to be simple, and many times it is done incorrectly. Therefore, this bad decision can have a negative impact on the performance of the database. The choice of the data type to use is a very important task.</p>
<p>We will classify the data types supported by our DBMS as follows:</p>
<p><strong>1. Character Data Types:</strong> <strong>CHAR (size):</strong> A fixed length character string with a maximum size of 2000 bytes.</p>
<ul>
<li><p><strong>CHAR (size):</strong> A fixed length character string with a maximum size of 2000 bytes. If you insert a value less than the specified length, Oracle will fill in the blank. If you insert a value that is too long, Oracle will return an error. The size is the number of characters to store.</p>
<p>Similar to CHAR (size) which contains formatted Unicode data.</p>
</li>
<li><p><strong>VARCHAR2 (size):</strong> A variable length character string with a maximum size of 4000 bytes.</p>
</li>
<li><p><strong>NVARCHAR2 (size):</strong> Similar to VARCHAR2 (size) containing formatted Unicode data.</p>
</li>
<li><p><strong>LONG:</strong> A data type for storing variable length character data up to 2 Gb in length (larger version than VARCHAR2).</p>
</li>
<li><p><strong>RAW:</strong> A variable length binary type for storing character data. There will be no character set conversion on the stored data, so it is considered a string of binary bytes of information. Stores up to 2,000 bytes.</p>
</li>
<li><p><strong>LONG RAW:</strong> This data type is similar to the LONG data type, so it is recommended that you use the CLOB or NCLOB data types.</p>
</li>
</ul>
<p><strong>2. The Numeric data types:</strong></p>
<ul>
<li><p><strong>NUMBER (p, s):</strong> A data type used to store numeric values. The data type has a precision number p and a scale s. The precision can range from 1 to 38. The scale can range from -84 to 127.
Precision is the total number of digits allowed. Scale is the number of digits allowed to the right of the decimal point.</p>
</li>
<li><p><strong>BINARY_FLOAT:</strong> The native IEEE single precision floating point number. It is stored in 5 bytes: 4 fixed bytes for the floating point number and 1 byte length. It can store numbers in the range of ~ ± 1038.53 with 6 digits of precision.</p>
</li>
<li><p><strong>BINARY_DOUBLE:</strong> The native IEEE double precision floating point number. It is stored in 9 bytes: 8 fixed bytes for the floating point number and 1 byte in length. It can store numbers in the range of ± 10308.25 with 13 digits of precision.</p>
</li>
</ul>
<p><strong>3. The Date and Time Data Types</strong></p>
<ul>
<li><p><strong>DATE:</strong> These data types are used to store date and time values in a fixed-width 7-byte structure. It can handle date ranges from January 1, 4712 BCE to December 31, 9999.</p>
<p>  This is an extension of the DATE data type that can store date and time data (including fractions of a second). Up to 9 digits to the right of the decimal point can be retained. This data type takes 11 bytes of storage.</p>
</li>
<li><p><strong>TIMESTAMP WITH TIME ZONE:</strong> This is an extension of the TIMESTAMP data type that can additionally store time zone information, so the originally inserted time zone is retained with the data. This data type is stored in a fixed-width 13-byte structure.</p>
</li>
<li><p><strong>TIMESTATM WITH LOCAL TIME ZONE:</strong> This is a similar data type to the TIMESTAMP data type, however, it is time zone dependent. For example, if you insert a date/time value from a Web application using the US/Pacific time zone and the database time zone is US/Eastern, the final date/time value will be converted to US/Eastern time zone and stored as a timestamp value. When the information is requested again, the timestamp stored in the database is converted back to the Web application time zone (US/Pacific).</p>
<p>  First of all this data type is used to store a period of time / duration of time. As a consequence we can use this data type for date arithmetic in order to add or subtract a time period from a date or date and time data types.</p>
</li>
</ul>
<p>There are two types of interval:</p>
<ul>
<li><p><strong>INTERVAL YEAR TO MONTH:</strong>
To store a difference in years and months. It is a fixed-width 5-byte data type.</p>
</li>
<li><p><strong>INTERVAL DAY TO SECOND:</strong>
To store a difference in days, hours, minutes and seconds. It is a fixed-width 11-byte data type.</p>
</li>
</ul>
<p><strong>4. The data types Objects/Binary</strong>.</p>
<ul>
<li><p><strong>BFILE:</strong> This data type allows to store a pointer to an object in the file system in a column of the database and to read the file directly from the file system. This allows you to access files available on the database server's file system as if they were stored in the database table itself.</p>
<p>  As a result this data type can hold up to 4 GB of data. BLOB is useful for storing binary documents (e.g. spreadsheet, word processing document, images, audio, video). Unlike the BFILE data type that stores the scanned information in the file system, the BLOB data type stores the scanned information directly in the database.</p>
</li>
<li><p><strong>CLOB:</strong> On the other hand this is a data type that can hold up to 4 GB of information and therefore contains information that is subject to character set conversion. It is also suitable for storing large plain text information. In short it is not suitable for storing plain text data that is 4,000 bytes or less, in this case it is recommended to use the VARCHAR2 data type.</p>
</li>
<li><p><strong>NCLOB:</strong> It works in the same way, as the CLOB data type, but the characters are stored in a NLS or in a multi-byte Unicode character set.</p>
</li>
</ul>
<p><strong>5. Rowid</strong> data type</p>
<ul>
<li>This data type usually uses a 10-byte address of a row in a database. Sufficient information is encoded in the ROWID to locate the row on disk, as well as identify the object to which the ROWID points.</li>
</ul>
<h3 id="heading-acid">ACID</h3>
<h4 id="heading-transactions">Transactions</h4>
<p>A transaction is a logical, atomic unit of work that contains one or more SQL statements. A transaction groups SQL statements so that they are all committed, which means they are applied to the database, or they are all rolled back, which means they are rolled back from the database. Oracle Database assigns each transaction a unique identifier called a transaction ID.</p>
<p>All Oracle transactions comply with the basic properties of a database transaction, known as ACID properties. ACID is an acronym for the following:</p>
<h4 id="heading-atomicity">Atomicity</h4>
<p>All transactional data and changes are executed entirely as a single operation. No changes are made if that is not possible.</p>
<h4 id="heading-consistency">Consistency</h4>
<p>Data must be consistent and valid at the beginning and end of a transaction. </p>
<h4 id="heading-isolation">Isolation</h4>
<p>Transactions are executed synchronously, without any competition. They act as if they were happening consecutively. </p>
<h4 id="heading-durability">Durability</h4>
<p>Once a transaction completes, its connected data is permanent and cannot be modified.</p>
<h3 id="heading-programming">PROGRAMMING</h3>
<p>According to (Jérôme GABILLAUD) the following points are defined:</p>
<h4 id="heading-plsql">PL/SQL</h4>
<p>PL/SQL is a combination of SQL with the procedural features of programming languages. The interest of the PL/SQL language lies in being able to mix the power of SQL statements with the flexibility of a procedural language in the same program.</p>
<p>These programs can be executed directly by ORACLE tools (anonymous blocks) or from database objects (stored procedures and packages).</p>
<h4 id="heading-stored-procedures">Stored Procedures</h4>
<p>A stored procedure is a nominated block of PL/SQL code, stored in the database and that can be executed from applications or other stored procedures. In a PL/SQL block, simply refer to the procedure by name to execute it. In SQL*Plus, the EXECUTE statement can be used.</p>
<h4 id="heading-stored-functions">Stored Functions</h4>
<p>Like procedures, a function is a piece of PL/SQL code, but the function returns a value. These stored functions are used like ORACLE functions.</p>
<h4 id="heading-databases-triggers">Databases Triggers</h4>
<p>A trigger is a PL/SQL block associated with a table. This block will be executed when a DML (INSERT, UPDATE, DELETE) statement is applied to the table.</p>
<p>Triggers provide a procedural solution for defining complex constraints or constraints that take into account data from multiple rows or multiple tables, for example, to ensure that a customer cannot have more than two unpaid orders. However, triggers should not be used when it is possible to establish a completeness constraint.</p>
<h4 id="heading-packages">Packages</h4>
<p>A package is a schema object that logically groups related PL/SQL elements such as data types, functions, procedures and cursors.</p>
<p>The packages offer numerous advantages:</p>
<ul>
<li><p>Modularity:
Logically grouping related PL/SQL elements together makes it easier to understand the different elements of the package and their use is greatly simplified.</p>
</li>
<li><p>Simplification of development:
During the process of defining an application, packages make it possible to define at the first design stage only the package header and thus perform compilations. The package body will only be needed to run the application.</p>
</li>
<li><p>Hidden data:
With a package it is possible to make certain elements not visible to the user of the package. This makes it possible to create elements that can only be used within the package and therefore.</p>
</li>
</ul>
<h4 id="heading-standalone-transactions">Standalone Transactions</h4>
<p>A transaction is a set of SQL commands that constitutes a logical unit of processing. </p>
<p>A standalone transaction is an independent transaction that is executed after another transaction, the main transaction. During the execution of the standalone transaction, the execution of the main transaction is stopped.</p>
<h4 id="heading-dynamic-sql">Dynamic SQL</h4>
<p>A technique that allows creating SQL statements dynamically during PL/SQL code execution. Dynamic SQL allows creating more flexible applications, since the object names used by a PL/SQL block may be unknown at compile time. For example, a procedure may use a table whose name is unknown before executing the procedure.</p>
<h4 id="heading-collections-and-records">Collections and Records</h4>
<p>By saving all data in collection format directly in the PL/SQL block, all processing can be performed by the PL/SQL engine. By limiting SQL queries, accesses to the database are limited, which speeds up the processing time of the PL/SQL block, but also limits the occupancy of the SQL engine and, consequently, other users' queries can be processed more quickly.</p>
<h4 id="heading-block-data-copy">Block Data Copy</h4>
<p>With block copying, SQL statements can be applied to the entire collection and not just to individual elements in succession.</p>
<h4 id="heading-functions-and-row-sets">Functions and Row Sets</h4>
<p>It is now possible to define functions in PL/SQL that accept input parameters and/or return not a single value, but a set of rows. The advantage of these functions is that it is no longer necessary to store the data in a temporary table before calling the function to execute.</p>
<h4 id="heading-the-wrap-utility">The Wrap Utility</h4>
<p>It is a program that allows to encrypt the PL/SQL source code. In this way, it is possible to distribute PL/SQL code without users being able to access the source code.</p>
<p>Wrap allows to mask the algorithm used, but in no case character strings, numbers, variable names, columns and tables are encrypted. Therefore, this utility does not allow hiding passwords or table names.</p>
<h4 id="heading-regular-expressions">Regular Expressions</h4>
<p>Oracle supports a set of common metacharacters used in regular expressions. The behavior of supported metacharacters and related functions is described in "Regular Expression Metacharacters in Oracle Database".</p>
<h2 id="heading-conclusions">CONCLUSIONS</h2>
<ul>
<li><p>Oracle is one of the most widely used database managers because it provides many tools and services that streamline the process of data creation and administration, in addition to offering different editions of its database manager that allows to adapt to the needs of each client, thus allowing to cover a wider market.</p>
</li>
<li><p>The best service offered by Oracle is its automation of processes that make database administration workloads easier for large companies.</p>
</li>
<li><p>Oracle supports all the features a server expects: a very complete database design language (PL/SQL) that allows "active" design through triggers and stored procedures, with a fairly strong declarative referential integrity.</p>
</li>
<li><p>As discussed in this article, the Oracle database manager is undoubtedly an excellent choice to manage large amounts of data quickly and efficiently, as it provides a wide stack of tools that make it widely used, both in its free and paid versions.  </p>
</li>
<li><p>Due to everything studied above we can also conclude that the analysis of a DBMS is important when preparing a project of any magnitude, since we must visualize the advantages, disadvantages, facilities and features that a DBMS can offer us; studying this particular DBMS we realize that it provides many benefits to the customer, structuring their data and protecting information, as well as in terms of the cost benefit it offers according to its various types of editions that we propose in the licensing offers.</p>
</li>
</ul>
<h2 id="heading-acknowledgements">ACKNOWLEDGEMENTS</h2>
<p>Constantino Sorto, for his support with the development of the necessary faculties to be able to elaborate this type of documents and quality in education.</p>
<h2 id="heading-references">REFERENCES</h2>
<ol>
<li>Gongloor, P., Minhas, M., Natarajan, A., Robinson, J., &amp; Tsai-Smith, J. (2022, 6 enero). Licensing Information. Oracle Help Center. Recuperado 4 de febrero de 2022, de https://docs.oracle.com/en/database/oracle/oracle-database/21/dblic/Licensing-Information.html#GUID-B6113390-9586-46D7-9008-DCC9EDA45AB4</li>
<li>Ashdown, L., &amp; Kyte, T. (2015). Introduction to Oracle Database. Oracle Help Center. Recuperado 4 de febrero de 2022, de https://docs.oracle.com/cd/E11882_01/server.112/e40540/intro.htm#CNCPT001</li>
<li>V. (2021, mayo 21). ¿Qué es Oracle y para qué funciona? Blog Emagister. Recuperado 5 de febrero de 2022, de https://www.emagister.com/blog/que-es-oracle-y-para-que-funciona/</li>
<li>What is a database management system? (2010). © Copyright IBM Corporation 2010. Recuperado 4 de febrero de 2022, de https://www.ibm.com/docs/en/zos-basic-skills?topic=zos-what-is-database-management-system</li>
<li>Oracle Corporation. (s. f.). Transactions. Docs.Oracle. Recuperado 5 de febrero de 2022, de https://docs.oracle.com/cd/E11882_01/server.112/e40540/transact.htm#CNCPT117</li>
<li>Oracle Corporation. (s. f.). database. Oracle. Recuperado 5 de febrero de 2022, de https://www.oracle.com/es/database/what-is-database/</li>
<li>GeeksforGeeks. (2020, 30 octubre). Difference between RDBMS and ORDBMS. https://www.geeksforgeeks.org/difference-between-rdbms-and-ordbms/</li>
<li>Granados, J. (2017, 9 abril). Tipos de datos en la base de datos Oracle. Código Lite. https://codigolite.com/tipos-de-datos-en-la-base-de-datos-oracle/</li>
<li>T. (2019, 16 abril). Formación en Oracle: Historia y Características. Formatalent Business School. https://formatalent.com/formacion-en-oracle-historia-y-caracteristicas/</li>
<li>Licenciamiento-oracle. (s. f.). neuronet. Recuperado 5 de febrero de 2022, de https://neuronet.cl/licenciamiento-oracle/</li>
<li>PL/SQL Tutorial. (s. f.). Tutorialspoint. Recuperado 5 de febrero de 2022, de https://www.tutorialspoint.com/plsql/index.htm</li>
<li>Gabillaud, J. (2010). Oracle 11g - SQL, PL/SQL, SQL*Plus. Ediciones Eni. https://books.google.hn/books?id=dGm6ppeU1-oC&amp;printsec=copyright&amp;hl=es#v=onepage&amp;q&amp;f=false</li>
<li>Oracle Corporation. (s. f.). Uso de Oracle Data Safe. Oracle Help Center. Recuperado 5 de febrero de 2022, de https://docs.oracle.com/es-ww/iaas/data-safe/doc/regular-expressions.html</li>
<li>Zengotitabengoa, A. (2019, 8 febrero). Expresiones regulares en Oracle. BNB. https://www.bnetbuilders.com/expresiones-regulares-en-oracle/</li>
<li>Oracle 11g - SQL, PL/SQL y SQL*plus - título, autor. . . | editiones ENI. (s. f.). Ediciones-Eni. Recuperado 5 de febrero de 2022, de https://www.ediciones-eni.com/open/mediabook.aspx?idR=30aa6f4c2a3140cb0454a936f8895bbe</li>
</ol>
<h2 id="heading-authors">AUTHORS</h2>
<ol>
<li>Gabriel Barrientos</li>
<li>Andy Avelar</li>
<li>Francisco Cáceres</li>
<li>Jorge Orellana</li>
<li>Reyner Rodriguez</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[Quick start with NvChad]]></title><description><![CDATA[Hello Argonauts! This time I will show you a quick guide to be a giga-chad.
While it is true that the  documentation  covers these aspects very well, this article will guide you through the installation of the  LSPs  and Formatters in case you feel l...]]></description><link>https://blog.galexbh.dev/quick-start-with-nvchad</link><guid isPermaLink="true">https://blog.galexbh.dev/quick-start-with-nvchad</guid><category><![CDATA[vim]]></category><category><![CDATA[setup]]></category><dc:creator><![CDATA[Gabriel Barrientos]]></dc:creator><pubDate>Fri, 07 Jan 2022 15:12:34 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1641475648125/7G_gRPc8W.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello Argonauts! This time I will show you a quick guide to be a giga-chad.</p>
<p>While it is true that the  <a target="_blank" href="https://nvchad.github.io/getting-started/setup">documentation</a>  covers these aspects very well, this article will guide you through the installation of the  <a target="_blank" href="https://code.visualstudio.com/api/language-extensions/language-server-extension-guide">LSPs</a>  and Formatters in case you feel lost. I should also point out that the configuration will be kept as basic as possible.</p>
<h2 id="heading-adding-mappings">Adding Mappings</h2>
<p>First we must create our directory and configuration file, for that we will open our terminal placing the following:</p>
<pre><code class="lang-bash">.config/nvim/lua/
mkdir custom
<span class="hljs-built_in">cd</span> custom &amp;&amp; nvim init.lua
</code></pre>
<p>Once we have everything ready we will add the following configuration:</p>
<pre><code><span class="hljs-keyword">local</span> <span class="hljs-keyword">map</span> = <span class="hljs-keyword">require</span>(<span class="hljs-string">"core.utils"</span>).map

<span class="hljs-keyword">map</span>(<span class="hljs-string">"n"</span>, <span class="hljs-string">"&lt;leader&gt;cc"</span>, <span class="hljs-string">":Telescope &lt;CR&gt;"</span>)
<span class="hljs-keyword">map</span>(<span class="hljs-string">"n"</span>, <span class="hljs-string">"&lt;C-q&gt;"</span>, <span class="hljs-string">":q &lt;CR&gt;"</span>)
</code></pre><p>Save and close.</p>
<h2 id="heading-adding-chadrc">Adding Chadrc</h2>
<p>Now right where we are we are going to create now the linking of the plugins that we are going to install inside nvchad.</p>
<pre><code class="lang-bash">nvim chadrc.lua
</code></pre>
<pre><code>local M <span class="hljs-operator">=</span> {}

<span class="hljs-operator">-</span><span class="hljs-operator">-</span> Install plugins
local userPlugins <span class="hljs-operator">=</span> <span class="hljs-built_in">require</span> <span class="hljs-string">"custom.plugins"</span> <span class="hljs-operator">-</span><span class="hljs-operator">-</span> path to table

M.plugins <span class="hljs-operator">=</span> {
   install <span class="hljs-operator">=</span> userPlugins,
}

<span class="hljs-keyword">return</span> M
</code></pre><p>Save and close.</p>
<h2 id="heading-configure-and-install-plugins">Configure and Install plugins</h2>
<p>We will go back and create a 'plugins' folder as configured above in the linking.</p>
<pre><code class="lang-bash">mkdir plugins
<span class="hljs-built_in">cd</span> custom &amp;&amp; nvim init.lua
</code></pre>
<pre><code><span class="hljs-keyword">return</span> {

   {
      <span class="hljs-string">"williamboman/nvim-lsp-installer"</span>,
      config <span class="hljs-operator">=</span> <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)
         <span class="hljs-title">local</span> <span class="hljs-title">lsp_installer</span> = <span class="hljs-title"><span class="hljs-built_in">require</span></span> "<span class="hljs-title">nvim</span>-<span class="hljs-title">lsp</span>-<span class="hljs-title">installer</span>"

         <span class="hljs-title">lsp_installer</span>.<span class="hljs-title">on_server_ready</span>(<span class="hljs-params"><span class="hljs-keyword">function</span>(<span class="hljs-params">server</span>)
            local opts = {}

            server:setup(<span class="hljs-params">opts</span>)
            vim.cmd [[ do User LspAttachBuffers ]]
         end</span>)
      <span class="hljs-title">end</span>,
   },

   </span>{
      <span class="hljs-string">"jose-elias-alvarez/null-ls.nvim"</span>,
      after <span class="hljs-operator">=</span> <span class="hljs-string">"nvim-lspconfig"</span>,
      config <span class="hljs-operator">=</span> <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)
         <span class="hljs-title"><span class="hljs-built_in">require</span></span>(<span class="hljs-params"><span class="hljs-string">"custom.null-ls-config"</span></span>).<span class="hljs-title">setup</span>(<span class="hljs-params"></span>)
      <span class="hljs-title">end</span>,
   },
}</span>
</code></pre><p>Save and close.</p>
<h2 id="heading-configure-add-ins-null-ls">Configure Add-ins (null-ls)</h2>
<p>Typing again in the terminal.</p>
<pre><code class="lang-bash"><span class="hljs-built_in">cd</span> ..
mkdir null-ls-config
<span class="hljs-built_in">cd</span> null-ls-config &amp;&amp; nvim init.lua
</code></pre>
<p>Once we have everything ready we will add the following configuration:</p>
<pre><code>local null_ls <span class="hljs-operator">=</span> <span class="hljs-built_in">require</span> <span class="hljs-string">"null-ls"</span>

local formatting <span class="hljs-operator">=</span> null_ls.builtins.formatting

local M <span class="hljs-operator">=</span> {}

M.setup <span class="hljs-operator">=</span> <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)
   <span class="hljs-title">null_ls</span>.<span class="hljs-title">setup</span> </span>{
      sources <span class="hljs-operator">=</span> {
         formatting.stylua.with { filetypes <span class="hljs-operator">=</span> { <span class="hljs-string">"lua"</span> } },
         <span class="hljs-operator">-</span><span class="hljs-operator">-</span> formatting.prettier.with {
            filetypes <span class="hljs-operator">=</span> { <span class="hljs-string">"html"</span>, <span class="hljs-string">"markdown"</span>, <span class="hljs-string">"css"</span>, <span class="hljs-string">"typescript"</span>, <span class="hljs-string">"javascript"</span>, <span class="hljs-string">"json"</span>, <span class="hljs-string">"svelte"</span> },
         },
         <span class="hljs-operator">-</span><span class="hljs-operator">-</span> formatting.autopep8.with { filetypes <span class="hljs-operator">=</span> { <span class="hljs-string">"python"</span> } },
         <span class="hljs-operator">-</span><span class="hljs-operator">-</span> formatting.gofmt.with { filetypes <span class="hljs-operator">=</span> { <span class="hljs-string">"go"</span> } },
         <span class="hljs-operator">-</span><span class="hljs-operator">-</span> formatting.clang_format,
      },
      on_attach <span class="hljs-operator">=</span> <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">client</span>)
         <span class="hljs-title"><span class="hljs-keyword">if</span></span> <span class="hljs-title">client</span>.<span class="hljs-title">resolved_capabilities</span>.<span class="hljs-title">document_formatting</span> <span class="hljs-title">then</span>
            <span class="hljs-title">vim</span>.<span class="hljs-title">cmd</span> "<span class="hljs-title">autocmd</span> <span class="hljs-title">BufWritePre</span> &lt;<span class="hljs-title">buffer</span>&gt; <span class="hljs-title">lua</span> <span class="hljs-title">vim</span>.<span class="hljs-title">lsp</span>.<span class="hljs-title">buf</span>.<span class="hljs-title">formatting_sync</span>(<span class="hljs-params"></span>)"
         <span class="hljs-title">end</span>
      <span class="hljs-title">end</span>,
   }
<span class="hljs-title">end</span>

<span class="hljs-title"><span class="hljs-keyword">return</span></span> <span class="hljs-title">M</span></span>
</code></pre><p>Save and close.</p>
<blockquote>
<p>Note: Check  <a target="_blank" href="https://github.com/jose-elias-alvarez/null-ls.nvim/blob/main/doc/BUILTINS.md">null-ls builtins</a>  for linters and formatters.</p>
</blockquote>
<h2 id="heading-synchronize-configuration">Synchronize Configuration</h2>
<p>Once we have everything ready we just have to open nvim and type <code>:PackerSync</code> to synchronize the configuration and download the plugins.</p>
<h2 id="heading-install-lsp">Install LSP</h2>
<p>Now installing our LSPs is a piece of cake using <code>:LspInstallInfo</code> by scrolling to the server we want and pressing <code>i</code> to install it automatically.</p>
]]></content:encoded></item><item><title><![CDATA[The best IDE-style configurations for nvim]]></title><description><![CDATA[Hello Argonauts! In our process of becoming a better software developer, our most powerful tool is our text editor. In this case, we'll talk about neovim, a simple and lightweight text editor, which we can vitaminize with plugins and turn it into our...]]></description><link>https://blog.galexbh.dev/the-best-ide-style-configurations-for-nvim</link><guid isPermaLink="true">https://blog.galexbh.dev/the-best-ide-style-configurations-for-nvim</guid><category><![CDATA[vim]]></category><dc:creator><![CDATA[Gabriel Barrientos]]></dc:creator><pubDate>Wed, 05 Jan 2022 17:27:20 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1641413658955/1iLWGe_AT.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello Argonauts! In our process of becoming a better software developer, our most powerful tool is our text editor. In this case, we'll talk about neovim, a simple and lightweight text editor, which we can vitaminize with plugins and turn it into our own IDE.</p>
<p>But not everything is so simple. If we want to do this, it will take us a lot of time and research, so many times it will make us go back on our decision to choose neovim because we want to focus more on writing code than on customization, so in this article I will present you a series of projects with which you can start with a base for this task.</p>
<h2 id="heading-1-nvchad">1. NvChad</h2>
<p>It has some of the best documentation I've seen starting with a brief introduction to the LUA programming language to a series of small tutorials to help you add more plugins and how to configure them.</p>
<p>It's not really that easy to set up at first due to the hooks that can get in the way at first but in a matter of a short time you'll be fully adapted to configure it to your needs.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://github.com/NvChad/NvChad">https://github.com/NvChad/NvChad</a></div>
<h2 id="heading-2-astronvim">2. AstroNvim</h2>
<p>AstroNvim describes itself as an aesthetic and feature-rich neovim configurator that is extensible and easy to use with a large set of plugins.</p>
<p>For me it is one of the best configurations I have tried thanks to the fact that it saves a lot of configuration work and the only thing I had to add were the linters in the user configuration and install the LSPs with the lspinstaller plugin, it has been one of the most rewarding experiences I have had in this kind of IDE style configurations for nvim.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://github.com/AstroNvim/AstroNvim">https://github.com/AstroNvim/AstroNvim</a></div>
<h2 id="heading-3-lunarvim">3. LunarVim</h2>
<p>Their documentation is pretty good, but I think the 'out-of-the-box' functionality is probably a bit better for someone who is not looking to touch their configuration rather than using NvChad where they need to do small configurations.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://github.com/LunarVim/LunarVim">https://github.com/LunarVim/LunarVim</a></div>
<h2 id="heading-4-cosmicnvim">4. CosmicNvim</h2>
<p>Provide an easy to use yet powerful config that doesn’t lock in users and is built in a way where, if/when someone is ready to move to their own config, the transition will be easy.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://github.com/CosmicNvim/CosmicNvim">https://github.com/CosmicNvim/CosmicNvim</a></div>
<h2 id="heading-5-vapournvim">5. VapourNvim</h2>
<p>Minimalist is the word that gives an adequate description, being for me the simplest to start with. Even though it doesn't have a lot of developers it keeps a clean configuration to implement your own as a whole.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://github.com/VapourNvim/VapourNvim">https://github.com/VapourNvim/VapourNvim</a></div>
<h2 id="heading-conclusion">Conclusion 💫</h2>
<p>Certainly learning LUA and creating an amazing configuration on your own requires a lot of time at your disposal so using these tools created by their respective communities will give you a base from which you can start without worrying about compatibilities and without so much effort.</p>
]]></content:encoded></item></channel></rss>