<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bug hunt &#8211; CodePills.com</title>
	<atom:link href="https://codepills.com/category/bug-hunt/feed/" rel="self" type="application/rss+xml" />
	<link>https://codepills.com</link>
	<description>Helping you make a better code</description>
	<lastBuildDate>Sun, 23 May 2021 18:43:27 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>3 ways how to kill Spring Boot application at port 8080 on Windows</title>
		<link>https://codepills.com/3-ways-how-to-kill-spring-boot-application-at-port-8080-on-windows/</link>
					<comments>https://codepills.com/3-ways-how-to-kill-spring-boot-application-at-port-8080-on-windows/#respond</comments>
		
		<dc:creator><![CDATA[Andrej Buday]]></dc:creator>
		<pubDate>Wed, 03 Feb 2021 17:47:12 +0000</pubDate>
				<category><![CDATA[Bug hunt]]></category>
		<category><![CDATA[cmd]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IntelliJ Idea]]></category>
		<category><![CDATA[PID]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[process ID]]></category>
		<category><![CDATA[server container]]></category>
		<category><![CDATA[servlet]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Spring Boot]]></category>
		<category><![CDATA[Spring Boot application]]></category>
		<category><![CDATA[Spring development]]></category>
		<category><![CDATA[terminal]]></category>
		<guid isPermaLink="false">https://codepills.com/?p=1132</guid>

					<description><![CDATA[This article is a simple tutorial on how to kill your Spring Boot application which occupies port 8080 on Windows <a href="https://codepills.com/3-ways-how-to-kill-spring-boot-application-at-port-8080-on-windows/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>This article tries to answer one of the most often occurred questions connected with Spring Boot development. When developing a web application with Spring Boot, you might hit an error announcing that port 8080 is occupied. In this article, we will see why and how to solve this error. However, be sure that tutorial can help you solve the occupancy of any other port.</p>
<p><span id="more-1132"></span></p>
<h2>Spring Boot application default port</h2>
<p>When you develop long enough with Spring Boot, you know the error very well. You work on your Spring Boot application, and you use a console for running the application. Or you use your favourite IDE runner for starting your application (my preferred IDE is IntelliJ IDEA). Your Spring Boot application in the running embedded in servlet container when suddenly you need to do something else. Instead of adequately terminating the embedded servlet container with your application, you detach from the servlet by a closing terminal window or switching to a different project in IDE. However, because you did not correctly terminate your IDE runner and did not correctly kill the terminal&#8217;s application process, the servlet with the application is still running. After that, you might, of course, start developing something else. Surprise, surprise, you cannot. Any Spring Boot application port, by default number 8080, is still occupied with the unterminated process of your Spring Boot servlet container. (In the tutorial, we assume you are using the Spring Boot application port on default port number 8080).</p>
<p>I guess you might be a little bit confused by all the wording describing the issue. Let&#8217;s take a look first at some terminology to understand the problem here fully:</p>
<h3>What is process?</h3>
<p>We are aware that readers of this blog are pretty skilled in computers. So, we will provide a brief description of what is computer process without going to further details.</p>
<p>Every time you start a program on your computer, it requires a certain amount of resource. Your Central Processor Unit, known as CPU, add to this program its process.</p>
<p>If you open task manager on your Windows, you will see a list of all process your CPU is trying to manage at once.</p>
<h3>What is process ID?</h3>
<p>The process ID, also known as PID, is the number assigned by the operating system to each new process.</p>
<h3>What is port number?</h3>
<p>A port number is how to identify individual processes for network message when they arrive on a server. In a real sense, a port number is the logical address of each application or process that helps identify the sender and receiver of processed messages. </p>
<p>You can imagine port numbers as doors in the hallway into which message flows through the networks. It leaves one door and enters another.</p>
<h3>What is Spring Boot server container?</h3>
<p>Spring Boot is a Spring project which makes Spring development fast. Without going too much into the Spring Boot project details, your Spring Boot application runs in a server container, better known as a servlet. This servlet runs in one computer process and lister on port 8080 for traffic.</p>
<h2>Restart computer</h2>
<p>One way how to solve this is to restart your computer. During the restart of Windows OS, start all the fresh, and port 8080 will be empty. But this is not the fastest and definitely not the right way for developers to solve this.</p>
<h2>Set different port number</h2>
<p>Another way is to solve this issue by assigning the Spring Boot application a different port number. When we set a different port number for the application, we will not kill the existing process with the application servlet container. However, we will create a new-different process for the servlet container, which will be listening on a different port. In this way, port 8080 will be still occupied, but we will at least be able to continue to develop.</p>
<p>Go to Spring Boot <code>application.properties</code> file and set different port number for <code>server.port</code> .</p>
<p>Despite this quick workaround, there is a much more mature way to solve this problem. I would like you to show a better way to kill a Spring Boot servlet container listening on port 8080.</p>
<h2>Kill the process listening at port 8080</h2>
<p>To kill the process listening at port 8080 in the Windows environment, we need only go through a few steps. First, check the image below to get the idea.</p>
<p><img fetchpriority="high" decoding="async" src="https://codepills.com/wp-content/uploads/2021/02/kill_process_at_port_8080_on_the_windows_10.png" alt="How to kill process listening at port_8080 on the Windows 10" width="623" height="198" class="size-full wp-image-1133" srcset="https://codepills.com/wp-content/uploads/2021/02/kill_process_at_port_8080_on_the_windows_10.png 623w, https://codepills.com/wp-content/uploads/2021/02/kill_process_at_port_8080_on_the_windows_10-300x95.png 300w" sizes="(max-width: 623px) 100vw, 623px" /></p>
<h3>Find the process occupying port 8080</h3>
<p>On the Windows, open your CMD terminal. With simple command <code>netstat  -ano  |  findstr  PORT_NUMBER</code>, where for PORT_NUMBER add port number 8080, and on command prompt output (hit enter), we will get the <b>process id</b> of process <strong>listening on port 8080</strong>.</p>
<h3>Kill the process with command prompt</h3>
<p>Now, all we need to do is just type the following command <code>taskkill  /F  /PID  PROCESS_ID</code> and replace PROCESS_ID by the <b>process id</b> we got from the previous command result.</p>
<p>If you have typed everything correctly, process listening on port 8080 should be terminated.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codepills.com/3-ways-how-to-kill-spring-boot-application-at-port-8080-on-windows/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Angular calendar datepicker creates incorrect date one day behind the selection</title>
		<link>https://codepills.com/angular-calendar-datepicker-creates-incorrect-date-one-day-behind-the-selection/</link>
					<comments>https://codepills.com/angular-calendar-datepicker-creates-incorrect-date-one-day-behind-the-selection/#respond</comments>
		
		<dc:creator><![CDATA[Andrej Buday]]></dc:creator>
		<pubDate>Sat, 22 Jun 2019 12:51:03 +0000</pubDate>
				<category><![CDATA[Bug hunt]]></category>
		<category><![CDATA[Angular]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Spring]]></category>
		<guid isPermaLink="false">https://codepills.com/?p=1015</guid>

					<description><![CDATA[In this article, we will be looking at Angular datepicker and transferring the correct date through the REST endpoint. <a href="https://codepills.com/angular-calendar-datepicker-creates-incorrect-date-one-day-behind-the-selection/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>I was working on the bug fix task, which aimed to solve an extraordinary issue at first sight. In the monolithic Angular-Spring application, I choose a specific date at the front end with an Angular calendar datepicker. However, the database suddenly saved one day before the initially selected date.</p>
<p><span id="more-1015"></span></p>
<p>I started investigating the cause of the issue. First, I examined with Spring backend REST endpoint call with the breakpoint. The entity with the date was already coming incorrect from the Angular frontend. The backend endpoint on entry showed incorrect data, so the error was automatically not in the backend code.</p>
<p>At the frontend call for the backend REST endpoint, I also used <code>JSON.stringify(object)</code> to check if the produced entity which was leaving the frontend to the backend was correct. What I found was that it was also already incorrect.</p>
<p>Consequently, the issue happened somewhere between the user browser and Angular call for the backend. In this way, I also eliminated the possibility that the problem was somewhere in the Spring JSON conversion library (I used Jackson).</p>
<p>In the end, I figured it out. The issue was in class, which was migrating datepicker form data into the object. While the Angular calendar datepicker <u>collect the date from the browser also with local time zone</u> as a string, data to JSON ware pushed as a JavaScript <code>Date</code> class without a time zone. So if you, for example, pickup up any date, it was selected as the date for midnight with the timezone offset and transferred from string to <code>Date</code> as the day before due the offset counted as date subtraction.</p>
<p>I was working in Central Europe. In the case of Central Europe (CET), where I was working, the browser records +1 hour from GMT in datepicker based on local PC time settings. So if I pick up the date, hours and minutes are selected for midnight (00:00). However, <code>Date</code> class takes the datepicker string and subtract the negative offset from midnight and set a selected date for a day before.</p>
<p>This is the Angular&#8217;s datepicker component HTML code from the component form:</p>
<pre><code class="language-typescript">&lt;div class="ui-g-6"&gt;
    &lt;div&gt;
        &lt;label for="startDate"&gt;Start Date&lt;/label&gt;
    &lt;/div&gt;
    &lt;vrm-form-field [control]="editForm.controls['startDate']"&gt;
        &lt;p-calendar id="startDate"
            [formControlName]="'startDate'"
            dateFormat="yy-mm-dd"
            yearRange="1900:2100"&gt;
        &lt;/p-calendar&gt;
    &lt;/vrm-form-field&gt;
&lt;/div&gt;</code></pre>
<p>Following static function created an object from form datepicker which was pushed to REST endpoint before the fix:</p>
<pre><code class="language-typescript">static mapFromFormData(form: any) {
    return new ImportantDate(form.startDate);
}</code></pre>
<p>To fix the problem, I created a workaround. I made a Utility class with <code>moment library</code>, which takes a datepicker string and select only required date information.</p>
<pre><code class="language-typescript">export class Utils {
  public static formatDate(date: any): string {
    if (date === undefined || date === null) {
      return undefined;
    } else {
      return moment(date).format('YYYY-MM-DD');
    }
  }
}</code></pre>
<p>You can see the implementation of the static Utils method, which fixed the date.</p>
<pre><code class="language-typescript">static mapFromFormData(form: any) {
    return new ImportantDate(
        Utils.formatDate(form.startDate)
    );
}</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://codepills.com/angular-calendar-datepicker-creates-incorrect-date-one-day-behind-the-selection/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
