<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Engineering on downside154</title><link>https://downside154.github.io/categories/engineering/</link><description>Recent content in Engineering on downside154</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 20 Oct 2023 17:53:54 +0900</lastBuildDate><atom:link href="https://downside154.github.io/categories/engineering/index.xml" rel="self" type="application/rss+xml"/><item><title>Node.Js Streams</title><link>https://downside154.github.io/posts/node_streams/</link><pubDate>Fri, 20 Oct 2023 17:53:54 +0900</pubDate><guid>https://downside154.github.io/posts/node_streams/</guid><description>&lt;h2 id="intro"&gt;Intro&lt;/h2&gt;
&lt;p&gt;Node.js has a built-in support for streams.
Streams are a fundamental concept in Node.js that enable efficient data handling, esp when dealing with large amounts of information OR working with data in real time.&lt;/p&gt;
&lt;p&gt;Summary:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Explore the concept of streams in Node.js&lt;/li&gt;
&lt;li&gt;Understand the different types of streams available (Readable, Writable, Duplex, and Transform)&lt;/li&gt;
&lt;li&gt;Discuss best practices for working with streams effectively.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="what-are-nodejs-streams"&gt;What are Node.js Streams?&lt;/h3&gt;
&lt;p&gt;Streams enable efficient data handling by reading or writing input/output sequentially. They are handy for file operations, network communications, and other forms of end-to-end data exchange.&lt;/p&gt;</description></item><item><title>Database Indexing Strategies</title><link>https://downside154.github.io/posts/db_indexing/</link><pubDate>Fri, 20 Oct 2023 17:46:49 +0900</pubDate><guid>https://downside154.github.io/posts/db_indexing/</guid><description>&lt;hr&gt;
&lt;p&gt;Acknowledgement
&lt;a href="https://blog.bytebytego.com/p/database-indexing-strategies"&gt;link 1&lt;/a&gt;
&lt;a href="https://blog.bytebytego.com/p/database-indexing-strategies-part?r=1nwcx"&gt;link 2&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Multi-threading with nodejs</title><link>https://downside154.github.io/posts/multi_thread_nodejs/</link><pubDate>Fri, 20 Oct 2023 16:49:20 +0900</pubDate><guid>https://downside154.github.io/posts/multi_thread_nodejs/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;What is Multithreading&lt;/li&gt;
&lt;li&gt;How does Node.js handle asynchronous operations.&lt;/li&gt;
&lt;li&gt;How to use Node&amp;rsquo;s &lt;code&gt;worker-threads&lt;/code&gt; module to create and manage threads.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="history"&gt;History&lt;/h3&gt;
&lt;p&gt;Computers are becoming more powerful thanks to GPUs and multi-cre CPUs, and modern applications leverage &lt;strong&gt;threads(independent execution units in a process)&lt;/strong&gt; to maximize application performance&lt;/p&gt;
&lt;p&gt;However, &lt;strong&gt;JavaScript is a synchronous, blocking, single-threaded language&lt;/strong&gt;. It was initially created to run on browsers, allowing for much of modern web page interactions, form validations, animations, and so on. Running operations on a single thread can block the synchronous execution flow and result in bottlenecks.&lt;/p&gt;</description></item><item><title>Pandas</title><link>https://downside154.github.io/posts/pandas/</link><pubDate>Mon, 28 Aug 2023 17:54:30 +0900</pubDate><guid>https://downside154.github.io/posts/pandas/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Pandas is an open-source python data analysis library created by &lt;strong&gt;Wes McKinney&lt;/strong&gt; for &lt;strong&gt;quantitative finance&lt;/strong&gt; (hence it&amp;rsquo;s name &lt;strong&gt;pandas&lt;/strong&gt; from &amp;ldquo;PANel DAta System&amp;rdquo;, an econometrics term for data sets that include observations over multiple time periods). It was initially released on January 11th, 2008 and continues to be one of the most popular python tools used when handing data sets nowadays.&lt;/p&gt;
&lt;h3 id="basic-building-blocks"&gt;Basic Building Blocks&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;1 dimensional : Series, TimeSeries&lt;/p&gt;</description></item><item><title>SVG(Scalable Vector Graphics)</title><link>https://downside154.github.io/posts/svg/</link><pubDate>Sun, 27 Aug 2023 14:48:47 +0900</pubDate><guid>https://downside154.github.io/posts/svg/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;h2 id="deep-dive-into-svg"&gt;Deep dive into SVG&lt;/h2&gt;
&lt;p&gt;SVG code for an icon is usually made up of a bunch of &lt;code&gt;path&lt;/code&gt; elements with &lt;code&gt;d&lt;/code&gt; attribute(aka. path data).&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://downside154.github.io/images/svg_heart_vector.png" width="400px"&gt;
&lt;/figure&gt;

&lt;h3 id="path-data"&gt;Path Data&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;d&lt;/code&gt; attribute is a series of commands that tell the browser how the path should be drawn.
Below is an example of a &lt;code&gt;d&lt;/code&gt; attribute cleaned up:&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://downside154.github.io/images/svg_heart_drawing1.png" width="800px"&gt;
&lt;/figure&gt;

&lt;p&gt;All path commands follow the same basic syntax - a single letter code followed by a series of numbers. The letter code identifies the command type, while the numbers act as the command&amp;rsquo;s parameters.&lt;/p&gt;</description></item><item><title>Web Application Server(WAS)</title><link>https://downside154.github.io/posts/was/</link><pubDate>Sat, 12 Aug 2023 20:50:32 +0900</pubDate><guid>https://downside154.github.io/posts/was/</guid><description>&lt;h3 id="http"&gt;HTTP&lt;/h3&gt;
&lt;p&gt;all web browsers communicate through HTTP
client -&amp;gt; internet -&amp;gt; server&lt;/p&gt;
&lt;h3 id="server-vs-wasweb-application-server"&gt;Server vs WAS(web application server)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Web Server - HTTP, static content(HTML, CSS, JS, IMAGES, VIDEO), etc&amp;hellip;.&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;in simple terms, it&amp;rsquo;s a server that hosts and serves content to the client, used for simple tasks like serving static files, managing client connections, and handling basic request-response.
ex: NGINX, APACHE&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="2"&gt;
&lt;li&gt;WAS - Web Server + dynamic content, runs application logic code to provide dynamic HTML, API (JSON), SERVLET, JSP, SPRING MVC&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;WAS provides an environment where developers can build, deploy, and run applications that process and generate dynamic content.
&lt;em&gt;KEY FEATURES&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;middleware services: security, transaction management, messaging, etc..&lt;/li&gt;
&lt;li&gt;Application Deployment: deploying and managing web applications.&lt;/li&gt;
&lt;li&gt;Scalability: load balancing and distributing application load across multiple instances.&lt;/li&gt;
&lt;li&gt;Database Connectivity: connect to databases to fetch and update data
ex: Apache Tomcat, Jetty, Undertow, Oracle WebLogic.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="3"&gt;
&lt;li&gt;DIFFERENCE&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;static (web server) vs dynamic(was)&lt;/li&gt;
&lt;li&gt;terminology is used interchangeably
&lt;em&gt;in java, we call something as WAS if it has a servlete container(although some modern exceptions exist)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>IaC</title><link>https://downside154.github.io/posts/ioc/</link><pubDate>Wed, 19 Jul 2023 12:32:52 +0900</pubDate><guid>https://downside154.github.io/posts/ioc/</guid><description>&lt;h2 id="summary"&gt;Summary&lt;/h2&gt;
&lt;p&gt;Infrastructure as code (IaC) is an approach to managing and provisioning infrastructure resources through software and automated processes, rather than manual processes. It involves using machine-readable configuration files or scripts to define and control the infrastructure, treating it as code. With IaC, infrastructure resources such as networks, compute services, databases, and storage can be defined, managed, and deployed in a standardized, versioned, and parameterized manner.&lt;/p&gt;
&lt;h3 id="imperative-vs-declarative-iac"&gt;Imperative vs Declarative IaC&lt;/h3&gt;
&lt;p&gt;IaC allows you to define your infrastructure resources in a descriptive model, specifying the desired outcome rather than the specific steps to achieve it. This approach is known as &lt;strong&gt;declarative infrastructure as code&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Apache Tomcat</title><link>https://downside154.github.io/posts/apache_tomcat/</link><pubDate>Tue, 04 Jul 2023 15:57:49 +0900</pubDate><guid>https://downside154.github.io/posts/apache_tomcat/</guid><description>&lt;h2 id="what-is-apache-tomcat"&gt;What is Apache Tomcat?&lt;/h2&gt;
&lt;p&gt;In web development, Apache Tomcat is an open-source web server and servlet container. It is designed to execute Java servlets and render JavaServer Pages(JSPs) to serve dynamic web content.&lt;/p&gt;
&lt;h3 id="tomcat-is-widely-used-as-a-web-application-server-for-hosting-java-based-web-applications"&gt;Tomcat is widely used as a web application server for hosting Java-based web applications.&lt;/h3&gt;
&lt;p&gt;It provides a &lt;strong&gt;Java Servlet API&lt;/strong&gt; implementation and supports the Java Enterprise Edition (Java EE) specifications. Developers can write servlets and JSPs, which are Java-based components, and deploy them on Tomcat for execution. The Spring Framework provides various features and abstractions to simplify web development, and Tomcat can be used as the underlying web server to deploy Spring-based applications.&lt;/p&gt;</description></item><item><title>OOP</title><link>https://downside154.github.io/posts/oop/</link><pubDate>Mon, 19 Jun 2023 09:38:57 +0900</pubDate><guid>https://downside154.github.io/posts/oop/</guid><description>&lt;p&gt;OOP (object oriented programming) is a programming paradigm based on the concept of &lt;strong&gt;objects&lt;/strong&gt;. Data is in the form of fields(aka. attributes or properties) and the code is in the form of procedures (aka methods).&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://downside154.github.io/images/oop.jpeg" width="600px"&gt;&lt;figcaption&gt;
			&lt;h4&gt;OOP Concepts&lt;/h4&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Random fact of the day: The acronym OOP can refer to a lot of things, even as a jargon for software developers.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Object Oriented Positioning&lt;/li&gt;
&lt;li&gt;Object Oriented Programming&lt;/li&gt;
&lt;li&gt;Out of Position&lt;/li&gt;
&lt;li&gt;Ordinary Object Pointer (JDK)&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>