<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Notes on Bino</title><link>https://www.binovarghese.com/notes/</link><description>Recent content in Notes on Bino</description><generator>Hugo</generator><language>en-us</language><managingEditor>binovarghese8120@gmail.com (Bino Kochumol Varghese)</managingEditor><webMaster>binovarghese8120@gmail.com (Bino Kochumol Varghese)</webMaster><atom:link href="https://www.binovarghese.com/notes/index.xml" rel="self" type="application/rss+xml"/><item><title>Start the Hugo server with your local IP</title><link>https://www.binovarghese.com/notes/2025/10/run-hugo-with-ip/</link><pubDate>Mon, 20 Oct 2025 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2025/10/run-hugo-with-ip/</guid><description>&lt;p&gt;I want to share my writings to my colleague thorugh my IP before publishing it. So here how I done it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Get your IP using the command &lt;code&gt;ipconfig&lt;/code&gt; from the terminal.&lt;/li&gt;
&lt;li&gt;Go to your Hugo project&amp;rsquo;s root directory in your terminal.&lt;/li&gt;
&lt;li&gt;Run the following command, replacing &lt;code&gt;&amp;lt;YOUR_NETWORK_IP&amp;gt;&lt;/code&gt; with the IP address.&lt;/li&gt;
&lt;li&gt;&lt;code&gt; hugo server --bind 0.0.0.0 --baseUrl http://&amp;lt;YOUR_NETWORK_IP&amp;gt;:1313&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The server will start, and the output should show the website is available at &lt;code&gt;http://&amp;lt;YOUR_NETWORK_IP&amp;gt;:1313&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Software gardening and death</title><link>https://www.binovarghese.com/notes/2025/08/death-of-software/</link><pubDate>Mon, 18 Aug 2025 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2025/08/death-of-software/</guid><description>&lt;p&gt;I have came across the following article recently.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Software is a bit like this house plant: its wellbeing depends on the folks who constantly tend it. Without us around, it gradually erodes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I used Google Orkut in the past and I loved it at that time. It was fun to send messages in the scrapbook, cool usernames, and enjoy all the other social media features that felt cool back then. But after the rise of Facebook and other giants, Google shut down Orkut. They sent us an email with a link to download our data archive and said goodbye. I still have those emails from Orkut, and when I read them recently, they gave me a nostalgic happiness.&lt;/p&gt;
&lt;p&gt;What I realize now is that everything eventually comes to an end when the gardeners stop tending their &lt;a href="https://www.binovarghese.com/blog/2021/digital-gardening-2021/"&gt;gardens&lt;/a&gt;. We cannot take it for granted forever. Today we have access to some of the most amazing things in human history. We need to be grateful and enjoy the beauty of it. So keep on gardening, and cherish your fellow gardeners.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://jonas.do/writing/2021-03-03-software-gardening-and-death/"&gt;Article link&lt;/a&gt;&lt;/p&gt;</description></item><item><title>NOT IN vs NOT EXISTS in PL/SQL</title><link>https://www.binovarghese.com/notes/2025/06/not-null-and-not-exists/</link><pubDate>Thu, 19 Jun 2025 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2025/06/not-null-and-not-exists/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT *
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM TABLE1 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WHERE ID NOT IN (
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; SELECT ID
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; FROM TABLE2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When I ran the above query I know the condition will give me the results, because the data exists in the &lt;code&gt;TABLE1&lt;/code&gt; which is not in &lt;code&gt;TABLE2&lt;/code&gt;. But I didn&amp;rsquo;t go any results. I got surprised. After I a while I found out the issue.&lt;/p&gt;
&lt;p&gt;So the reason is that &lt;code&gt;ID&lt;/code&gt; column in the &lt;code&gt;TABLE2&lt;/code&gt; have null values. If any value of &lt;code&gt;ID&lt;/code&gt; in the subquery is &lt;code&gt;NULL&lt;/code&gt;, then the entire &lt;code&gt;NOT IN&lt;/code&gt; clause fails to match anything. This is standard SQL behavior because &lt;code&gt;NULL&lt;/code&gt; makes the whole comparison unknown.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You can use &lt;code&gt;NOT NULL&lt;/code&gt; condition in the sub-query as below:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT *
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM TABLE1 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WHERE ID NOT IN (
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; SELECT ID
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; FROM TABLE2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; WHERE ID IS NOT NULL
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;Use &lt;code&gt;NOT EXISTS&lt;/code&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT *
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM TABLE1 T1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WHERE NOT EXISTS (
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; SELECT 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; FROM TABLE2 T2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; WHERE T1.ID = T2.ID
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;NOT EXISTS&lt;/code&gt; will automatically handle null values and safer to use.&lt;/p&gt;
&lt;h4 id="references"&gt;References&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/173041/not-in-vs-not-exists"&gt;StackOverflow&lt;/a&gt;,
&lt;a href="https://www.geeksforgeeks.org/plsql/not-in-vs-not-exists-in-plsql/"&gt;Geeks for geeks&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Unhang Windows PC</title><link>https://www.binovarghese.com/notes/2025/05/unhang-windows-pc/</link><pubDate>Mon, 26 May 2025 16:11:01 +0300</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2025/05/unhang-windows-pc/</guid><description>&lt;p&gt;I often found that &lt;code&gt;Ctrl+Alt+Delete&lt;/code&gt; unhangs the Windows PC. I googled why?&lt;/p&gt;
&lt;p&gt;The nutshell answer is : &lt;code&gt;Ctrl+Alt+Delete&lt;/code&gt; is a secure attention sequence (SAS) triggers a system interrupt, effectively forcing the computer to respond. This is directly handled by the Windows operating system kernel. That means it can bypass most of the stuff that&amp;rsquo;s currently running (including frozen apps or even some parts of the graphical interface).&lt;/p&gt;
&lt;p&gt;Cool to know this.&lt;/p&gt;</description></item><item><title>Diffdiff and Emoji Kitchen</title><link>https://www.binovarghese.com/notes/2025/05/tools/</link><pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2025/05/tools/</guid><description>&lt;p&gt;I just found two tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://diffdiff.net"&gt;diffdiff&lt;/a&gt; is a fast, private way to compare two pieces of text, created by &lt;a href="https://jkaptur.com"&gt;Joe Kaptur&lt;/a&gt;. It&amp;rsquo;s interface is so clean and good.&lt;/li&gt;
&lt;li&gt;An impressive emoji-mixing site called &lt;a href="https://emojikitchen.dev"&gt;Emoji Kitchen&lt;/a&gt;, created by &lt;a href="https://xsalazar.com"&gt;Xavier Salazar&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src="https://www.binovarghese.com/img/notes/2025/emojikitchen.png" width="300"&gt;&lt;figcaption&gt;
 &lt;p&gt;Thunder and Unicorn mixed by Emoji Kitchen&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
</description></item><item><title>Google AI Overview</title><link>https://www.binovarghese.com/notes/2025/05/google-ai-overview/</link><pubDate>Sun, 18 May 2025 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2025/05/google-ai-overview/</guid><description>&lt;p&gt;I don’t search for things as much as I used to. These days, I just go straight to ChatGPT. I don’t feel like Googling and clicking through multiple pages to find the best answer. I ask ChatGPT, and most of the time, the results are satisfying.&lt;/p&gt;
&lt;p&gt;I’ve heard that traditional Google searches are declining. But now, they’ve introduced AI Overviews at the top of their results. I think it’s a good idea—because we get a quick summary of what we’re looking for, along with links to other websites.
Yes, I think it’s a good move.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://www.binovarghese.com/img/notes/2025/google-ai-overview.png"&gt;&lt;figcaption&gt;
 &lt;p&gt;
 &lt;a href="https://www.binovarghese.com/blog/2021/lightbi-blog-theme/"&gt;Google AI Overview for my theme Lightbi&lt;/a&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
</description></item><item><title>Custom folder Icons with Material Icon Theme</title><link>https://www.binovarghese.com/notes/2025/05/custom-vs-icons/</link><pubDate>Mon, 12 May 2025 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2025/05/custom-vs-icons/</guid><description>&lt;p&gt;Install Material Icon Theme&lt;/p&gt;
&lt;p&gt;In settings.json:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;material-icon-theme.folders.associations&amp;#34;&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;folder-name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Home&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;folder-name&lt;/code&gt; is the folder name and &lt;code&gt;Home&lt;/code&gt; is the icon.
You can find the files and folders icons in &lt;a href="https://marketplace.visualstudio.com/items?itemName=PKief.material-icon-theme"&gt;here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Sticky footers</title><link>https://www.binovarghese.com/notes/2025/05/sticky-footer/</link><pubDate>Sun, 11 May 2025 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2025/05/sticky-footer/</guid><description>&lt;p&gt;To make a sticky footer in the Bootstrap you can use the below.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;body class=&amp;#34;d-flex flex-column min-vh-100&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;main class=&amp;#34;flex-fill&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;!-- Your page content here --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/main&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;footer class=&amp;#34;bg-dark text-white text-center py-2&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;!-- Your footer content here --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/footer&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/body&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;d-flex flex-column min-vh-100&lt;/code&gt; on &lt;!-- raw HTML omitted --&gt;: makes the body fill the viewport and act like a vertical Flexbox container.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;flex-fill&lt;/code&gt; on &lt;!-- raw HTML omitted --&gt;: makes the content area take up all available vertical space, pushing the footer down.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;footer&lt;/code&gt;: stays at the bottom even with short content.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Upgrade Hugo</title><link>https://www.binovarghese.com/notes/2025/05/upgrade-hugo/</link><pubDate>Sat, 10 May 2025 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2025/05/upgrade-hugo/</guid><description>&lt;p&gt;To install or update Hugo extended using HomeBrew, you can use the below,&lt;/p&gt;
&lt;p&gt;Install the extended version:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install hugo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Or if you already have it and just want to upgrade:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew upgrade hugo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Check the version to using &lt;code&gt;hugo version&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Modernization of Apps</title><link>https://www.binovarghese.com/notes/2025/05/modernize/</link><pubDate>Fri, 09 May 2025 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2025/05/modernize/</guid><description>&lt;p&gt;One of the main topics discussed in the &lt;a href="https://www.binovarghese.com/blog/2025/05/postgre-sql/"&gt;seminar&lt;/a&gt; I attended was modernizing legacy applications.&lt;/p&gt;
&lt;p&gt;Legacy applications are typically monolithic in nature, making it difficult to scale or integrate new features quickly. The monolithic apps ruled the software industry for a very longer time, but now people are moving (already many moved) to its great alternative, the microservice architecture.&lt;/p&gt;
&lt;p&gt;I’ve come across monolithic applications that are tightly coupled with environments like Oracle or .NET, where growth can become a painful process. Over time, these systems tend to become slow, expensive to maintain, and resistant to change.&lt;/p&gt;
&lt;h4 id="links"&gt;Links&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://www.ibm.com/think/topics/monolithic-architecture"&gt;Monolithic and microservice architecture&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Hide details in the mobile screen with Bootstrap</title><link>https://www.binovarghese.com/notes/2025/05/hide-on-mobile/</link><pubDate>Wed, 07 May 2025 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2025/05/hide-on-mobile/</guid><description>&lt;p&gt;In the &lt;a href="https://www.binovarghese.com/archive/"&gt;feed&lt;/a&gt; page I need to hide the dotted line in the mobile screens. So here you can see how its can be done in Bootstrap.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;d-none d-md-flex&lt;/code&gt;: shows only on md and up (desktop/tablet)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;d-block d-md-none&lt;/code&gt;: shows only on mobile&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;text-nowrap&lt;/code&gt;: prevents text from wrapping&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;div class=&amp;#34;mb-3&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;!-- Desktop layout --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;d-none d-md-flex align-items-center&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;a href=&amp;#34;{{ .Permalink }}&amp;#34; class=&amp;#34;text-decoration-none fw-medium me-2 text-nowrap&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Sample heading
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;flex-grow-1 border-bottom dotted-line mx-2&amp;#34;&amp;gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;p class=&amp;#34;text-muted small text-nowrap mb-0&amp;#34;&amp;gt;Date&amp;lt;/p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;!-- Mobile layout --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;d-block d-md-none&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;a href=&amp;#34;{{ .Permalink }}&amp;#34; class=&amp;#34;text-decoration-none fw-medium d-block mb-1&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Sample heading
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;p class=&amp;#34;text-muted small mb-0&amp;#34;&amp;gt;Date&amp;lt;/p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>SQLite is the most deployed and most used database</title><link>https://www.binovarghese.com/notes/2025/05/fun-facts-about-sqllite/</link><pubDate>Tue, 06 May 2025 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2025/05/fun-facts-about-sqllite/</guid><description>&lt;p&gt;Avinash is sharing some cool facts about SQLite.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;SQLite is the most deployed and most used database. There are over one trillion (1000000000000 or a million million) SQLite databases in active use.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SQLite is likely used more than all other database engines combined. Billions and billions of copies of SQLite exist in the wild. It’s everywhere.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are mind blowing, have a look into that.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://avi.im/blag/2024/sqlite-facts/"&gt;Article link&lt;/a&gt;&lt;/p&gt;</description></item><item><title>To extract the value of a tag from an XML-like string in PL/SQL</title><link>https://www.binovarghese.com/notes/2025/01/extracting-xml-attributes/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2025/01/extracting-xml-attributes/</guid><description>&lt;p&gt;To extract the value of a tag from the given XML-like string in PL/SQL, you can use the &lt;code&gt;EXTRACTVALUE&lt;/code&gt; function or &lt;code&gt;XMLTABLE&lt;/code&gt; for XML processing.&lt;/p&gt;
&lt;h4 id="example-using-extractvalue"&gt;Example Using &lt;code&gt;EXTRACTVALUE&lt;/code&gt;&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;DECLARE&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;xml_data&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;CLOB&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;lt;Status&amp;gt;200&amp;lt;/Status&amp;gt;&amp;lt;Message&amp;gt;Success&amp;lt;/Message&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;l_message&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;VARCHAR2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;BEGIN&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Extract the FunctionalReferenceID value
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;l_message&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;EXTRACTVALUE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;XMLTYPE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;lt;root&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;xml_data&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;lt;/root&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/root/Message&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Print the value
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DBMS_OUTPUT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PUT_LINE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;FunctionalReferenceID: &amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;l_message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;END&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="example-using-xmltable"&gt;Example Using &lt;code&gt;XMLTABLE&lt;/code&gt;&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;DECLARE&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;xml_data&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;CLOB&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;lt;Status&amp;gt;200&amp;lt;/Status&amp;gt;&amp;lt;Message&amp;gt;Success&amp;lt;/Message&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;l_message&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;VARCHAR2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;BEGIN&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Use XMLTABLE to extract the Message
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;INTO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;l_message&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XMLTABLE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/root/Message&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;PASSING&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XMLTYPE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;lt;root&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;xml_data&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;lt;/root&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;COLUMNS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;VARCHAR2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;PATH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;-- Print the value
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DBMS_OUTPUT&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PUT_LINE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Message: &amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;l_message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;END&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/EXTRACTVALUE.html"&gt;EXTRACTVALUE&lt;/a&gt;,
&lt;a href="https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/XMLTABLE.html"&gt;XMLTABLE&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Varchar datatype limits</title><link>https://www.binovarghese.com/notes/2024/11/oracle-varchar2-size/</link><pubDate>Sat, 30 Nov 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/11/oracle-varchar2-size/</guid><description>&lt;p&gt;For &lt;code&gt;NVARCHAR2&lt;/code&gt; and &lt;code&gt;VARCHAR2&lt;/code&gt; maximum size is 4000 bytes, or 32767 bytes if the &lt;code&gt;MAX_STRING_SIZE&lt;/code&gt; initialization parameter is set to &lt;code&gt;EXTENDED&lt;/code&gt;. This is useful you have to allocate more data to a variable.&lt;/p&gt;
&lt;p&gt;You can run the below command to view the parameter.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;show&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;parameter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;MAX_STRING_SIZE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="references"&gt;References&lt;/h5&gt;
&lt;p&gt;&lt;a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/datatype-limits.html"&gt;Oracle Doc&lt;/a&gt;, &lt;a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/MAX_STRING_SIZE.html#GUID-D424D23B-0933-425F-BC69-9C0E6724693C"&gt;Max string size&lt;/a&gt;&lt;/p&gt;</description></item><item><title>PL/SQL commands to view the table details</title><link>https://www.binovarghese.com/notes/2024/11/plsql-table-details/</link><pubDate>Wed, 13 Nov 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/11/plsql-table-details/</guid><description>&lt;p&gt;In Oracle PL/SQL, you can use the following commands to view table details:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;DESCRIBE or DESC&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;table_name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Displays columns, data types, and constraints.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;USER_TAB_COLUMNS&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COLUMN_NAME&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DATA_TYPE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DATA_LENGTH&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;USER_TAB_COLUMNS&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TABLE_NAME&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;TABLE_NAME&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Shows details about columns for tables owned by the user.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ALL_TAB_COLUMNS&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COLUMN_NAME&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DATA_TYPE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DATA_LENGTH&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ALL_TAB_COLUMNS&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TABLE_NAME&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;TABLE_NAME&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Provides column information for tables accessible to the user.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DBMS_METADATA.GET_DDL&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DBMS_METADATA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GET_DDL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;TABLE&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;TABLE_NAME&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DUAL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Displays the &lt;code&gt;CREATE TABLE&lt;/code&gt; statement for table structure details.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To view constraints on the table, you can check &lt;a href="https://www.binovarghese.com/notes/2023/08/pl-sql-constraints/"&gt;here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Use Flashback Query</title><link>https://www.binovarghese.com/notes/2024/11/plsql-flashback/</link><pubDate>Mon, 11 Nov 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/11/plsql-flashback/</guid><description>&lt;p&gt;If your Oracle database has Flashback enabled, you can query past versions of data within a specified retention period. Here’s how to use Flashback to retrieve a prior state of data:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT * 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM your_table AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL &amp;#39;5&amp;#39; MINUTE) 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WHERE your_condition;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Replace &lt;code&gt;SYSTIMESTAMP - INTERVAL '5' MINUTE&lt;/code&gt; with the timestamp or interval that reflects when the data was last known to be in its old state.&lt;/p&gt;
&lt;p&gt;Note: Flashback must be enabled, and it’s only available within the Flashback retention window, which depends on your database configuration.&lt;/p&gt;
&lt;h5 id="references"&gt;References&lt;/h5&gt;
&lt;p&gt;&lt;a href="https://www.killiansbytes.com/post/flashback-time-travel"&gt;Killians Bytes&lt;/a&gt;&lt;/p&gt;</description></item><item><title>How to break columns in Bootstrap</title><link>https://www.binovarghese.com/notes/2024/11/bootstrap-column-breaks/</link><pubDate>Sun, 03 Nov 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/11/bootstrap-column-breaks/</guid><description>&lt;p&gt;Breaking columns to a new line in flexbox requires a small hack: add an element with width: 100% wherever you want to wrap your columns to a new line.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;div class=&amp;#34;container text-center&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;row&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;col-6 col-sm-3&amp;#34;&amp;gt;.col-6 .col-sm-3&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;col-6 col-sm-3&amp;#34;&amp;gt;.col-6 .col-sm-3&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;!-- Force next columns to break to new line --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;w-100&amp;#34;&amp;gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;col-6 col-sm-3&amp;#34;&amp;gt;.col-6 .col-sm-3&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;col-6 col-sm-3&amp;#34;&amp;gt;.col-6 .col-sm-3&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can also apply this break at specific breakpoints with our responsive display utilities.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;div class=&amp;#34;container text-center&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;row&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;col-6 col-sm-4&amp;#34;&amp;gt;.col-6 .col-sm-4&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;col-6 col-sm-4&amp;#34;&amp;gt;.col-6 .col-sm-4&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;!-- Force next columns to break to new line at md breakpoint and up --&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;w-100 d-none d-md-block&amp;#34;&amp;gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;col-6 col-sm-4&amp;#34;&amp;gt;.col-6 .col-sm-4&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div class=&amp;#34;col-6 col-sm-4&amp;#34;&amp;gt;.col-6 .col-sm-4&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://getbootstrap.com/docs/5.3/layout/columns/"&gt;Bootstrap Doc&lt;/a&gt;&lt;/p&gt;</description></item><item><title>To generate random value in PL/SQL</title><link>https://www.binovarghese.com/notes/2024/10/genrate-random-strings/</link><pubDate>Wed, 30 Oct 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/10/genrate-random-strings/</guid><description>&lt;p&gt;To update a column with a random value in PL/SQL, you can use the &lt;code&gt;DBMS_RANDOM&lt;/code&gt; package, which provides functions for generating random numbers or strings.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To update random number&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;BEGIN
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; UPDATE employees
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; SET salary = ROUND(DBMS_RANDOM.VALUE(100, 500));
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; COMMIT;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;END;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DBMS_RANDOM.VALUE(100, 500)&lt;/code&gt; generates a random decimal number between 100 and 500.&lt;/li&gt;
&lt;li&gt;ROUND is used to convert the decimal value to an integer.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;To update random string&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;BEGIN
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; UPDATE employees
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; SET password = DBMS_RANDOM.STRING(&amp;#39;x&amp;#39;, 8); -- &amp;#39;x&amp;#39; specifies alphanumeric characters
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; COMMIT;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;END;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DBMS_RANDOM.STRING('x', 8)&lt;/code&gt; generates an 8-character alphanumeric string.&lt;/li&gt;
&lt;li&gt;&amp;lsquo;x&amp;rsquo; specifies alphanumeric characters (letters and numbers). Other options include &amp;lsquo;a&amp;rsquo; for alphabets and &amp;lsquo;u&amp;rsquo; for uppercase only.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>PL/SQL MINUS Operator</title><link>https://www.binovarghese.com/notes/2024/10/plsql-minus-operator/</link><pubDate>Wed, 23 Oct 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/10/plsql-minus-operator/</guid><description>&lt;p&gt;The PL/SQL &lt;code&gt;MINUS&lt;/code&gt; operator returns all rows from the first query that are not present in the second query. Each &lt;code&gt;SELECT&lt;/code&gt; statement defines a dataset, and the &lt;code&gt;MINUS&lt;/code&gt; operator retrieves all records from the first dataset, excluding any that also appear in the second dataset.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;select stock_id, stock_name
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from stock_master
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;where active = &amp;#39;Y&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;minus
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;select stock_poid, stock_desc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from stock_ledger
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;where transaction_date &amp;gt; &amp;#39;01-JAN-24&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://www.techonthenet.com/oracle/minus.php"&gt;Tech on the net&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Slash pages in Hugo</title><link>https://www.binovarghese.com/notes/2024/10/slash-pages-in-hugo/</link><pubDate>Wed, 16 Oct 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/10/slash-pages-in-hugo/</guid><description>&lt;p&gt;In Hugo, creating different slash pages (like &lt;code&gt;/about/&lt;/code&gt;, &lt;code&gt;/uses/&lt;/code&gt;, etc.) involves creating specific content files for each page and customizing templates as needed.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Create individual markdown files for each slash page under &lt;code&gt;content/&lt;/code&gt;.&lt;/strong&gt; &lt;br&gt;
If you want to create an &lt;code&gt;/about/&lt;/code&gt; page in your blog, add a markdown page with below front matter in the &lt;code&gt;content/&lt;/code&gt; page.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;//content/about.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;title: &amp;#34;About&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;date: 2024-10-16
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;This is the About page content.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Optionally create a template for the page.&lt;/strong&gt;&lt;br&gt;
Hugo uses the &lt;code&gt;single.html&lt;/code&gt; template from the &lt;code&gt;layouts/_default/&lt;/code&gt; folder to render pages by default. However, you can create custom templates in the &lt;code&gt;layouts/page/ folder&lt;/code&gt; to format specific pages as needed.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;//layouts/page/about.html
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;h1&amp;gt;{{ .Title }}&amp;lt;/h1&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;div class=&amp;#34;content&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ .Content }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can check my slash pages like &lt;a href="https://www.binovarghese.com/uses/"&gt;uses&lt;/a&gt;, &lt;a href="https://www.binovarghese.com/credits"&gt;credits&lt;/a&gt;, and &lt;a href="https://www.binovarghese.com/changelog"&gt;changelog&lt;/a&gt;.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://gohugo.io/troubleshooting/performance/"&gt;Hugo Docs&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Hugo Troubleshooting</title><link>https://www.binovarghese.com/notes/2024/10/hugo-performace/</link><pubDate>Mon, 14 Oct 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/10/hugo-performace/</guid><description>&lt;p&gt;Hugo is fast, but ineffecinet templates can make it slower. For checking the performance you can use the below commands.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;hugo --logLevel debug&lt;/code&gt; to display debug information, warning, and error message.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;hugo --templateMetrics&lt;/code&gt; to check for slow templates. This will show the time it takes to render each template.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;hugo --gc&lt;/code&gt; (garbage collection) to clean up unused files, which might help reduce build time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use &lt;code&gt;debug.Timer&lt;/code&gt; to determine the execution time of a block of code. And use the &lt;code&gt;hugo --logLevel info&lt;/code&gt; info command line flag when you build the site.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ $t := debug.Timer &amp;#34;TestSqrt&amp;#34; }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ range seq 2000 }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ $f := math.Sqrt . }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ end }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ $t.Stop }}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://gohugo.io/troubleshooting/performance/"&gt;Hugo Docs&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Higher order functions</title><link>https://www.binovarghese.com/notes/2024/07/higher-order-functions/</link><pubDate>Tue, 20 Aug 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/07/higher-order-functions/</guid><description>&lt;p&gt;A higher order function is a function that takes one or more functions as arguments, or returns a function as its result.&lt;/p&gt;
&lt;p&gt;These functions are powerful because they allow you to abstract and compose operations in a flexible and reusable way. They are a fundamental concept in functional programming.&lt;/p&gt;
&lt;p&gt;Common examples of higher order functions are .map(), .filter(), and reducer().&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.map()&lt;/code&gt;: Takes a function as an argument and applies it to each element in an array, returning a new array with the results.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="n"&gt;numbers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="n"&gt;doubled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;numbers&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;console&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;doubled&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=HkWxvB1RJq0"&gt;Namaste JS&lt;/a&gt;, &lt;a href="https://www.freecodecamp.org/news/higher-order-functions-in-javascript-explained/"&gt;FreeCodeCamp&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Types of states</title><link>https://www.binovarghese.com/notes/2024/05/different-react-states/</link><pubDate>Sun, 19 May 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/05/different-react-states/</guid><description>&lt;p&gt;Below are the different types of states that can exist within an application. There are three main types:&lt;/p&gt;
&lt;h4 id="1-local-state"&gt;1. Local State&lt;/h4&gt;
&lt;p&gt;Local state pertains to a single component. An example of this would be listening to user input in a field or toggling a &amp;ldquo;show more details&amp;rdquo; button. Typically, local state is managed within the component using &lt;code&gt;useState&lt;/code&gt; or &lt;code&gt;useReducer&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id="2-cross-component-state"&gt;2. Cross-Component State&lt;/h4&gt;
&lt;p&gt;Cross-component state impacts multiple components. For instance, managing the open/closed state of a modal overlay. While this can also be managed using &lt;code&gt;useState&lt;/code&gt; or &lt;code&gt;useReducer&lt;/code&gt;, it often involves passing state between components via props drilling.&lt;/p&gt;
&lt;h4 id="3-app-wide-state"&gt;3. App-Wide State&lt;/h4&gt;
&lt;p&gt;App-wide state influences the entire application, such as themes or user authentication status. Similar to cross-component state, this can be managed using &lt;code&gt;useState&lt;/code&gt; or &lt;code&gt;useReducer&lt;/code&gt;, albeit with the assistance of props drilling.&lt;/p&gt;</description></item><item><title>Handling errors in LISTAGG</title><link>https://www.binovarghese.com/notes/2024/05/overflow-error-in-plsql-listagg/</link><pubDate>Fri, 03 May 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/05/overflow-error-in-plsql-listagg/</guid><description>&lt;p&gt;The LISTAGG analytic function, introduced in Oracle 11g Release 2, greatly simplifies string aggregations within SQL queries.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;LISTAGG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ColumnName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39; &amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;WITHIN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;GROUP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;seq&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ColumnName&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;GROUP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;However, if the output of the above query exceeds 4000 characters, it triggers an error, specifically ORA-01489, indicating that the result of string concatenation is too long.&lt;/p&gt;
&lt;p&gt;To address this limitation, Oracle Database Release 2 (12.2) enhanced LISTAGG with the ability to handle overflow errors gracefully, as demonstrated below:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;LISTAGG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ColumnName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39; &amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ON&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;OVERFLOW&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TRUNCATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;WITHIN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;GROUP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;seq&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ColumnName&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;B&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;GROUP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In this updated syntax, the output is restricted to 4000 characters, preventing the ORA-01489 error from being raised.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;ON OVERFLOW&lt;/code&gt; clause offers several options to manage overflow situations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ON OVERFLOW ERROR&lt;/code&gt;: This is the default behavior, triggering an error if the result overflows.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ON OVERFLOW TRUNCATE 'StringYouLike'&lt;/code&gt;: Appends &amp;lsquo;StringYouLike(Count)&amp;rsquo; at the end of the truncated string.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ON OVERFLOW TRUNCATE ''&lt;/code&gt;: Displays the first 4000 characters without any additional terminating string.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ON OVERFLOW TRUNCATE WITH COUNT&lt;/code&gt;: Appends the total character count at the end, for example, &amp;lsquo;&amp;hellip;(5512)&amp;rsquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/13795220/listagg-function-result-of-string-concatenation-is-too-long"&gt;Stack Overflow&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Session and token authentication</title><link>https://www.binovarghese.com/notes/2024/03/authentication-tokens-and-server-side-sessions/</link><pubDate>Sun, 03 Mar 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/03/authentication-tokens-and-server-side-sessions/</guid><description>&lt;p&gt;Session and token authentication methods are used by the server to verify the client request is authenticated or not.&lt;/p&gt;
&lt;h4 id="session-authentication"&gt;Session Authentication&lt;/h4&gt;
&lt;p&gt;Session-based authentication is an example of &lt;a href="https://www.binovarghese.com/notes/2022/01/stateless-and-stateful/"&gt;stateful authentication&lt;/a&gt;, which involves storing user authentication data on the server. With this method, when a user logs into a website, the server creates a small file that stores user information such as a unique session ID, login time, expiration time, and other relevant data. This file is stored in the database or in-memory cache. This session ID is then sent back to the client and stored in the client&amp;rsquo;s browser as a cookie. For subsequent requests, this cookie is passed back to the server. This allows the server to verify the session ID and provide a response based on the current state.&lt;/p&gt;
&lt;p&gt;This method is easy to use, as cookies are natively supported by browsers, so no additional JavaScript is needed. But when the application grows decoupling the frontend from the backend becomes essential. Session-based authentication can be limiting in this regard.&lt;/p&gt;
&lt;h4 id="token-authentication"&gt;Token Authentication&lt;/h4&gt;
&lt;p&gt;Instead of relying on server-side sessions, token-based authentication uses tokens and it is an example of &lt;a href="https://www.binovarghese.com/notes/2022/01/stateless-and-stateful/"&gt;stateless authentication&lt;/a&gt;. When user log in, the server create a token (usually a JSON Web Token, or JWT) using a secret key and sent to the user. For subsequent requests, user will send this token along with request and server will verify if the token is valid or not.&lt;/p&gt;
&lt;p&gt;This method gives more scalability and stateless for the apps, but the server does not authenticate the user, so linking a token to its user can be more difficult. Also in any chance an attacker got acess to the token, they will get access to the server.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://blog.logrocket.com/node-js-server-side-authentication-tokens-vs-jwt/"&gt;LogRocket&lt;/a&gt;, &lt;a href="https://www.authgear.com/post/session-vs-token-authentication"&gt;Authfear&lt;/a&gt;, &lt;a href="https://www.criipto.com/blog/session-token-based-authentication"&gt;criipto&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Canary in software development</title><link>https://www.binovarghese.com/notes/2024/02/what-is-canary-in-software/</link><pubDate>Tue, 27 Feb 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/02/what-is-canary-in-software/</guid><description>&lt;p&gt;In software development, a canary release (or canary deployment) refers to the practice of rolling out a new version of software to a small, select group of users before deploying it to the entire user base. The term &amp;ldquo;canary&amp;rdquo; comes from the old practice of using canaries in coal mines to detect dangerous gases; if the canary showed signs of distress, miners knew to evacuate. Similarly, in software, the canary release acts as an early warning system to detect issues with new code before it reaches a wider audience.&lt;/p&gt;
&lt;p&gt;Benefits of Canary Releases:
Reduced Risk: Limits the impact of potential issues by exposing the new version to only a small group first.
Real-World Testing: Provides the opportunity to observe how the new version performs in a live environment.
Faster Rollback: Easier to revert changes if problems are detected, reducing downtime or negative user impact.&lt;/p&gt;</description></item><item><title>Set up a React project with Vite along with Tailwind CSS</title><link>https://www.binovarghese.com/notes/2024/02/create-react-app-with-vite/</link><pubDate>Thu, 22 Feb 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/02/create-react-app-with-vite/</guid><description>&lt;p&gt;Here is the step by step guide to create a React project with Vite.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run the command &lt;code&gt;npm create vite&lt;/code&gt; in the command prompt.&lt;/li&gt;
&lt;li&gt;Afer the script you will be prompted to enter a project name.&lt;/li&gt;
&lt;li&gt;After entering the project name, Vite will prompt you to select a framework. Select the framework as React.&lt;/li&gt;
&lt;li&gt;After selecting framework, Vite will prompt you to select language type.&lt;/li&gt;
&lt;li&gt;After selecting the language type, Vite will show the message as Scaffolding the project in the location.&lt;/li&gt;
&lt;li&gt;After that you can go to the folder and instruct to install the dependencies with the command &lt;code&gt;npm install&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And here is the step to install Tailwind CSS as a Vite plugin.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Run the command &lt;code&gt;npm install tailwindcss @tailwindcss/vite&lt;/code&gt; to Install &lt;code&gt;tailwindcss&lt;/code&gt; and &lt;code&gt;@tailwindcss/vite&lt;/code&gt; via npm.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add the &lt;code&gt;@tailwindcss/vite&lt;/code&gt; plugin to your Vite configuration.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;defineConfig&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;vite&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;import&lt;/span&gt; &lt;span class="n"&gt;tailwindcss&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;@tailwindcss/vite&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="n"&gt;default&lt;/span&gt; &lt;span class="n"&gt;defineConfig&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tailwindcss&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add an &lt;code&gt;@import &amp;quot;tailwindcss&amp;quot;;&lt;/code&gt; to your CSS file that imports Tailwind CSS.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;After that you can run the project with command &lt;code&gt;npm run dev&lt;/code&gt; or whatever command is configured in your &lt;code&gt;package.json&lt;/code&gt; file..&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="references"&gt;References&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-set-up-a-react-project-with-vite"&gt;DigitalOcean&lt;/a&gt;, &lt;a href="https://tailwindcss.com/docs/installation/using-vite"&gt;TailwindCSS&lt;/a&gt;&lt;/p&gt;</description></item><item><title>What is Skeuomorphism?</title><link>https://www.binovarghese.com/notes/2024/02/what-is-skeuomorphism/</link><pubDate>Wed, 21 Feb 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/02/what-is-skeuomorphism/</guid><description>&lt;p&gt;I noticed every design is incorpating rounded edges in their rectangle shapes (yes, my website cards also). Today I Googled it and after reading some articles, I stumbled upon Skeuomorphism.&lt;/p&gt;
&lt;p&gt;So, here I am noting down what is Skeuomorphism?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Skeuomorphism is a term most often used in graphical user interface design to describe interface objects that mimic their real-world counterparts in how they appear and/or how the user can interact with them. A well-known example is the recycle bin icon used for discarding files. Skeuomorphism makes interface objects familiar to users by using concepts they recognize.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;In UI design, skeuomorphism had its boom with the advent of the first iPhone. Steve Jobs believed that UI elements should resemble real-life objects to increase ease of use. For example, the Notes app looked like a notepad. However, as users became more familiar with the iOS interface, Apple transitioned to flat design with fewer shadows and textures. Flat design stripped back skeuomorphic elements to essentials for faster loading and decluttered touchpoints.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://www.interaction-design.org/literature/topics/skeuomorphism"&gt;Interaction Design&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Connecting MySQL from command line</title><link>https://www.binovarghese.com/notes/2024/02/mysql-from-cmd/</link><pubDate>Tue, 13 Feb 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/02/mysql-from-cmd/</guid><description>&lt;p&gt;Open the command prompt and type the below to connect the MySQL:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mysql -u username -p
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After the above command the command line will prompt you to enter the password and after entering the password you can query the database.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/5131931/how-to-connect-to-mysql-from-the-command-line"&gt;Stack Overflow&lt;/a&gt;,
&lt;a href="https://dev.mysql.com/doc/refman/8.0/en/connecting.html"&gt;MySQL Doc&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Non-editionable objects</title><link>https://www.binovarghese.com/notes/2024/02/pl-sql-non-editionable-objects/</link><pubDate>Sat, 10 Feb 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/02/pl-sql-non-editionable-objects/</guid><description>&lt;p&gt;When you are create an object in Oracle Database, default object type will be marked &lt;code&gt;editionable&lt;/code&gt;. From 12c onwards, you can mark the objects as &lt;code&gt;noneditionable&lt;/code&gt; , and same you cannot edit with &lt;code&gt;create or replace&lt;/code&gt; . For altering the same you have to alter the object and change to &lt;code&gt;editionable&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This is applicable to View, Funcitons, Procedure, Trigger, Library, Type.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;create&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;replace&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;noneditionable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;procedure&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;test_proc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;begin&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;select&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;editionable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;user_objects&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;where&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;object_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test_proc &amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="k"&gt;result&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;EDITIONABLE&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;N&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;create&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;replace&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;procedure&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;test_proc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;begin&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dbms_output&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;put_line&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Editionable version&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="k"&gt;result&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;ORA&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;38824&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;A&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;OR&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;REPLACE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;may&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;change&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;EDITIONABLE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;property&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;an&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;existing&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With below you can alter the procedure.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;alter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;procedure&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;test_proc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;editionable&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;create&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;replace&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;procedure&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;test_proc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;begin&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dbms_output&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;put_line&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Editionable version&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;exec&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;test_proc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="k"&gt;result&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Editionable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;version&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/adfns/editions.html#GUID-F0D940E0-618D-4656-982E-1C5E49FCCD42"&gt;Oracle Doc&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Export your Kindle book highlights</title><link>https://www.binovarghese.com/notes/2024/01/regex-for-replacing-kindle-location-text/</link><pubDate>Wed, 24 Jan 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/01/regex-for-replacing-kindle-location-text/</guid><description>&lt;p&gt;If you want to export your Kindle book highlights without the page location and color information, you can follow these steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Export the content in any format you prefer.&lt;/li&gt;
&lt;li&gt;Paste the content in Visual Studio Code or any other text editor that supports regular expressions.&lt;/li&gt;
&lt;li&gt;Use the regular expression &lt;code&gt;Highlight \(yellow\) - Location [0-9]+&lt;/code&gt; in the Find and Replace tool to replace &lt;em&gt;Highlight (yellow) - Location 01&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Replace all the matches with an empty string.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This will remove the unwanted details from your highlights and leave only the text you want to keep.&lt;/p&gt;</description></item><item><title>Name attribute in input tag</title><link>https://www.binovarghese.com/notes/2024/01/name-tag-in-input-field/</link><pubDate>Mon, 15 Jan 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/01/name-tag-in-input-field/</guid><description>&lt;p&gt;The name attribute specifies the name of an &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; element. It is used to reference elements in a JavaScript, or to reference form data after a form is submitted to the server.&lt;/p&gt;
&lt;p&gt;Only form elements with a name attribute will have their values passed when submitting a form.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;form&lt;/span&gt; &lt;span class="na"&gt;action&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;http://localhost&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;POST&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;label&lt;/span&gt; &lt;span class="na"&gt;for&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;User&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;User name&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;label&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;text&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;User&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Name&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;bino&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;submit&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;submit&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&amp;lt;&lt;/span&gt;/form
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When you submit the above, server localhost will recive a content like below:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Name=bino
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://www.w3schools.com/tags/att_input_name.asp"&gt;w3schools&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Firebase rules update</title><link>https://www.binovarghese.com/notes/2024/01/updated-firebase-rules/</link><pubDate>Fri, 05 Jan 2024 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2024/01/updated-firebase-rules/</guid><description>&lt;p&gt;To read and write without authenticaton in firebase, you need to updated the rules in the database as below.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;rules&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;.read&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;.write&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Please note that this allow anyone to fetch and write the data to the database.&lt;/p&gt;</description></item><item><title>Display refresh rate</title><link>https://www.binovarghese.com/notes/2023/10/refresh-rate/</link><pubDate>Wed, 04 Oct 2023 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2023/10/refresh-rate/</guid><description>&lt;p&gt;The refresh rate of a display is the number of times per second that the image refreshes on the screen. For example, a 60Hz display will update the screen 60 times per second.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://support.microsoft.com/en-us/windows/change-your-display-refresh-rate-in-windows-c8ea729e-0678-015c-c415-f806f04aae5a"&gt;Windows Doc&lt;/a&gt;&lt;/p&gt;</description></item><item><title>PL SQL Constraints</title><link>https://www.binovarghese.com/notes/2023/08/pl-sql-constraints/</link><pubDate>Sun, 27 Aug 2023 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2023/08/pl-sql-constraints/</guid><description>&lt;p&gt;To find the constraints in a table&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ALL_CONSTRAINTS&lt;/code&gt;: Provides information about all constraints accessible to the user, across all tables in the database. It includes constraint types, status, and more, but doesn’t show column-specific details.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ALL_CONSTRAINTS&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TABLE_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;YOUR_TABLE_NAME&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;AND&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;OWNER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;OWNER_NAME&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To find the constarints referring to a table.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ALL_CONSTRAINTS&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;R_CONSTRAINT_NAME&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;IN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;CONSTRAINT_NAME&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ALL_CONSTRAINTS&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TABLE_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;YOUR_TABLE_NAME&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;AND&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;OWNER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;OWNER_NAME&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;USER_CONS_COLUMNS&lt;/code&gt;: Shows details about columns associated with constraints for tables owned by the current user. It’s useful for checking specific columns involved in constraints like primary keys, foreign keys, or unique constraints.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT CONSTRAINT_NAME, TABLE_NAME, COLUMN_NAME, POSITION
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM USER_CONS_COLUMNS
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WHERE TABLE_NAME = &amp;#39;YOUR_TABLE_NAME&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>The Simplest way to load CSS asynchronously</title><link>https://www.binovarghese.com/notes/2023/08/the-simplest-way-to-load-css-asynchronously/</link><pubDate>Sun, 27 Aug 2023 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2023/08/the-simplest-way-to-load-css-asynchronously/</guid><description>&lt;p&gt;Sometimes we want to load the CSS asynchronously to reduce the intial page load and you can do the same by adding &lt;code&gt;media=&amp;quot;print&amp;quot; onload=&amp;quot;this.media='all'&lt;/code&gt; to the link as below.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;link&lt;/span&gt; &lt;span class="n"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/path/to/my.css&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;media&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;print&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;onload&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;this.media=&amp;#39;all&amp;#39;&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Let&amp;rsquo;s dive into the details of the above:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The link’s &lt;code&gt;media&lt;/code&gt; attribute is set to &lt;code&gt;print&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;print&lt;/code&gt; is a media type that applies to print-based media or when the user tries to print the page.&lt;/li&gt;
&lt;li&gt;By using &lt;code&gt;media=&amp;quot;print&amp;quot;&lt;/code&gt;, the CSS file loads asynchronously (since it&amp;rsquo;s not needed immediately for screen display).&lt;/li&gt;
&lt;li&gt;However, we still want to apply the styles to the page for screen use.&lt;/li&gt;
&lt;li&gt;To achieve this, we can use the &lt;code&gt;onload&lt;/code&gt; attribute to change the link’s &lt;code&gt;media&lt;/code&gt; to &lt;code&gt;all&lt;/code&gt; once it finishes loading.&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://www.filamentgroup.com/lab/load-css-simpler/"&gt;filamentgroup&lt;/a&gt;&lt;/p&gt;</description></item><item><title>PL/SQL Returning Into</title><link>https://www.binovarghese.com/notes/2023/07/plsql-returning/</link><pubDate>Mon, 10 Jul 2023 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2023/07/plsql-returning/</guid><description>&lt;p&gt;The &lt;code&gt;RETURNING INTO&lt;/code&gt; clause allows us to return column values for rows affected by DML statements. The returned data could be a single column, multiple columns or expressions.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;INTO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;t1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;VALUES&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t1_seq&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nextval&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;FOUR&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;RETURNING&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;INTO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;l_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/lnpls/RETURNING-INTO-clause.html"&gt;Oracle&lt;/a&gt;,
&lt;a href="https://www.dba-oracle.com/t_plsql_returning_clause.htm"&gt;dba-oracle&lt;/a&gt;,
&lt;a href="https://oracle-base.com/articles/misc/dml-returning-into-clause"&gt;oracle base&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Deleting node modules</title><link>https://www.binovarghese.com/notes/2023/07/delete-node-modules-via-npxkill/</link><pubDate>Wed, 05 Jul 2023 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2023/07/delete-node-modules-via-npxkill/</guid><description>&lt;p&gt;In windows, deleting node modules takes so much time and sometimes it makes my screen unresponsive. I googled for some solution and found the below:&lt;/p&gt;
&lt;p&gt;Install a npm package called &lt;code&gt;npkill&lt;/code&gt; with the command &lt;code&gt;npm i -g npkill&lt;/code&gt;.&lt;br&gt;
After installing from the terminal go to the directory from which we want to delete the node modules and type &lt;code&gt;npkill&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The command prompt will list all the node modules and we can select the required folder.&lt;br&gt;
After the secltion, you can press the Space key which will erase the directory in which the cursor is located.&lt;/p&gt;
&lt;p&gt;To exit, &lt;code&gt;q&lt;/code&gt;, or &lt;code&gt;Ctrl + c&lt;/code&gt;.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://npkill.js.org/"&gt;npkill&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Directory Objects in PL/SQL</title><link>https://www.binovarghese.com/notes/2023/03/list-the-dba-directories-in-plsql/</link><pubDate>Thu, 02 Mar 2023 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2023/03/list-the-dba-directories-in-plsql/</guid><description>&lt;p&gt;This view describes all directories accessible to the user.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT * FROM ALL_DIRECTORIES;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This view describes all directories specified for the entire database.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT * FROM DBA_DIRECTORIES;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To view all the tables details, look &lt;a href="https://www.binovarghese.com/notes/2024/11/plsql-table-details/"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://docs.oracle.com/en/database/oracle/oracle-database/21/adlob/directory-objects.html#GUID-4BD66861-D096-4AFB-8919-41CA0877BEF2"&gt;Oracle Doc&lt;/a&gt;&lt;/p&gt;</description></item><item><title>What is CSS Modules?</title><link>https://www.binovarghese.com/notes/2023/03/css-modules/</link><pubDate>Thu, 02 Mar 2023 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2023/03/css-modules/</guid><description>&lt;p&gt;In CSS modules, CSS class names and animation names are scoped locally by default. In React you can use the file naming conversion as &lt;code&gt;[file name].module.css&lt;/code&gt;. This let the React and Webpack know that you are using CSS Modules.&lt;/p&gt;
&lt;p&gt;Importing the CSS in the file.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import nameyoulike from &amp;#39;./name.modules.css&amp;#39;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Calling the style in the file.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;button className={styles.button} /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://styled-components.com/docs"&gt;Styled Components Doc&lt;/a&gt;&lt;/p&gt;</description></item><item><title>What is Styled Components?</title><link>https://www.binovarghese.com/notes/2023/03/styled-components/</link><pubDate>Thu, 02 Mar 2023 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2023/03/styled-components/</guid><description>&lt;p&gt;Styled-components is a CSS-in-JS library that enables you to write regular CSS and attach it to JavaScript components. With styled-components, you can use the CSS you’re already familiar with instead of having to learn a new styling structure.&lt;/p&gt;
&lt;p&gt;Utilising tagged template literals (a recent addition to JavaScript) and the power of CSS, styled-components allows you to write actual CSS code to style your components.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://styled-components.com/docs"&gt;Styled Components Doc&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Difference between React and ReactDOM</title><link>https://www.binovarghese.com/notes/2023/02/react-and-react-dom/</link><pubDate>Sat, 25 Feb 2023 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2023/02/react-and-react-dom/</guid><description>&lt;p&gt;React and ReactDOM are two distinct libraries that are commonly used together in the development of web applications with React.&lt;/p&gt;
&lt;p&gt;React is a JavaScript library focused on building user interfaces. It follows a declarative approach, where developers define what the UI should look like based on the current state of the application. React then efficiently updates and renders components as the state changes. Its design emphasizes flexibility and efficiency, making it a popular choice for developing both web and mobile applications.&lt;/p&gt;
&lt;p&gt;ReactDOM, on the other hand, serves as a bridge between React and the DOM (Document Object Model). The DOM is a hierarchical structure representing the HTML content of a web page. ReactDOM provides a set of methods that enable React components to be rendered and updated within the DOM. It ensures that the user interface is synchronized with the underlying HTML structure.&lt;/p&gt;
&lt;p&gt;In summary, React is a library for building user interfaces, while ReactDOM handles the interaction with the DOM, rendering React components onto the web page. Although they are often used together, they serve different purposes and can function independently of each other.&lt;/p&gt;</description></item><item><title>Conditional Rendering</title><link>https://www.binovarghese.com/notes/2023/02/conditional-rendering/</link><pubDate>Wed, 22 Feb 2023 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2023/02/conditional-rendering/</guid><description>&lt;p&gt;Your components will often need to display different things depending on different conditions. In React, you can conditionally render JSX using JavaScript syntax like &lt;code&gt;if&lt;/code&gt; statements, &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;, and &lt;code&gt;? :&lt;/code&gt; operators.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; operator&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{ isYes &amp;amp;&amp;amp; &amp;lt;A /&amp;gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;? :&lt;/code&gt; operator&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;isYes ? Yes() : No()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;In React, you control branching logic with JavaScript.&lt;/li&gt;
&lt;li&gt;You can return a JSX expression conditionally with an if statement.&lt;/li&gt;
&lt;li&gt;You can conditionally save some JSX to a variable and then include it inside other JSX by - using the curly braces.&lt;/li&gt;
&lt;li&gt;In JSX, &lt;code&gt;{cond ? &amp;lt;A /&amp;gt; : &amp;lt;B /&amp;gt;}&lt;/code&gt; means “if cond, render &lt;code&gt;&amp;lt;A /&amp;gt;&lt;/code&gt;, otherwise &lt;code&gt;&amp;lt;B /&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;In JSX, &lt;code&gt;{cond &amp;amp;&amp;amp; &amp;lt;A /&amp;gt;}&lt;/code&gt; means “if cond, render &lt;code&gt;&amp;lt;A /&amp;gt;&lt;/code&gt;, otherwise nothing”.&lt;/li&gt;
&lt;li&gt;The shortcuts are common, but you don’t have to use them if you prefer plain if.&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://beta.reactjs.org/learn/conditional-rendering"&gt;React Doc&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Lifting state up</title><link>https://www.binovarghese.com/notes/2023/02/lifting-state-up/</link><pubDate>Mon, 20 Feb 2023 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2023/02/lifting-state-up/</guid><description>&lt;p&gt;Lifting state up in react means moving data from a child component to some parent component either to use it there or pass it some other child component.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When you want to coordinate two components, move their state to their common parent.&lt;/li&gt;
&lt;li&gt;Then pass the information down through props from their common parent.&lt;/li&gt;
&lt;li&gt;Finally, pass the event handlers down so that the children can change the parent’s state.&lt;/li&gt;
&lt;li&gt;It’s useful to consider components as “controlled” (driven by props) or “uncontrolled” (driven by state).&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Browser default actions</title><link>https://www.binovarghese.com/notes/2023/02/browser-default-actions/</link><pubDate>Sat, 18 Feb 2023 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2023/02/browser-default-actions/</guid><description>&lt;p&gt;There are many default browser actions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;mousedown&lt;/code&gt; – starts the selection (move the mouse to select).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;click&lt;/code&gt; on &lt;code&gt;&amp;lt;input type=&amp;quot;checkbox&amp;quot;&amp;gt;&lt;/code&gt; – checks/unchecks the input.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;submit&lt;/code&gt; – clicking an &lt;code&gt;&amp;lt;input type=&amp;quot;submit&amp;quot;&amp;gt;&lt;/code&gt; or hitting Enter inside a form field causes this event to happen, and the browser submits the form after it.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;keydown&lt;/code&gt; – pressing a key may lead to adding a character into a field, or other actions.
&lt;code&gt;contextmenu&lt;/code&gt; – the event happens on a right-click, the action is to show the browser context menu.&lt;/li&gt;
&lt;li&gt;…there are more…&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;All the default actions can be prevented if we want to handle the event exclusively by JavaScript.&lt;/p&gt;
&lt;p&gt;To prevent a default action – use either &lt;code&gt;event.preventDefault()&lt;/code&gt; or &lt;code&gt;return false&lt;/code&gt;. The second method works only for handlers assigned with &lt;code&gt;on&amp;lt;event&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;passive: true&lt;/code&gt; option of &lt;code&gt;addEventListener&lt;/code&gt; tells the browser that the action is not going to be prevented. That’s useful for some mobile events, like touchstart and touchmove, to tell the browser that it should not wait for all handlers to finish before scrolling.&lt;/p&gt;
&lt;p&gt;If the default action was prevented, the value of &lt;code&gt;event.defaultPrevented&lt;/code&gt; becomes &lt;code&gt;true&lt;/code&gt;, otherwise it’s &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://javascript.info/default-browser-action"&gt;javascript info&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Controlled and Uncontrolled Components</title><link>https://www.binovarghese.com/notes/2023/02/uncontrolled-and-controlled-components/</link><pubDate>Sat, 18 Feb 2023 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2023/02/uncontrolled-and-controlled-components/</guid><description>&lt;p&gt;A component with its own local state is often referred to as &lt;strong&gt;uncontrolled&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In contrast, a component is considered &lt;strong&gt;controlled&lt;/strong&gt; when its key data and behavior are managed externally through props, rather than relying on its own local state. This approach allows the parent component to have full control over its behavior and data flow.&lt;/p&gt;
&lt;p&gt;When designing a component, carefully consider which pieces of information should be controlled (managed via props) and which should remain uncontrolled (handled by the component’s state). However, keep in mind that you’re not locked into your initial decision—you can always refactor later as the needs of your application evolve.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://reactjs.org/learn/sharing-state-between-components"&gt;React Doc&lt;/a&gt;, &lt;a href="https://www.freecodecamp.org/news/what-are-controlled-and-uncontrolled-components-in-react/#:~:text=Two%20key%20concepts%20that%20developers,itself%20to%20handle%20form%20data."&gt;Freecodecamp&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Module in JS</title><link>https://www.binovarghese.com/notes/2023/01/module-in-js/</link><pubDate>Thu, 12 Jan 2023 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2023/01/module-in-js/</guid><description>&lt;p&gt;A module is just a file. One script is one module. As simple as that.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To make &lt;a href="https://www.binovarghese.com/blog/2023/01/exports-and-imports-in-js/"&gt;&lt;code&gt;import/export&lt;/code&gt;&lt;/a&gt; work, browsers need &lt;code&gt;&amp;lt;script type=&amp;quot;module&amp;quot;&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Modules have several differences:
&lt;ul&gt;
&lt;li&gt;Deferred by default.&lt;/li&gt;
&lt;li&gt;Async works on inline scripts.&lt;/li&gt;
&lt;li&gt;To load external scripts from another origin (domain/protocol/port), CORS headers are needed.&lt;/li&gt;
&lt;li&gt;Duplicate external scripts are ignored.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Modules have their own, local top-level scope and interchange functionality via import/export.&lt;/li&gt;
&lt;li&gt;Modules always use strict.&lt;/li&gt;
&lt;li&gt;Module code is executed only once. Exports are created once and shared between importers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When we use modules, each module implements the functionality and exports it. Then we use import to directly import it where it’s needed. The browser loads and evaluates the scripts automatically.&lt;/p&gt;
&lt;p&gt;In production, people often use bundlers such as Webpack to bundle modules together for performance and other reasons.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://javascript.info/modules-intro"&gt;javascript info&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Oracle Timestamp</title><link>https://www.binovarghese.com/notes/2022/12/oracle-timestamp/</link><pubDate>Wed, 21 Dec 2022 12:10:08 +0530</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/12/oracle-timestamp/</guid><description>&lt;p&gt;The &lt;code&gt;TIMESTAMP&lt;/code&gt; datatype is an extension on the DATE datatype. In addition to the datetime elements of the DATE datatype, the TIMESTAMP datatype holds fractions of a second to a precision between zero and nine decimal places, the default being six. There are also two variants called TIMESTAMP WITH TIME ZONE and TIMESTAMP WITH LOCAL TIME ZONE. As their names imply, these timestamps also store time zone offset information.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;create table table_name (
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; column_name number,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; column_name2 timestamp default systimestamp);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="references"&gt;References&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://www.dba-oracle.com/job_scheduling/timestamps.htm"&gt;dba-oracle&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.dba-oracle.com/t_oracle_current_timestamp.htm"&gt;dba-oracle 2&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Material UI and Emotion</title><link>https://www.binovarghese.com/notes/2022/12/emotion-lib/</link><pubDate>Wed, 14 Dec 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/12/emotion-lib/</guid><description>&lt;p&gt;Material UI uses Emotion as its default styling engine.&lt;/p&gt;
&lt;p&gt;Run the following commands to add Material UI to your project:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install @mui/material @emotion/react @emotion/styled
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Emotion&lt;/strong&gt;
Emotion is a library designed for writing css styles with JavaScript. It provides powerful and predictable style composition in addition to a great developer experience with features such as source maps, labels, and testing utilities. Both string and object styles are supported.&lt;/p&gt;
&lt;p&gt;There are two primary methods of using Emotion. The first is framework agnostic and the second is for use with React.&lt;/p&gt;
&lt;h5 id="styled-components"&gt;Styled Components&lt;/h5&gt;
&lt;p&gt;styled is a way to create React components that have styles attached to them. It&amp;rsquo;s available from @emotion/styled. styled was heavily inspired by styled-components and glamorous.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;import&lt;/span&gt; &lt;span class="n"&gt;styled&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;@emotion/styled&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="ne"&gt;Button&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;styled&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;button&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="n"&gt;px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;background&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;hotpink&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;font&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="n"&gt;px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;border&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="n"&gt;px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;black&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;font&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;bold&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;hover&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="ne"&gt;Button&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;This&lt;/span&gt; &lt;span class="n"&gt;my&lt;/span&gt; &lt;span class="n"&gt;button&lt;/span&gt; &lt;span class="n"&gt;component&lt;/span&gt;&lt;span class="o"&gt;.&amp;lt;/&lt;/span&gt;&lt;span class="ne"&gt;Button&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://emotion.sh/docs/introduction"&gt;Emotion website&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Differenet types of errors in JS</title><link>https://www.binovarghese.com/notes/2022/12/differenet-types-of-error-in-js/</link><pubDate>Tue, 13 Dec 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/12/differenet-types-of-error-in-js/</guid><description>&lt;p&gt;&lt;strong&gt;Syntax error&lt;/strong&gt;&lt;br&gt;
The error occurs when you use a predefined syntax incorrectly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reference Error&lt;/strong&gt; &lt;br&gt;
In a case where a variable reference can&amp;rsquo;t be found or hasn&amp;rsquo;t been declared, then a Reference error occurs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Type Error&lt;/strong&gt;&lt;br&gt;
An error occurs when a value is used outside the scope of its data type.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RangeError&lt;/strong&gt;&lt;br&gt;
There is an error when a range of expected values is required&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;URI Error&lt;/strong&gt;&lt;br&gt;
When the wrong character(s) are used in a URI function, the error is called.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;InternalError&lt;/strong&gt;&lt;br&gt;
This error occurs internally in the JS engine, especially when it has too much data to handle and the stack grows way over its critical limit.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Evaluation Error&lt;/strong&gt;&lt;br&gt;
Current JavaScript engines and EcmaScript specifications do not throw this error. However, it is still available for backward compatibility. The error is called when the eval() backward function is used.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://www.scaler.com/topics/types-of-errors-in-javascript/"&gt;scaler&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Drop table in PL SQL</title><link>https://www.binovarghese.com/notes/2022/10/drop-table-in-pl-sql/</link><pubDate>Tue, 25 Oct 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/10/drop-table-in-pl-sql/</guid><description>&lt;p&gt;To move a table to the recycle bin or remove it entirely from the database, you use the DROP TABLE statement:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DROP TABLE schema_name.table_name
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[CASCADE CONSTRAINTS | PURGE];
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;First, indicate the table and its schema that you want to drop after the &lt;code&gt;DROP TABLE&lt;/code&gt; clause. If you don’t specify the schema name explicitly, the statement assumes that you are removing the table from your own schema.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Second, specify &lt;code&gt;CASCADE CONSTRAINTS&lt;/code&gt; clause to remove all referential integrity constraints which refer to primary and unique keys in the table. In case such referential integrity constraints exist and you don’t use this clause, Oracle returns an error and stops removing the table.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Third, specify &lt;code&gt;PURGE&lt;/code&gt; clause if you want to drop the table and release the space associated with it at once. By using the &lt;code&gt;PURGE&lt;/code&gt; clause, Oracle will not place the table and its dependent objects into the recycle bin.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="refernces"&gt;Refernces&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://www.oracletutorial.com/oracle-basics/oracle-drop-table/"&gt;oracle tutorial&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Column-Level Collation and Case-Insensitive Database in Oracle</title><link>https://www.binovarghese.com/notes/2022/10/column-level-collation-and-case-insensitive-database-in-oracle/</link><pubDate>Mon, 24 Oct 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/10/column-level-collation-and-case-insensitive-database-in-oracle/</guid><description>&lt;p&gt;&lt;strong&gt;Collation determines how strings are compared, which has a direct impact on ordering (sorting) and equality tests between strings.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There are two basic types of collation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Binary&lt;/strong&gt; : Ordering and comparisons of string data are based on the numeric value of the characters in the strings.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linguistic&lt;/strong&gt; : Ordering and comparisons of string data are based on the alphabetic sequence of the characters, regardless of their numeric values.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When using binary collations there are three suffixes that alter the behavior of sorts and comparisons.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;_CI&amp;rdquo; : Case insensitive, but accent sensitive.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;_AI&amp;rdquo; : Both case and accent insensitive.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;_CS&amp;rdquo; : Both case and accent sensitive. This is default if no extension is used.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If no collation is specified, directly or via a default setting, the default &lt;a href="https://www.binovarghese.com/notes/2022/10/nls-session-parameters/"&gt;&lt;code&gt;USING_NLS_COMP&lt;/code&gt;&lt;/a&gt; pseudo-collation is used, which means the &lt;code&gt;NLS_SORT&lt;/code&gt; and &lt;code&gt;NLS_COMP&lt;/code&gt; parameters are used to determine the actual collation used.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-SQL" data-lang="SQL"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Syntax&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;COLLATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;BINARY_CS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;BINARY_CI&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;BINARY_AI&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;column_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;VARCHAR2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;CHAR&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COLLATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;BINARY_CI&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;create&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;table&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(...)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DEFAULT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COLLATION&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;BINARY_CI&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TABLE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;t1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DEFAULT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COLLATION&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;BINARY_AI&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://oracle-base.com/articles/12c/column-level-collation-and-case-insensitive-database-12cr2#:~:text=If%20no%20collation%20is%20specified,is%20the%20USING_NLS_COMP%20pseudo%2Dcollation."&gt;Oracle Base&lt;/a&gt;, &lt;a href="https://docs.oracle.com/en/database/oracle/oracle-database/12.2/nlspg/appendix-A-locale-data.html#GUID-CC85A33C-81FC-4E93-BAAB-1B3DB9036060"&gt;Oracle Doc&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Oracle NLS / National Language Suppport</title><link>https://www.binovarghese.com/notes/2022/10/nls-session-parameters/</link><pubDate>Sun, 23 Oct 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/10/nls-session-parameters/</guid><description>&lt;p&gt;The &lt;code&gt;NLS_DATABASE_PARAMETERS&lt;/code&gt; shows the values of the NLS parameters for the database. Oracle notes these differences between the parameters.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;NLS_SESSION_PARAMETERS&lt;/code&gt; shows the NLS parameters and their values for the session that is querying the view. It does not show information about the character set.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;NLS_INSTANCE_PARAMETERS&lt;/code&gt; shows the current NLS instance parameters that have been explicitly set and the values of the NLS instance parameters.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;NLS_DATABASE_PARAMETERS&lt;/code&gt; shows the values of the NLS parameters for the database. The values are stored in the database.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-SQL" data-lang="SQL"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;NLS_SESSION_PARAMETERS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;NLS_INSTANCE_PARAMETERS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;NLS_DATABASE_PARAMETERS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;NLS_LANGUAGE&lt;/code&gt; and &lt;code&gt;NLS_TERRITORY&lt;/code&gt; values in &lt;code&gt;NLS_DATABASE_PARAMETERS&lt;/code&gt; cannot be changed once the database has been created&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="http://www.dba-oracle.com/t_nls_database_parameters.htm"&gt;dba-oracle&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.oracle.com/cd/A87860_01/doc/server.817/a76966/ch1.htm"&gt;Oracle Blog&lt;/a&gt;&lt;/p&gt;</description></item><item><title>List the months between two dates - PL/SQL</title><link>https://www.binovarghese.com/notes/2022/10/list-the-months-in-between-two-dates/</link><pubDate>Tue, 11 Oct 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/10/list-the-months-in-between-two-dates/</guid><description>&lt;p&gt;PL SQL Query to list the months between two dates&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT TO_CHAR(ADD_MONTHS(TRUNC(TO_DATE(&amp;#39;01-JAN-22&amp;#39;,&amp;#39;DD-MON-YY&amp;#39;), &amp;#39;MM&amp;#39;), LEVEL -1),&amp;#39;MON-YY&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MONTH_YEAR 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM DUAL
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CONNECT BY LEVEL &amp;lt;= MONTHS_BETWEEN(TO_DATE(&amp;#39;01-DEC-22&amp;#39;,&amp;#39;DD-MON-YY&amp;#39;), 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; TO_DATE(&amp;#39;01-JAN -22&amp;#39;,&amp;#39;DD-MON-YY&amp;#39;)) + 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ORDER BY LEVEL;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Result set&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MONTH_YEAR
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;JAN-22
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FEB-22
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MAR-22
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;APR-22
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MAY-22
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;JUN-22
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;JUL-22
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AUG-22
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SEP-22
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OCT-22
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;NOV-22
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DEC-22
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Middleware in the Express.js</title><link>https://www.binovarghese.com/notes/2022/09/middleware-in-the-express-js/</link><pubDate>Thu, 01 Sep 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/09/middleware-in-the-express-js/</guid><description>&lt;p&gt;Middleware functions are functions that have access to the &lt;code&gt;request object (req)&lt;/code&gt;, the &lt;code&gt;response object (res)&lt;/code&gt;, and the &lt;code&gt;next function&lt;/code&gt; in the application’s request-response cycle. The next function is a function in the Express router which, when invoked, executes the middleware succeeding the current middleware.&lt;/p&gt;
&lt;p&gt;Middleware functions can perform the following tasks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Execute any code.&lt;/li&gt;
&lt;li&gt;Make changes to the request and the response objects.&lt;/li&gt;
&lt;li&gt;End the request-response cycle.&lt;/li&gt;
&lt;li&gt;Call the next middleware in the stack.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the current middleware function does not end the request-response cycle, it must call &lt;code&gt;next()&lt;/code&gt; to pass control to the next middleware function. Otherwise, the request will be left hanging.&lt;/p&gt;
&lt;p&gt;To load the middleware function, call &lt;code&gt;app.use()&lt;/code&gt;, specifying the middleware function.&lt;/p&gt;
&lt;p&gt;For example, the following code loads the myLogger middleware function before the route to the root path (/).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="n"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;express&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;express&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="n"&gt;myLogger&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;next&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;console&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;LOGGED&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;next&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;myLogger&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Hello World!&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Snippet for creating a progress bar</title><link>https://www.binovarghese.com/notes/2022/08/progress-bar-in-the-header-js/</link><pubDate>Sat, 27 Aug 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/08/progress-bar-in-the-header-js/</guid><description>&lt;p&gt;Snippet for creating a progress bar in the header section.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;header mt-100&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;row&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;progress&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;progress-bar&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;myBar&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;When&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="n"&gt;scrolls&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;execute&lt;/span&gt; &lt;span class="n"&gt;scrollFn&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;window&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;onscroll&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;function&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;scrollFn&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;function&lt;/span&gt; &lt;span class="n"&gt;scrollFn&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;winScroll&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;document&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;scrollTop&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;document&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;documentElement&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;scrollTop&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;document&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;documentElement&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;scrollHeight&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;document&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;documentElement&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clientHeight&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;scrolled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;winScroll&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;document&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;myBar&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;style&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;scrolled&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;%&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>What is a computer port?</title><link>https://www.binovarghese.com/notes/2023/08/what-is-computer-port/</link><pubDate>Tue, 23 Aug 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2023/08/what-is-computer-port/</guid><description>&lt;h4 id="what-is-a-port"&gt;What is a port?&lt;/h4&gt;
&lt;p&gt;A port is a virtual point where network connections starts and end. Ports are software based and managed by a computer&amp;rsquo;s operating system. Each port is associated with a specific process or service. Ports allow computers to easily differentiate between different kinds of traffic: emails go to a different port than webpages, for instance, even though both reach a computer over the same Internet connection.&lt;/p&gt;
&lt;h4 id="what-is-a-port-number"&gt;What is a port number?&lt;/h4&gt;
&lt;p&gt;Ports are standardized across all network-connected devices, with each port assigned a number. Most ports are reserved for certain protocols — for example, all Hypertext Transfer Protocol (HTTP) messages go to port 80. While IP addresses enable messages to go to and from specific devices, port numbers allow targeting of specific services or applications within those devices.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://www.cloudflare.com/learning/network-layer/what-is-a-computer-port/"&gt;Cloudflare&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Database Management System (DBMS)</title><link>https://www.binovarghese.com/notes/2022/08/database-management-system/</link><pubDate>Sun, 14 Aug 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/08/database-management-system/</guid><description>&lt;p&gt;A database management system (DBMS) is software that controls the storage, organization, and retrieval of data.&lt;/p&gt;
&lt;p&gt;Typically, a DBMS has the following elements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Kernel code&lt;/strong&gt;&lt;br&gt;
This code manages memory and storage for the DBMS.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Repository of metadata&lt;/strong&gt;&lt;br&gt;
This repository is usually called a data dictionary.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Query language&lt;/strong&gt;&lt;br&gt;
This language enables applications to access the data.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A database application is a software program that interacts with a database to access and manipulate data.&lt;/p&gt;
&lt;p&gt;The first generation of database management systems included the following types:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Hierarchical&lt;/strong&gt;&lt;br&gt;
A hierarchical database organizes data in a tree structure. Each parent record has one or more child records, similar to the structure of a file system.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Network&lt;/strong&gt;&lt;br&gt;
A network database is similar to a hierarchical database, except records have a many-to-many rather than a one-to-many relationship.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/introduction-to-oracle-database.html#GUID-2B09FA6E-C4D9-4C10-9DE7-21A876A4B4FA"&gt;Oracle&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Relational Model</title><link>https://www.binovarghese.com/notes/2022/08/relational-databases/</link><pubDate>Fri, 12 Aug 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/08/relational-databases/</guid><description>&lt;p&gt;In his seminal 1970 paper &amp;ldquo;A Relational Model of Data for Large Shared Data Banks,&amp;rdquo; E. F. Codd defined a relational model based on mathematical set theory. Today, the most widely accepted database model is the relational model.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A relational database is a database that conforms to the relational model&lt;/strong&gt;. The relational model has the following major aspects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Structures&lt;br&gt;
Well-defined objects store or access the data of a database.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Operations&lt;br&gt;
Clearly defined actions enable applications to manipulate the data and structures of a database.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Integrity rules&lt;br&gt;
Integrity rules govern operations on the data and structures of a database.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;A relational database stores data in a set of simple relations. A relation is a set of tuples (rows). A tuple is an unordered set of attribute (columns) values.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A table is a two-dimensional representation of a relation in the form of rows (tuples) and columns (attributes).&lt;/strong&gt; Each row in a table has the same set of columns. A relational database is a database that stores data in relations (tables). For example, a relational database could store information about company employees in an employee table, a department table, and a salary table.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/introduction-to-oracle-database.html"&gt;Oracle&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Difference Between Cursor And Ref Cursor</title><link>https://www.binovarghese.com/notes/2022/08/difference-between-cursor-and-ref-cursor/</link><pubDate>Tue, 09 Aug 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/08/difference-between-cursor-and-ref-cursor/</guid><description>&lt;p&gt;Example of Cursor:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;declare 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; cursor c1 is select first_name, salary from hr.employees;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;begin 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; for c in c1 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; loop
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; dbms_output.put_line(&amp;#39;Ename: &amp;#39; || c.first_name || &amp;#39;, Salary: &amp;#39; || c.salary);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; end loop;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;end;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example of Ref Cursor&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;declare&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;c1&lt;/span&gt; &lt;span class="n"&gt;SYS_REFCURSOR&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ename&lt;/span&gt; &lt;span class="n"&gt;varchar2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;sal&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;begin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;open&lt;/span&gt; &lt;span class="n"&gt;c1&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;select&lt;/span&gt; &lt;span class="n"&gt;first_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;hr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;LOOP&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;FETCH&lt;/span&gt; &lt;span class="n"&gt;c1&lt;/span&gt; &lt;span class="n"&gt;into&lt;/span&gt; &lt;span class="n"&gt;ename&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sal&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;EXIT&lt;/span&gt; &lt;span class="n"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;c1&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;NOTFOUND&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;dbms_output&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;put_line&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Ename: &amp;#39;&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;first_name&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;, Salary: &amp;#39;&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;END&lt;/span&gt; &lt;span class="n"&gt;LOOP&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;close&lt;/span&gt; &lt;span class="n"&gt;c1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;They are both cursors and can be processed in the same fashion and at the most basic level, they both are same. There are some important differences between regular cursors and ref cursors which are following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;A ref cursor can not be used in CURSOR FOR LOOP, it must be used in simple CURSOR LOOP statement as in example.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A ref cursor is defined at runtime and can be opened dynamically but a regular cursor is static and defined at compile time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A ref cursor can be passed to another PL/SQL routine (function or procedure) or returned to a client. A regular cursor cannot be returned to a client application and must be consumed within same routine.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A ref cursor incurs a parsing penalty because it cannot cached but regular cursor will be cached by PL/SQL which can lead to a significant reduction in CPU utilization.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A regular cursor can be defined outside of a procedure or a function as a global package variable. A ref cursor cannot be; it must be local in scope to a block of PL/SQL code.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A regular cursor can more efficiently retrieve data than ref cursor. A regular cursor can implicitly fetch 100 rows at a time if used with CURSOR FOR LOOP. A ref cursor must use explicit array fetching.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Use of ref cursors should be limited to only when you have a requirement of returning result sets to clients and when there is NO other efficient/effective means of achieving the goal.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:14188501024541"&gt;Ask Tom&lt;/a&gt;&lt;br&gt;
&lt;a href="http://www.greenstechnologys.com/Difference%20Between%20Cursor%20And%20Ref%20Cursor.txt"&gt;greenstechnologys&lt;/a&gt;&lt;/p&gt;</description></item><item><title>PL/SQL Ref Cursor</title><link>https://www.binovarghese.com/notes/2022/08/pl-sql-ref-cursor/</link><pubDate>Mon, 08 Aug 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/08/pl-sql-ref-cursor/</guid><description>&lt;p&gt;A cursor variable is a cursor that contains a pointer to a query result set. The result set is determined by execution of the OPEN FOR statement using the cursor variable.&lt;/p&gt;
&lt;p&gt;A cursor variable, unlike a static cursor, is not associated with a particular query. The same cursor variable can be opened a number of times with separate OPEN FOR statements containing different queries. A new result set is created each time and made available through the cursor variable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Strong typed&lt;code&gt; REF CURSOR&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DECLARE TYPE customer_t IS REF CURSOR RETURN customers%ROWTYPE;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;c_customer customer_t;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This form of cursor variable called strong typed REF CURSOR because the cursor variable is always associated with a specific record structure, or type.&lt;/p&gt;
&lt;p&gt;And here is an example of a weak typed REF CURSOR declaration that is not associated with any specific structure:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Weak typed&lt;code&gt; REF CURSOR&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DECLARE TYPE customer_t IS REF CURSOR;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;c_customer customer_t;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Starting from Oracle 9i, you can use SYS_REFCURSOR, which is a predefined weak typed REF CURSOR, to declare a weak REF CURSOR as follows:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DECLARE c_customer SYS_REFCURSOR;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;SYS_REFCURSOR&lt;/code&gt; data type is known as a weakly-typed REF CURSOR type. Strongly-typed cursor variables of the REF CURSOR type require a result set specification.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://www.oracletutorial.com/plsql-tutorial/plsql-cursor-variables/"&gt;OracleTututorial&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.ibm.com/docs/en/db2/11.5?topic=plsql-cursor-variables"&gt;IBM&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Referential Equality</title><link>https://www.binovarghese.com/notes/2022/08/referntial-equality/</link><pubDate>Tue, 02 Aug 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/08/referntial-equality/</guid><description>&lt;p&gt;We can say two objects are referentially equal when the pointers of the two objects are the same or when the operators are the same object instance. For example {} === {} is false because it is checking referential equality.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;console&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="bp"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;console&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="bp"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;10&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;console&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="bp"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;console&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="bp"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="n"&gt;name1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;first_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;sarah&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="n"&gt;name2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;first_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;sarah&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;console&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name1&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;name2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="bp"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;console&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name1&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="n"&gt;name2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="bp"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;console&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ne"&gt;Object&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;is&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="bp"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;console&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ne"&gt;Object&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;is&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="bp"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://blog.webdevsimplified.com/2020-05/memoization-in-react/"&gt;webdevsimplified&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.geeksforgeeks.org/what-is-object-equality-in-javascript/"&gt;geeksforgeeks&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.geeksforgeeks.org/object-is-in-javascript/"&gt;Object is &lt;/a&gt;&lt;/p&gt;</description></item><item><title>React Reconciliation</title><link>https://www.binovarghese.com/notes/2022/07/react-reconciliation/</link><pubDate>Sat, 30 Jul 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/07/react-reconciliation/</guid><description>&lt;p&gt;When a component&amp;rsquo;s props or state change, React decides whether an actual DOM update is necessary by comparing the same with Virtual DOM. If it is not equal React will update the DOM.&lt;/p&gt;
&lt;p&gt;React maintains two Virtual DOM at each time, one contains the updated Virtual DOM and one which is just the pre-update version of this updated Virtual DOM. Now it compares the pre-update version with the updated Virtual DOM and figures out what exactly has changed in the DOM like which components have been changed. This process of comparing the current Virtual DOM tree with the previous
one is known as &lt;strong&gt;‘diffing’&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The algorithm used for diffing is known as &lt;strong&gt;Diffing Algorithm&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Once React finds out what exactly has changed then it updated those objects only, on real DOM. React uses something called batch updates to update the real DOM. It just means that the changes to the real DOM are sent in batches instead of sending any update for a single change in the state of a component. This entire process of transforming changes to the real DOM is called &lt;strong&gt;Reconciliation&lt;/strong&gt;&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://www.geeksforgeeks.org/reactjs-reconciliation/"&gt;geeksforgeeks&lt;/a&gt;&lt;/p&gt;</description></item><item><title>PL/SQL Pseudocolumns</title><link>https://www.binovarghese.com/notes/2022/07/plsql-pseudocolumns/</link><pubDate>Wed, 27 Jul 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/07/plsql-pseudocolumns/</guid><description>&lt;p&gt;A pseudocolumn behaves like a table column, but is not actually stored in the table. You can select from pseudocolumns, but you cannot insert, update, or delete their values. A pseudocolumn is also similar to a function without arguments. However, functions without arguments typically return the same value for every row in the result set, whereas pseudocolumns typically return a different value for each row.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.binovarghese.com/notes/2022/07/plsql-rownum/"&gt;Rownum&lt;/a&gt; is an example for pseudocolumns.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/Pseudocolumns.html"&gt;Oracle Docs&lt;/a&gt;&lt;/p&gt;</description></item><item><title>PL/SQL ROWNUM</title><link>https://www.binovarghese.com/notes/2022/07/plsql-rownum/</link><pubDate>Mon, 25 Jul 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/07/plsql-rownum/</guid><description>&lt;p&gt;ROWNUM is a pseudocolumn (not a real column) that is available in a query. ROWNUM will be assigned the numbers 1, 2, 3, 4, &amp;hellip; N , where N is the number of rows in the set ROWNUM is used with. A ROWNUM value is not assigned permanently to a row. A row in a table does not have a number; you cannot ask for row 5 from a table—there is no such thing.&lt;/p&gt;
&lt;p&gt;ROWNUM value is actually assigned. A ROWNUM value is assigned to a row after it passes the predicate phase of the query but before the query does any sorting or aggregation. Also, a ROWNUM value is incremented only after it is assigned, which is why the following query will never return a row:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;select * from t 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;where ROWNUM &amp;gt; 1;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Below query will give you the wrong results,&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;select * from emp 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;where ROWNUM &amp;lt;= 5 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;order by sal desc;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To understand the above, check the below query with this structure:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;select ..., ROWNUM
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;from t
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;where &amp;lt;where clause&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;group by &amp;lt;columns&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;having &amp;lt;having clause&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;order by &amp;lt;columns&amp;gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Think of it as being processed in this order:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The FROM/WHERE clause goes first.&lt;/li&gt;
&lt;li&gt;ROWNUM is assigned and incremented to each output row from the FROM/WHERE clause.&lt;/li&gt;
&lt;li&gt;SELECT is applied.&lt;/li&gt;
&lt;li&gt;GROUP BY is applied.&lt;/li&gt;
&lt;li&gt;HAVING is applied.&lt;/li&gt;
&lt;li&gt;ORDER BY is applied.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Below is the way ti use the rownum&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;select * from 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;( select * from emp 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;order by sal desc ) 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;where ROWNUM &amp;lt;= 5;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://blogs.oracle.com/connect/post/on-rownum-and-limiting-results"&gt;Oracle Blog&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Validate Conversion</title><link>https://www.binovarghese.com/notes/2022/07/plsql-validate-conversion/</link><pubDate>Sun, 24 Jul 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/07/plsql-validate-conversion/</guid><description>&lt;p&gt;&lt;strong&gt;VALIDATE_CONVERSION&lt;/strong&gt; determines whether &lt;code&gt;expr&lt;/code&gt; can be converted to the specified data type. If expr can be successfully converted, then this function returns 1; otherwise, this function returns 0. If expr evaluates to null, then this function returns 1. If an error occurs while evaluating expr, then this function returns the error.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT VALIDATE_CONVERSION(1000 AS BINARY_DOUBLE)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM DUAL;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT VALIDATE_CONVERSION(&amp;#39;1234.56&amp;#39; AS BINARY_FLOAT)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM DUAL;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT VALIDATE_CONVERSION(&amp;#39;July 20, 1969, 20:18&amp;#39; AS DATE,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;Month dd, YYYY, HH24:MI&amp;#39;, &amp;#39;NLS_DATE_LANGUAGE = American&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM DUAL;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT VALIDATE_CONVERSION(&amp;#39;200 00:00:00&amp;#39; AS INTERVAL DAY TO SECOND)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM DUAL;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT VALIDATE_CONVERSION(&amp;#39;P1Y2M&amp;#39; AS INTERVAL YEAR TO MONTH)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM DUAL;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT VALIDATE_CONVERSION(&amp;#39;$100,00&amp;#39; AS NUMBER,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;$999D99&amp;#39;, &amp;#39;NLS_NUMERIC_CHARACTERS = &amp;#39;&amp;#39;,.&amp;#39;&amp;#39;&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM DUAL;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT VALIDATE_CONVERSION(&amp;#39;29-Jan-02 17:24:00&amp;#39; AS TIMESTAMP,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#39;DD-MON-YY HH24:MI:SS&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM DUAL;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT VALIDATE_CONVERSION(&amp;#39;1999-12-01 11:00:00 -8:00&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; AS TIMESTAMP WITH TIME ZONE, &amp;#39;YYYY-MM-DD HH:MI:SS TZH:TZM&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM DUAL;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SELECT VALIDATE_CONVERSION(&amp;#39;11-May-16 17:30:00&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; AS TIMESTAMP WITH LOCAL TIME ZONE, &amp;#39;DD-MON-YY HH24:MI:SS&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FROM DUAL;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/VALIDATE_CONVERSION.html#GUID-DC485EEB-CB6D-42EF-97AA-4487884CB2CD"&gt;Oracle Docs&lt;/a&gt;&lt;/p&gt;</description></item><item><title>PL/SQL SELECT INTO Clause</title><link>https://www.binovarghese.com/notes/2022/07/plsql-select-into/</link><pubDate>Wed, 20 Jul 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/07/plsql-select-into/</guid><description>&lt;p&gt;The SELECT INTO is actually a standard SQL query where the SELECT INTO clause is used to place the returned data into predefined variables.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;create&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;replace&lt;/span&gt; &lt;span class="n"&gt;function&lt;/span&gt; &lt;span class="n"&gt;auth_Name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;v_auth_state&lt;/span&gt; &lt;span class="n"&gt;IN&lt;/span&gt; &lt;span class="n"&gt;author&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;author_state&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;varchar2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;as&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;v_authName&lt;/span&gt; &lt;span class="n"&gt;author&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;author_last_name&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;begin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;select&lt;/span&gt; &lt;span class="n"&gt;author_last_name&lt;/span&gt; &lt;span class="n"&gt;into&lt;/span&gt; &lt;span class="n"&gt;v_authName&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;author&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;where&lt;/span&gt; &lt;span class="n"&gt;author_state&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;v_auth_state&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;v_authName&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;exception&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;when&lt;/span&gt; &lt;span class="n"&gt;TOO_MANY_ROWS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Too Many Authors in that State&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;when&lt;/span&gt; &lt;span class="n"&gt;NO_DATA_FOUND&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;No Authors in that State&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;when&lt;/span&gt; &lt;span class="n"&gt;others&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="n"&gt;raise_application_error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;20011&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Unknown Exception in authName Function&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="http://www.dba-oracle.com/t_pl_sql_plsql_select_into_clause.htm"&gt;dba-Oracle&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Count(*) is unsafe</title><link>https://www.binovarghese.com/notes/2022/07/plsql-count-of-star-is-unsafe/</link><pubDate>Tue, 19 Jul 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/07/plsql-count-of-star-is-unsafe/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;INTO&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;CONDITION&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;IF&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="n"&gt;THEN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;NEEDED_FIELD&lt;/span&gt; &lt;span class="n"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;otherVar&lt;/span&gt; &lt;span class="n"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;CONDITION&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In PLSQL method with &lt;code&gt;count(*)&lt;/code&gt; is unsafe in above code. If another session deletes the row that met the condition after the line with the &lt;code&gt;count(*)&lt;/code&gt;, and before the line with the &lt;code&gt;select ... into&lt;/code&gt;, the code will throw an exception that will not get handled.&lt;/p&gt;
&lt;p&gt;Use the below insted,&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;NEEDED_FIELD&lt;/span&gt; &lt;span class="n"&gt;INTO&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;CONDITION&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;EXCEPTION&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;NO_DATA_FOUND&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/221909/oracle-pl-sql-are-no-data-found-exceptions-bad-for-stored-procedure-performanc"&gt;Stack Overflow&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Set Define OFF</title><link>https://www.binovarghese.com/notes/2022/07/plsql-set-define-off/</link><pubDate>Mon, 18 Jul 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/07/plsql-set-define-off/</guid><description>&lt;p&gt;The &lt;code&gt;SET DEFINE&lt;/code&gt; command changes the prefix character used to mark substitution variables. You can use &lt;code&gt;SET DEFINE&lt;/code&gt; to turn variable substitution off.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;SET DEF[INE] {OFF | ON | prefix_char}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Define is a SQL*Plus client variable. It is NOT a database level setting.&lt;/p&gt;
&lt;p&gt;When you start SQL*Plus, variable substitution will be on by default, and the default prefix character is an ampersand. If you are running a script that uses ampersands in text strings, you may want to change the prefix character to something else. If your script doesn’t use substitution variables, you may find it easiest to turn the feature off.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://www.oreilly.com/library/view/oracle-sqlplus-the/0596007469/re56.html"&gt;Oreilly&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Motivation for fragments</title><link>https://www.binovarghese.com/notes/2022/04/motivation-for-fragments/</link><pubDate>Sun, 03 Apr 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/04/motivation-for-fragments/</guid><description>&lt;p&gt;A common pattern is for a component to return a list of children. In the below example when Column component is rendering the HTML will be invalid as a div is coming in the middle of the table. Whenever we are using Fragments, we can avoid that.&lt;/p&gt;
&lt;p&gt;Take this example React snippet:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="n"&gt;Table&lt;/span&gt; &lt;span class="k"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;React&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;render&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;table&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;tr&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Columns&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;tr&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;table&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;!-- raw HTML omitted --&gt; would need to return multiple &lt;!-- raw HTML omitted --&gt; elements in order for the rendered HTML to be valid. If a parent div was used inside the render() of &lt;!-- raw HTML omitted --&gt;, then the resulting HTML will be invalid.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="n"&gt;Columns&lt;/span&gt; &lt;span class="k"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;React&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;render&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;td&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;Hello&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;td&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;td&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="ne"&gt;World&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;td&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;results in a &lt;!-- raw HTML omitted --&gt; output of:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;table&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;tr&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;td&amp;gt;Hello&amp;lt;/td&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;td&amp;gt;World&amp;lt;/td&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/tr&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;/table&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Keyed Fragments</title><link>https://www.binovarghese.com/notes/2022/04/keyed-fragments/</link><pubDate>Sat, 02 Apr 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/04/keyed-fragments/</guid><description>&lt;p&gt;Fragments declared with the explicit &amp;lt;React.Fragment&amp;gt; syntax may have keys. A use case for this is mapping a collection to an array of fragments — for example, to create a description list:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-mysql" data-lang="mysql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;Glossary&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;dl&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="n"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Without&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;`&lt;/span&gt;&lt;span class="k"&gt;key&lt;/span&gt;&lt;span class="o"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;React&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;will&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;fire&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;key&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;warning&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Fragment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;dt&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;term&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;dt&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;dd&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;dd&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Fragment&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;dl&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Fragments</title><link>https://www.binovarghese.com/notes/2022/04/fragments/</link><pubDate>Fri, 01 Apr 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/04/fragments/</guid><description>&lt;p&gt;A common pattern in React is for a component to return multiple elements. Fragments let you group a list of children without adding extra nodes to the DOM.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;render() {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return (
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;React.Fragment&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;ChildA /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;ChildB /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;ChildC /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;lt;/React.Fragment&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; );
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="short-syntax"&gt;Short Syntax&lt;/h3&gt;
&lt;p&gt;Here is the shorter syntax you can use for declaring fragments. It looks like empty tags:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="n"&gt;Columns&lt;/span&gt; &lt;span class="k"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;React&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;render&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;td&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;Hello&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;td&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;td&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="ne"&gt;World&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;td&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Motivation for &lt;a href="https://www.binovarghese.com/notes/2022/04/motivation-for-fragments/"&gt;fragments&lt;/a&gt; in React.&lt;/p&gt;</description></item><item><title>TYPE Attribute</title><link>https://www.binovarghese.com/notes/2022/03/type/</link><pubDate>Wed, 02 Mar 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/03/type/</guid><description>&lt;p&gt;The &lt;code&gt;%TYPE&lt;/code&gt; attribute lets use the datatype of a field, record, nested table, database column, or variable in your own declarations, rather than hardcoding the type names.&lt;/p&gt;
&lt;p&gt;You can use the &lt;code&gt;%TYPE&lt;/code&gt; attribute as a datatype specifier when declaring constants, variables, fields, and parameters. If the types that you reference change, your declarations are automatically updated.&lt;/p&gt;
&lt;p&gt;This technique saves you from making code changes when, for example, the length of a VARCHAR2 column is increased. Note that column constraints, such as the &lt;code&gt;NOT NULL&lt;/code&gt; and check constraint, or default values are not inherited by items declared using &lt;code&gt;%TYPE&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>undefined and not defined in JS</title><link>https://www.binovarghese.com/notes/2022/02/undefined-and-not-defined-in-js/</link><pubDate>Tue, 22 Feb 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/02/undefined-and-not-defined-in-js/</guid><description>&lt;h4 id="undefined"&gt;undefined&lt;/h4&gt;
&lt;p&gt;undefined is a property of the global object. That is, it is a variable in global scope. The initial value of undefined is the primitive value &lt;a href="notes/2022/02/primitive-in-js/"&gt;&lt;em&gt;undefined&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A variable is &amp;lsquo;declared&amp;rsquo;, it has its own placeholder (memory is allcoated) but not having the value of itself &amp;lsquo;defined&amp;rsquo; hence &amp;lsquo;undefined&amp;rsquo;. Until the variable has assigned a value, the &amp;lsquo;undefined&amp;rsquo; fills that particular placeholder and &amp;lsquo;undefined&amp;rsquo; is itself a datatype.&lt;/p&gt;
&lt;h4 id="not-defined"&gt;Not Defined&lt;/h4&gt;
&lt;p&gt;This case comes in error where js engine neither find that particular variable nor its placeholder
and cannot find the variable in 1st phase of context (Memory allocation context)&lt;/p&gt;
&lt;p&gt;JS is loosely typed language, this means that JavaScript will figure out what type of data you have and make the necessary adjustments so that you don’t have to redefine your different types of data.&lt;/p&gt;
&lt;h4 id="references"&gt;References&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined"&gt;MDN&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Intersection Observer API</title><link>https://www.binovarghese.com/notes/2022/02/intersection-observer-api/</link><pubDate>Sun, 20 Feb 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/02/intersection-observer-api/</guid><description>&lt;p&gt;The Intersection Observer API provides a way to asynchronously observe changes in the intersection of a target element with an ancestor element or with a top-level document&amp;rsquo;s viewport.&lt;/p&gt;
&lt;p&gt;Syntax to create Intersection Observer API&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="n"&gt;observer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;new&lt;/span&gt; &lt;span class="n"&gt;IntersectionObserver&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;entries&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;console&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API"&gt;MDN Web Docs&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.webdevsimplified.com/2022-01/intersection-observer/"&gt;webdevsimplified&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Pure functions</title><link>https://www.binovarghese.com/notes/2022/02/pure-functions/</link><pubDate>Sun, 20 Feb 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/02/pure-functions/</guid><description>&lt;p&gt;A pure function is a function which:&lt;/p&gt;
&lt;p&gt;Given the same input, always returns the same output and the Produces have no side effects.&lt;/p&gt;
&lt;p&gt;Preoperties&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No random values&lt;/li&gt;
&lt;li&gt;No current date/time&lt;/li&gt;
&lt;li&gt;No global state&lt;/li&gt;
&lt;li&gt;No mutation of parameters&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Benefits&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Self-documenting&lt;/li&gt;
&lt;li&gt;Easily testable&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Primitive Data types in JS</title><link>https://www.binovarghese.com/notes/2022/02/primitive-data-types-in-js/</link><pubDate>Fri, 18 Feb 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/02/primitive-data-types-in-js/</guid><description>&lt;p&gt;In JavaScript, a primitive (primitive value, primitive data type) is data that is not an object and has no methods or properties. There are 7 primitive data types:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;string&lt;/li&gt;
&lt;li&gt;number&lt;/li&gt;
&lt;li&gt;bigint&lt;/li&gt;
&lt;li&gt;boolean&lt;/li&gt;
&lt;li&gt;undefined&lt;/li&gt;
&lt;li&gt;symbol&lt;/li&gt;
&lt;li&gt;null&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All primitives are immutable; that is, they cannot be altered. It is important not to confuse a primitive itself with a variable assigned a primitive value. The variable may be reassigned to a new value, but the existing value can not be changed in the ways that objects, arrays, and functions can be altered.&lt;/p&gt;
&lt;h4 id="references"&gt;References&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Glossary/Primitive"&gt;MDN&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Shortest Program in JS</title><link>https://www.binovarghese.com/notes/2022/02/shortest-programm-in-js/</link><pubDate>Thu, 10 Feb 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/02/shortest-programm-in-js/</guid><description>&lt;ol&gt;
&lt;li&gt;Shortest Program in JS: Empty file. Still, browsers make global Execution context and global space along with Window object.&lt;/li&gt;
&lt;li&gt;Global scope: Anything that is not in a function, is in the global space.&lt;/li&gt;
&lt;li&gt;Variables present in a global space can be accessed by a &amp;ldquo;window&amp;rdquo; object. (like window.a)&lt;/li&gt;
&lt;li&gt;In global scope, (this === window) object. For example refer the below,&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;windows&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Class and Function Hoisting in JS</title><link>https://www.binovarghese.com/notes/2022/02/js-class-and-function-hoisting/</link><pubDate>Wed, 02 Feb 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/02/js-class-and-function-hoisting/</guid><description>&lt;p&gt;An important difference between function declarations and class declarations is that while functions can be called in code that appears before they are defined, classes must be defined before they can be constructed.&lt;/p&gt;
&lt;h4 id="class-hoisting"&gt;&lt;code&gt;class&lt;/code&gt; hoisting&lt;/h4&gt;
&lt;p&gt;Classes defined using a class declaration are hoisted, which means that JavaScript has a reference to the class. However the class is not initialized by default, so any code that uses it before the line in which it is initialized is executed will throw a ReferenceError.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;ReferenceError&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="n"&gt;Rectangle&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This occurs because while the class is hoisted its values are not initialized.&lt;/p&gt;
&lt;h4 id="function-and-class-expression-hoisting"&gt;Function and class expression hoisting&lt;/h4&gt;
&lt;p&gt;Function expressions and class expressions are not hoisted.&lt;/p&gt;
&lt;h4 id="references"&gt;References&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://www.w3schools.com/js/js_hoisting.asp"&gt;w3schools&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Stateless and Stateful</title><link>https://www.binovarghese.com/notes/2022/01/stateless-and-stateful/</link><pubDate>Wed, 05 Jan 2022 00:00:00 +0000</pubDate><author>binovarghese8120@gmail.com (Bino Kochumol Varghese)</author><guid>https://www.binovarghese.com/notes/2022/01/stateless-and-stateful/</guid><description>&lt;p&gt;The state of an application (or anything else, really) is its condition or quality of being at a given moment in time—its state of being. Whether something is stateful or stateless depends on how long the state of interaction with it is being recorded and how that information needs to be stored.&lt;/p&gt;
&lt;h4 id="stateless"&gt;Stateless&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;A stateless process or applicaton can be understood in isolation&lt;/strong&gt;. There is no stored information or references to past transactions. Each transaction is made as if from scratch for the first time. Think of stateless transactions as a vending machine: a single request and a response.&lt;/p&gt;
&lt;h4 id="stateful"&gt;Stateful&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Stateful applications and processes, however, are those that can be returned to again and again, like online banking or email.&lt;/strong&gt; They’re performed with the context of previous transactions and the current transaction may be affected by what happened during previous transactions. For these reasons, stateful apps use the same servers each time they process a request from a user.&lt;/p&gt;
&lt;h6 id="references"&gt;References&lt;/h6&gt;
&lt;p&gt;&lt;a href="https://www.redhat.com/en/topics/cloud-native-apps/stateful-vs-stateless"&gt;Redhat blog&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>