<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>The Blogger In Me</title>
	<atom:link href="https://bloggerinme.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://bloggerinme.wordpress.com</link>
	<description>Starting a Blog</description>
	<lastBuildDate>Tue, 26 Aug 2025 18:00:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='bloggerinme.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>https://s0.wp.com/i/buttonw-com.png</url>
		<title>The Blogger In Me</title>
		<link>https://bloggerinme.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="https://bloggerinme.wordpress.com/osd.xml" title="The Blogger In Me" />
	<atom:link rel='hub' href='https://bloggerinme.wordpress.com/?pushpress=hub'/>
	<item>
		<title>10 Arabic (or Arabic-house) “nuclear” performers you can actually find under ₹2,500 in India</title>
		<link>https://bloggerinme.wordpress.com/2025/08/26/10-arabic-or-arabic-house-nuclear-performers-you-can-actually-find-under-%e2%82%b92500-in-india/</link>
					<comments>https://bloggerinme.wordpress.com/2025/08/26/10-arabic-or-arabic-house-nuclear-performers-you-can-actually-find-under-%e2%82%b92500-in-india/#respond</comments>
		
		<dc:creator><![CDATA[batta420]]></dc:creator>
		<pubDate>Tue, 26 Aug 2025 18:00:01 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<guid isPermaLink="false">http://bloggerinme.wordpress.com/2025/08/26/10-arabic-or-arabic-house-nuclear-performers-you-can-actually-find-under-%e2%82%b92500-in-india/</guid>

					<description><![CDATA[10 Arabic (or Arabic-house) “nuclear” performers you can actually find under ₹2,500 in India right now. I’m giving you the vibe + a live price example for each. Quick tips:]]></description>
										<content:encoded><![CDATA[
<p>10 Arabic (or Arabic-house) “nuclear” performers you can actually find <strong>under ₹2,500</strong> in India right now. I’m giving you the vibe + a live price example for each.</p>



<ol class="wp-block-list">
<li><strong>Lattafa Opulent Oud (100 ml)</strong> — loud amber-oud, smoky-sweet<br>₹1,805–2,200 on Flipkart.</li>



<li><strong>Lattafa Asad (100 ml)</strong> — sweet/spicy amber with strong projection<br>₹1,499 on Fragstalk.</li>



<li><strong>Lattafa Raghba Wood Intense (100 ml)</strong> — syrupy vanilla-oud wood bomb<br>₹1,349 on Fragstalk; ~₹1,789 on Flipkart.</li>



<li><strong>Al Haramain Detour Noir (100 ml)</strong> — creamy almond/amber, room-filling<br>₹1,499 on Fragstalk; ₹2,499 at Perfume Network.</li>



<li><strong>Paris Corner Killer Oud – Death by Oud (100 ml)</strong> — leathery, smoky, thick oud<br>₹1,949 at PerfumePalace; ~₹1,999 on Fragstalk.</li>



<li><strong>Lattafa Fakhar Gold Extrait (100 ml)</strong> — dense fruity-amber, very tenacious<br>₹2,099 on AAR Fragrances / Fragstalk.</li>



<li><strong>Lattafa Najdia (100 ml)</strong> — bright aquatic-amber with “beast” sillage on clothes<br>₹1,588–2,000 on Flipkart; ~₹1,570 on Fragstalk.</li>



<li><strong>Fragrance World Barakkat Rouge 540 (100 ml)</strong> — cotton-candy amber/woody “BR540” style, huge trail<br>₹1,599–1,649 (Fragstalk / PerfumePalace).</li>



<li><strong>Ard Al Zaafaran Oud 24 Hours (100 ml)</strong> — chocolaty amber-oud, notorious projector<br>₹1,349 on Fragstalk; ~₹1,686 on Flipkart.</li>



<li><strong>Lattafa Oud Mood (100 ml)</strong> — resinous smoky-sweet oud amber, “fills a room”<br>₹1,499 on Fragstalk; ~₹2,000 on Flipkart / ~₹1,799 on Amazon.</li>
</ol>



<p>Quick tips:</p>



<ul class="wp-block-list">
<li>For true “nuclear,” spray <strong>on clothes</strong> (test fabric first) and limit to <strong>2–3 sprays</strong> to avoid going anosmic or choking a room.</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://bloggerinme.wordpress.com/2025/08/26/10-arabic-or-arabic-house-nuclear-performers-you-can-actually-find-under-%e2%82%b92500-in-india/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6abd10ac64582daa364ff8562fda830a3f69330fde644a326dbb45c0004fedf9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">batta420</media:title>
		</media:content>
	</item>
		<item>
		<title>Polo Green Alternatives in India</title>
		<link>https://bloggerinme.wordpress.com/2025/08/21/polo-green-alternatives-in-india/</link>
					<comments>https://bloggerinme.wordpress.com/2025/08/21/polo-green-alternatives-in-india/#respond</comments>
		
		<dc:creator><![CDATA[batta420]]></dc:creator>
		<pubDate>Thu, 21 Aug 2025 17:58:36 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<guid isPermaLink="false">http://bloggerinme.wordpress.com/2025/08/21/polo-green-alternatives-in-india/</guid>

					<description><![CDATA[Here’s the ranking of Polo Green clones in India by performance (beast mode factor): 🔥 Performance Ranking 🥇 1. Enigma – Green Essence (Inspired by Polo Green) 🥈 2. Master Cologne – P0L0 Green Inspired Version 🥉 3. Vogue Roots – Inspired by Polo Green 4. Perfume Clones – Polo Green ✅ Best overall clone [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Here’s the <strong>ranking of Polo Green clones in India by performance (beast mode factor)</strong>:</p>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h2 class="wp-block-heading"><img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f525.png" alt="🔥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Performance Ranking</h2>



<h3 class="wp-block-heading"><img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f947.png" alt="🥇" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>1. Enigma – Green Essence (Inspired by Polo Green)</strong></h3>



<ul class="wp-block-list">
<li><strong>Similarity:</strong> Very close to vintage Polo Green (pine, leather, tobacco, oakmoss).</li>



<li><strong>Projection:</strong> Strong for first <strong>2 hours</strong>, noticeable bubble around you.</li>



<li><strong>Longevity:</strong> <strong>6–7 hours</strong> on skin, longer on clothes.</li>



<li><strong>Best choice if you want power + authenticity.</strong></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h3 class="wp-block-heading"><img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f948.png" alt="🥈" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>2. Master Cologne – P0L0 Green Inspired Version</strong></h3>



<ul class="wp-block-list">
<li><strong>Similarity:</strong> Slightly fresher/modernized, but keeps the green-leather backbone.</li>



<li><strong>Projection:</strong> Strong for <strong>1–2 hours</strong>, then moderate.</li>



<li><strong>Longevity:</strong> <strong>5–6 hours</strong>, surprisingly good for the price.</li>



<li><strong>Best budget “beast mode” pick.</strong></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h3 class="wp-block-heading"><img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f949.png" alt="🥉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>3. Vogue Roots – Inspired by Polo Green</strong></h3>



<ul class="wp-block-list">
<li><strong>Similarity:</strong> Green-woody, more wearable and a bit smoother.</li>



<li><strong>Projection:</strong> Moderate for <strong>1.5–2 hours</strong>.</li>



<li><strong>Longevity:</strong> Around <strong>5 hours</strong>.</li>



<li><strong>Balanced choice if you want something wearable daily.</strong></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h3 class="wp-block-heading">4. <strong>Perfume Clones – Polo Green</strong></h3>



<ul class="wp-block-list">
<li><strong>Similarity:</strong> Recognizable as Polo Green but slightly synthetic.</li>



<li><strong>Projection:</strong> Moderate for <strong>1 hour</strong>.</li>



<li><strong>Longevity:</strong> <strong>3–4 hours</strong>.</li>



<li><strong>Only if you want the cheapest possible option.</strong></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<p><img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Best overall clone in India:</strong> <strong>Enigma Green Essence</strong><br /><img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f4b0.png" alt="💰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Best budget beast mode:</strong> <strong>Master Cologne Polo Green</strong><br /><img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f60c.png" alt="😌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Most wearable daily version:</strong> <strong>Vogue Roots Inspired</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity" />
]]></content:encoded>
					
					<wfw:commentRss>https://bloggerinme.wordpress.com/2025/08/21/polo-green-alternatives-in-india/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6abd10ac64582daa364ff8562fda830a3f69330fde644a326dbb45c0004fedf9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">batta420</media:title>
		</media:content>
	</item>
		<item>
		<title>Nuclear performance Arabic Clone perfumes</title>
		<link>https://bloggerinme.wordpress.com/2025/08/21/nuclear-performance-arabic-clone-perfumes/</link>
					<comments>https://bloggerinme.wordpress.com/2025/08/21/nuclear-performance-arabic-clone-perfumes/#respond</comments>
		
		<dc:creator><![CDATA[batta420]]></dc:creator>
		<pubDate>Thu, 21 Aug 2025 16:30:11 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<guid isPermaLink="false">http://bloggerinme.wordpress.com/2025/08/21/nuclear-performance-arabic-clone-perfumes/</guid>

					<description><![CDATA[you’re looking for beast-mode / nuclear projection Arabic perfumes like Lattafa Atlas (strong sillage, long longevity, fills a room).Here’s a list of well-known Arabic clones with monstrous performance: &#8212;  Beast Mode Arabic Clones 1. Lattafa Qaeed / Qae’ed Clone of: Initio Blessed Baraka Profile: Spicy, woody, smoky with vanilla &#38; oud. Performance: Absolute powerhouse, [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>you’re looking for beast-mode / nuclear projection Arabic perfumes like Lattafa Atlas (strong sillage, long longevity, fills a room).<br />Here’s a list of well-known Arabic clones with monstrous performance:</p>



<p>&#8212;</p>



<p> Beast Mode Arabic Clones</p>



<p>1. Lattafa Qaeed / Qae’ed</p>



<p>Clone of: Initio Blessed Baraka</p>



<p>Profile: Spicy, woody, smoky with vanilla &amp; oud.</p>



<p>Performance: Absolute powerhouse, 10–12+ hrs with room-filling projection.<br /></p>



<p>&#8212;</p>



<p>2. Paris Corner Emir Wild &amp; Tobacco</p>



<p>Clone of: Tom Ford Tobacco Oud</p>



<p>Profile: Dark tobacco, oud, spice, resinous.</p>



<p>Performance: Extremely strong, heavy winter scent, nuclear sillage.<br /></p>



<p>&#8212;</p>



<p>3. Paris Corner Charuto Tobacco Vanille</p>



<p>Clone of: Tom Ford Tobacco Vanille</p>



<p>Profile: Sweet tobacco, vanilla, dried fruits, cocoa.</p>



<p>Performance: Thick, heavy, 8–10+ hrs easily. One of the strongest TV clones.<br /></p>



<p>&#8212;</p>



<p>4. Lattafa Asad</p>



<p>Clone of: Dior Sauvage Elixir</p>



<p>Profile: Spicy lavender, amber, woods, warm masculine.</p>



<p>Performance: Projects like crazy, easily 9–12 hrs.<br /></p>



<p>&#8212;</p>



<p>5. Paris Corner Pendora Scents Supremacy Not Only Intense (SNII by Afnan also counts)</p>



<p>Clone of: Creed Aventus with darker smoky twist.</p>



<p>Profile: Fruity pineapple, smoke, ambergris.</p>



<p>Performance: Strong projection, beast-mode longevity.<br /></p>



<p>&#8212;</p>



<p>6. Lattafa Najdia Intense</p>



<p>Clone of: Rasasi Hawas / Invictus Aqua DNA</p>



<p>Profile: Aquatic, citrus, bubblegummy sweet freshie.</p>



<p>Performance: Strong summer beast, lasts 8–10 hrs, projects hard.<br /></p>



<p>&#8212;</p>



<p>7. Paris Corner Emir Rifaaqat Adorn</p>



<p>Clone of: YSL Tuxedo</p>



<p>Profile: Patchouli, amber, rose, vanilla.</p>



<p>Performance: Heavy, elegant, pushes very strong for hours.<br /></p>



<p>&#8212;</p>



<p>8. Ministry of Oud Greatest (Paris Corner)</p>



<p>Clone of: Initio Oud for Greatness</p>



<p>Profile: Oud, saffron, lavender, incense.</p>



<p>Performance: Nuclear projection, lasts 12+ hrs on skin, days on clothes.<br /></p>



<p>&#8212;</p>



<p><img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> If you liked Atlas for its salty-aquatic but nuclear projection, I’d suggest checking Najdia Intense (Lattafa) or Asad for something equally loud but different DNA.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://bloggerinme.wordpress.com/2025/08/21/nuclear-performance-arabic-clone-perfumes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6abd10ac64582daa364ff8562fda830a3f69330fde644a326dbb45c0004fedf9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">batta420</media:title>
		</media:content>
	</item>
		<item>
		<title>Beast Mode Gourmand Arabic Clone Fragrances</title>
		<link>https://bloggerinme.wordpress.com/2025/08/18/beast-mode-gourmand-arabic-clone-fragrances/</link>
					<comments>https://bloggerinme.wordpress.com/2025/08/18/beast-mode-gourmand-arabic-clone-fragrances/#respond</comments>
		
		<dc:creator><![CDATA[batta420]]></dc:creator>
		<pubDate>Mon, 18 Aug 2025 17:20:58 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<guid isPermaLink="false">http://bloggerinme.wordpress.com/2025/08/18/beast-mode-gourmand-arabic-clone-fragrances/</guid>

					<description><![CDATA[Beast Mode Arabic Gourmand Clones 1. Paris Corner – Emir Wild &#38; Tobacco Clone of: Tom Ford Tobacco Vanille Profile: Spicy vanilla, dried fruits, sweet tobacco. Performance: 10+ hours, strong projection. 2. Paris Corner – Emir Oud &#38; Vanille Clone of: Van Cleef &#38; Arpels Bois d’Oud &#38; Vanille Profile: Dark vanilla, resinous woods, balsamic [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Beast Mode Arabic Gourmand Clones</p>



<p>1. Paris Corner – Emir Wild &amp; Tobacco</p>



<p>Clone of: Tom Ford Tobacco Vanille</p>



<p>Profile: Spicy vanilla, dried fruits, sweet tobacco.</p>



<p>Performance: 10+ hours, strong projection.</p>



<p>2. Paris Corner – Emir Oud &amp; Vanille</p>



<p>Clone of: Van Cleef &amp; Arpels Bois d’Oud &amp; Vanille</p>



<p>Profile: Dark vanilla, resinous woods, balsamic richness.</p>



<p>Performance: Beast, especially in cold weather.</p>



<p>3. Paris Corner – Charuto Tobacco Vanille</p>



<p>Clone of: Tom Ford Tobacco Vanille</p>



<p>Profile: Heavy tobacco, cinnamon, cacao, and vanilla sweetness.</p>



<p>Performance: Monster sillage &amp; longevity.</p>



<p>4. Lattafa – Qaed Al Fursan Unlimited</p>



<p>Clone of: Initio Oud for Greatness (with extra vanilla twist)</p>



<p>Profile: Woody-oud base with sweet gourmand vanilla undertone.</p>



<p>Performance: Nuclear longevity, loud projection.</p>



<p>5. Lattafa – Asad (Original or Zanzibar edition)</p>



<p>Clone of: Dior Sauvage Elixir (OG Asad) / YSL Tuxedo (Zanzibar)</p>



<p>Profile: Not pure gourmand, but spicy-sweet tonka and vanilla nuances.</p>



<p>Performance: Beast.</p>



<p>6. Afnan – 9PM</p>



<p>Clone of: Jean Paul Gaultier Ultra Male</p>



<p>Profile: Sweet bubblegum-like pear, cinnamon, vanilla, and tonka bean.</p>



<p>Performance: Party beast, projects like crazy.</p>



<p>7. Fragrance World – After Effect</p>



<p>Clone of: Initio Side Effect</p>



<p>Profile: Boozy rum, tobacco, vanilla, and cinnamon – a true gourmand.</p>



<p>Performance: Beast in cold weather.</p>



<p>8. Paris Corner – North Stag Expressions (Esp. “III” and “IV”)</p>



<p>Clone of: Xerjoff Italica / Kilian Angels’ Share</p>



<p>Profile: Almond, milk, caramel (Italica) or boozy cinnamon vanilla (Angels’ Share).</p>



<p>Performance: Long-lasting gourmand bombs.<br /></p>



<p>&#8212;</p>



<p><img src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/26a1.png" alt="⚡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Absolute Monsters if You Want “Sugar Overload”</p>



<p>Lattafa – Khamrah → Clone of Kilian Angels’ Share (dates, praline, vanilla, boozy cinnamon) – viral for being a beast gourmand.</p>



<p>Paris Corner – Khamrah Qahwa → Adds coffee to the Khamrah DNA = sweet, creamy gourmand.</p>



<p>Lattafa – Oud for Glory Bade’e Al Oud Amethyst → Clone of Initio Psychedelic Love (vanilla + heliotrope + almond).</p>
]]></content:encoded>
					
					<wfw:commentRss>https://bloggerinme.wordpress.com/2025/08/18/beast-mode-gourmand-arabic-clone-fragrances/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6abd10ac64582daa364ff8562fda830a3f69330fde644a326dbb45c0004fedf9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">batta420</media:title>
		</media:content>
	</item>
		<item>
		<title>Spring Boot 3 Spring Batch parallelized kafka reader</title>
		<link>https://bloggerinme.wordpress.com/2024/08/01/spring-boot-3-spring-batch-parallelized-kafka-reader/</link>
					<comments>https://bloggerinme.wordpress.com/2024/08/01/spring-boot-3-spring-batch-parallelized-kafka-reader/#respond</comments>
		
		<dc:creator><![CDATA[batta420]]></dc:creator>
		<pubDate>Thu, 01 Aug 2024 17:41:59 +0000</pubDate>
				<category><![CDATA[ChatGPT]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Spring Batch]]></category>
		<category><![CDATA[Spring Boot]]></category>
		<category><![CDATA[Item Reader]]></category>
		<category><![CDATA[Kafka]]></category>
		<guid isPermaLink="false">http://bloggerinme.wordpress.com/2024/08/01/spring-boot-3-spring-batch-parallelized-kafka-reader/</guid>

					<description><![CDATA[To parallelize a Kafka reader in a Spring Boot 3 Batch application, you can leverage Spring Batch&#8217;s partitioning or multithreading capabilities. Kafka Consumer Threads: Ensure each Kafka consumer thread is handling a separate partition to avoid concurrent processing issues. Task Executor: Properly configure the task executor to manage the concurrency. BlockingQueue: Use a thread-safe queue [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>To parallelize a Kafka reader in a Spring Boot 3 Batch application, you can leverage Spring Batch&#8217;s partitioning or multithreading capabilities.</p>



<p>Kafka Consumer Threads: Ensure each Kafka consumer thread is handling a separate partition to avoid concurrent processing issues.</p>



<p>Task Executor: Properly configure the task executor to manage the concurrency.</p>



<p>BlockingQueue: Use a thread-safe queue to manage items between the Kafka listener and the batch job.</p>



<p>Stateless Components: Ensure the ItemProcessor and ItemWriter are either stateless or handle state in a thread-safe manner.By following these guidelines, you can achieve a thread-safe implementation of a parallelized Kafka reader in a Spring Batch application.</p>



<p>The <code>@KafkaListener</code> method <code>listen</code> is automatically called by Spring Kafka whenever a message is received on the specified topic. The Spring Kafka framework handles this, so you don’t need to explicitly call the <code>listen</code> method. This is part of the declarative programming model provided by Spring Kafka.</p>



<p>Here&#8217;s a detailed explanation of how this works:</p>



<h3 class="wp-block-heading">How <code>@KafkaListener</code> Works</h3>



<ul class="wp-block-list">
<li><strong>Annotation</strong>: The <code>@KafkaListener</code> annotation on the <code>listen</code> method tells Spring to create a message listener for the specified Kafka topic.</li>



<li><strong>Message Reception</strong>: When a message is received on the topic, the <code>KafkaListener</code> container automatically calls the <code>listen</code> method and passes the message to it.</li>



<li><strong>Thread-Safety</strong>: Since the <code>BlockingQueue</code> is thread-safe, it can handle concurrent access from multiple listener threads.</li>
</ul>



<p>Here is a refined version of the <code>KafkaItemReader</code> for clarity:<code class="java language-java">@Component public class KafkaItemReader implements ItemReader&lt;String&gt; { private final BlockingQueue&lt;String&gt; queue = new LinkedBlockingQueue&lt;&gt;(); @KafkaListener(topics = "your-topic", groupId = "batch-group") public void listen(ConsumerRecord&lt;String, String&gt; record) { queue.offer(record.value()); } @Override public String read() throws Exception { return queue.poll(100, TimeUnit.MILLISECONDS); } }</code></p>



<h3 class="wp-block-heading">Steps to Ensure Thread Safety and Correct Execution</h3>



<ol class="wp-block-list">
<li><strong>KafkaListener</strong>: The <code>@KafkaListener</code> annotation is configured to listen to messages from the Kafka topic. When messages arrive, they are automatically passed to the <code>listen</code> method.</li>



<li><strong>BlockingQueue</strong>: The <code>BlockingQueue</code> is used to store messages. It handles concurrent access from multiple threads safely.</li>



<li><strong>Read Method</strong>: The <code>read</code> method is called by the Spring Batch framework to read items for processing. It polls the <code>BlockingQueue</code> for new messages.</li>
</ol>



<h3 class="wp-block-heading">Complete Example</h3>



<p>Here&#8217;s a complete example tying all components together:</p>



<h4 class="wp-block-heading">Kafka Configuration</h4>



<p><code class="java language-java">@Configuration public class KafkaConsumerConfig { @Value("${kafka.bootstrap-servers}") private String bootstrapServers; @Bean public Map&lt;String, Object&gt; consumerConfigs() { Map&lt;String, Object&gt; props = new HashMap&lt;&gt;(); props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); props.put(ConsumerConfig.GROUP_ID_CONFIG, "batch-group"); return props; } @Bean public ConsumerFactory&lt;String, String&gt; consumerFactory() { return new DefaultKafkaConsumerFactory&lt;&gt;(consumerConfigs()); } @Bean public ConcurrentKafkaListenerContainerFactory&lt;String, String&gt; kafkaListenerContainerFactory() { ConcurrentKafkaListenerContainerFactory&lt;String, String&gt; factory = new ConcurrentKafkaListenerContainerFactory&lt;&gt;(); factory.setConsumerFactory(consumerFactory()); factory.setConcurrency(3); // Number of threads return factory; } }</code></p>



<h4 class="wp-block-heading">Batch Configuration</h4>



<p><code class="java language-java">@Configuration @EnableBatchProcessing public class BatchConfig { @Autowired private JobBuilderFactory jobBuilderFactory; @Autowired private StepBuilderFactory stepBuilderFactory; @Autowired private KafkaItemReader kafkaItemReader; @Bean public Job kafkaJob() { return jobBuilderFactory.get("kafkaJob") .start(step1()) .build(); } @Bean public Step step1() { return stepBuilderFactory.get("step1") .&lt;String, String&gt;chunk(10) .reader(kafkaItemReader) .processor(processor()) .writer(writer()) .taskExecutor(taskExecutor()) // Enable parallel processing .build(); } @Bean public ItemProcessor&lt;String, String&gt; processor() { return item -&gt; { // Process the item return item; }; } @Bean public ItemWriter&lt;String&gt; writer() { return items -&gt; { // Write the items }; } @Bean public TaskExecutor taskExecutor() { SimpleAsyncTaskExecutor taskExecutor = new SimpleAsyncTaskExecutor(); taskExecutor.setConcurrencyLimit(10); // Number of concurrent threads return taskExecutor; } }</code></p>



<h4 class="wp-block-heading">Kafka Item Reader</h4>



<p><code class="java language-java">@Component public class KafkaItemReader implements ItemReader&lt;String&gt; { private final BlockingQueue&lt;String&gt; queue = new LinkedBlockingQueue&lt;&gt;(); @KafkaListener(topics = "your-topic", groupId = "batch-group") public void listen(ConsumerRecord&lt;String, String&gt; record) { queue.offer(record.value()); } @Override public String read() throws Exception { return queue.poll(100, TimeUnit.MILLISECONDS); // Adjust timeout as needed } }</code></p>



<h3 class="wp-block-heading">Application Properties</h3>



<p><code class="properties language-properties">kafka.bootstrap-servers=localhost:9092 spring.kafka.consumer.group-id=batch-group spring.kafka.consumer.auto-offset-reset=earliest</code></p>



<p>This setup ensures that your Kafka messages are processed in a thread-safe manner, leveraging Spring Kafka&#8217;s automatic message listener mechanism and Spring Batch&#8217;s parallel processing capabilities.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://bloggerinme.wordpress.com/2024/08/01/spring-boot-3-spring-batch-parallelized-kafka-reader/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6abd10ac64582daa364ff8562fda830a3f69330fde644a326dbb45c0004fedf9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">batta420</media:title>
		</media:content>
	</item>
		<item>
		<title>Splunk Session &#8211; Notes 2</title>
		<link>https://bloggerinme.wordpress.com/2023/10/22/splunk-session-notes-2/</link>
					<comments>https://bloggerinme.wordpress.com/2023/10/22/splunk-session-notes-2/#respond</comments>
		
		<dc:creator><![CDATA[batta420]]></dc:creator>
		<pubDate>Sun, 22 Oct 2023 07:59:25 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Splunk]]></category>
		<guid isPermaLink="false">http://bloggerinme.wordpress.com/?p=616</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<ul class="wp-block-list">
<li>Search and Reporting App is one of the applications that comes installed by default in Splunk.
<ul class="wp-block-list">
<li>Different Tabs
<ul class="wp-block-list">
<li>Search
<ul class="wp-block-list">
<li>Search data workspace</li>
</ul>
</li>



<li>Analytics
<ul class="wp-block-list">
<li>Analytics workspace</li>
</ul>
</li>



<li>Datasets
<ul class="wp-block-list">
<li>Shows all saved datasets</li>
</ul>
</li>



<li>Reports
<ul class="wp-block-list">
<li>Shows all saved reports</li>
</ul>
</li>



<li>Alerts
<ul class="wp-block-list">
<li>Shows all saved alerts</li>
</ul>
</li>



<li>Dashboards
<ul class="wp-block-list">
<li>Shows all saved dashboards</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>



<li>Click on Search and Reporting App in the App Toolbar.</li>



<li>Creating Tables Views
<ul class="wp-block-list">
<li>Put a search in the search bar and get the dataset.</li>



<li>Click on Create Table view to create a table view. Select the fields and then select save to save the table view</li>



<li>While saving the table make sure to set appropriate permissions so that others can access the data without creating the query.</li>



<li>All the tables created will be saved in the datasets tab. The other thing that can be done with a table is visualize the data with pivot. Add pivot columns to your data and create graphs accordingly. Change X and Y axis ,set graph type and visualize the data.</li>
</ul>
</li>



<li>Basic Searching and Dashboards
<ul class="wp-block-list">
<li>Add the search query into the Search bar.</li>



<li>pipe the data with table and add the fields that need to be displayed into that table. This will give the data in a tabular format.</li>



<li>Now click on the visualisation tab, a default chart will be prepared for the table data. Change the chart type in the settings. Go to format to change the formatting like setting nulls to 0 or showing values or showing only max and min value.</li>



<li>Click save as on the visualisation screen to Dashboard panel. Select dashboard name or provide a new name if you want to create a new dashboard. Also provide the panel name for the dashboard.</li>



<li>If you want to add the table into the dashboard then go back to the Statistics tab,then Save As and then provide a Panel Name and select or create Dashboard.</li>



<li>To get the AVG instead of table use stats avg(column). Go to visualization select single value chart. Here you&#8217;ll have options to change the color of the value to red,amber, green based on the value displayed. You can change caption ,number format in the same options. You can add this as dashboard panel as well.</li>



<li>Go to the dashboard. Click edit on the dashboard to move the panels and arrange them in the required format.</li>
</ul>
</li>



<li>Time formats
<ul class="wp-block-list">
<li>To change time format, after searching the data put a pipe and eval strftime(fieldname,&#8221;time format &#8220;) to change the format of time</li>
</ul>
</li>



<li>Field Extractions
<ul class="wp-block-list">
<li>Create a search in the Search Bar.</li>



<li>Select extract new fields in the Events tab.</li>



<li>Select source type</li>



<li>Select a sample event and click next</li>



<li>Choose Regular Expression or Delimiter
<ul class="wp-block-list">
<li>If Regular expression we need to highlight the value we need to be identified from the sample string and select field name to be extracted. Click add extraction and see if the results are correct in the same sample data. Name the extraction and set the permissions.</li>



<li>If  Delimiter then set the delimiters. Splunk attempts to find all the fields based on the delimiter provided. You can rename the field, which are case sensitive. Save the field extraction and provide permissions.</li>
</ul>
</li>
</ul>
</li>



<li>Intermediate Search
<ul class="wp-block-list">
<li>Filter | Transform | Present</li>



<li>Most popular transforming commands are 
<ul class="wp-block-list">
<li>top
<ul class="wp-block-list">
<li>Most common values of a given field</li>



<li>top &lt;field&gt;</li>



<li>Defaults to 10 records</li>



<li>Can be combined with limit=&lt;number&gt;</li>



<li>Automatically builds the table with count and percent columns</li>



<li>Can be used with multiple fields</li>
</ul>
</li>



<li>rare
<ul class="wp-block-list">
<li>Same syntax as top but the opposite of top.</li>
</ul>
</li>



<li>stats
<ul class="wp-block-list">
<li>stats function(field) by fields</li>



<li>Basically aggregating the data using count,max,min,avg,stdev,values,list</li>



<li>function &#8212; Similar to Aggregate function, by field &#8212; similar to group by in SQL</li>
</ul>
</li>



<li>sort
<ul class="wp-block-list">
<li>sort -cuser will sort decending</li>



<li>sort +cuser will sort ascending</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://bloggerinme.wordpress.com/2023/10/22/splunk-session-notes-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6abd10ac64582daa364ff8562fda830a3f69330fde644a326dbb45c0004fedf9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">batta420</media:title>
		</media:content>
	</item>
		<item>
		<title>Splunk &#8211; Session Notes 1</title>
		<link>https://bloggerinme.wordpress.com/2023/10/20/splunk-session-notes-1/</link>
					<comments>https://bloggerinme.wordpress.com/2023/10/20/splunk-session-notes-1/#respond</comments>
		
		<dc:creator><![CDATA[batta420]]></dc:creator>
		<pubDate>Fri, 20 Oct 2023 08:13:28 +0000</pubDate>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Splunk]]></category>
		<guid isPermaLink="false">http://bloggerinme.wordpress.com/?p=593</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<ul class="wp-block-list">
<li>What is Splunk?
<ul class="wp-block-list">
<li>Splunk is an IT operations tool that consumes machine data in real time. Most BI Tools does not analyse data in real time.</li>



<li>Security Incident and Event Management Tool</li>
</ul>
</li>



<li>Splunk main feature is converting unstructured data into structured insights.</li>



<li>Splunk is used to
<ul class="wp-block-list">
<li>Investigate</li>



<li>Alert</li>



<li>build Reports</li>



<li>build Dashboards </li>
</ul>
</li>
</ul>



<ul class="wp-block-list">
<li>Deploying Splunk
<ul class="wp-block-list">
<li>Deployment Models
<ul class="wp-block-list">
<li>Splunk has a Cloud Deployment and On Premise deployment options.</li>



<li>Splunk Data Pipeline
<ul class="wp-block-list">
<li>Input
<ul class="wp-block-list">
<li>Load forwarded data, uploaded data, files etc</li>
</ul>
</li>



<li>Parseing
<ul class="wp-block-list">
<li>Examine the data and adds metadata</li>
</ul>
</li>



<li>Indexing
<ul class="wp-block-list">
<li>Divides the data into events and writes the data into disks in &#8220;buckets&#8221;.</li>
</ul>
</li>



<li>Searching
<ul class="wp-block-list">
<li>User interaction with the data</li>
</ul>
</li>
</ul>
</li>



<li>Splunk Installations
<ul class="wp-block-list">
<li>Universal Forwarder
<ul class="wp-block-list">
<li>This is a lightweight splunk agent.</li>
</ul>
</li>



<li>Splunk Enterprise Installation
<ul class="wp-block-list">
<li>This has all the splunk components.</li>
</ul>
</li>
</ul>
</li>



<li>Components that make up the splunk 
<ul class="wp-block-list">
<li>Forwarder</li>



<li>Heavy Forwarder</li>



<li>Search Head</li>



<li>Deployment server</li>



<li>Master Cluster Node</li>



<li>License Server</li>



<li>Indexer</li>



<li>Deployer</li>
</ul>
</li>
</ul>
</li>



<li>Data Storage in disk
<ul class="wp-block-list">
<li>Index
<ul class="wp-block-list">
<li>Repository for splunk data</li>



<li>Raw data into events and stores then into index buckets with metadata</li>



<li>Default index that comes with splunk is called main and also has a _internal that stores the internal logs.</li>
</ul>
</li>



<li>Event
<ul class="wp-block-list">
<li>Single row of data is called event</li>



<li>Events have fields which are key value pairs.</li>



<li>Splunk adds default fields to all events.
<ul class="wp-block-list">
<li>Timestamp</li>



<li>Host</li>



<li>Source</li>



<li>Source Type</li>
</ul>
</li>



<li>Data is stored into directories called buckets based on age. There are 6 default buckets 
<ul class="wp-block-list">
<li>Hot &#8211; Read/Write</li>



<li>Warm &#8211; Only Read rolled from Hot</li>



<li>Cold &#8211; Moved to a different location. Data rolled from Warm</li>



<li>Frozen &#8211; Deleted or Archived data. Data rolled from Cold.</li>



<li>Thawed &#8211; The data that is restored from Frozen</li>



<li>Fished</li>
</ul>
</li>



<li>Different configs to be done on bucket
<ul class="wp-block-list">
<li>Retirement Policy</li>



<li>Archive and Restore from archive</li>



<li>Backup Data</li>



<li>Configure Index Size</li>



<li>Partition Index Data</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>



<li>Licensing
<ul class="wp-block-list">
<li>License data injested per data not data stored.</li>



<li>Daily indexing volume is measured from midnight to midnight by clock on license master.</li>



<li>License Types
<ul class="wp-block-list">
<li>Standard</li>



<li>Enterprise Trial</li>



<li>Sales Trial</li>



<li>DEV/TEST</li>



<li>Free</li>



<li>Industrial IOT</li>



<li>Forwarder</li>
</ul>
</li>
</ul>
</li>



<li>Apps and Addons
<ul class="wp-block-list">
<li>Apps
<ul class="wp-block-list">
<li>Visualization</li>



<li>Analysis</li>



<li>Reports and Dashboard</li>



<li>User Interface</li>
</ul>
</li>



<li>Add-Ons
<ul class="wp-block-list">
<li>Data Enrichment</li>



<li>Tags</li>



<li>Data Models</li>



<li>Datasets</li>
</ul>
</li>



<li>Apps is a set of configuration files.</li>



<li>Addons are subset of apps. This will have a UI.</li>



<li>App can be from Splunk or Certified by Splunk by third parties. Apps can be free or premium.</li>
</ul>
</li>
</ul>
</li>



<li>Configuration Files
<ul class="wp-block-list">
<li>Text documents that end in .conf extension and stored in /etc. System for global config files and app for application conf file. Splunk determines which conf files to use based on the app. Default directory /etc/app/default contains preconfigured conf files. Do not modify the conf files here. Place the modified conf files in /etc/&lt;app&gt;/local directory.</li>



<li>Conf files have [Stanza] and attribute key value pairs.</li>
</ul>
</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://bloggerinme.wordpress.com/2023/10/20/splunk-session-notes-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6abd10ac64582daa364ff8562fda830a3f69330fde644a326dbb45c0004fedf9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">batta420</media:title>
		</media:content>
	</item>
		<item>
		<title>Learning Kafka &#8211; Part 1 Basics</title>
		<link>https://bloggerinme.wordpress.com/2023/10/16/learning-kafka-part-1-basics/</link>
					<comments>https://bloggerinme.wordpress.com/2023/10/16/learning-kafka-part-1-basics/#respond</comments>
		
		<dc:creator><![CDATA[batta420]]></dc:creator>
		<pubDate>Mon, 16 Oct 2023 16:55:05 +0000</pubDate>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[Kafka]]></category>
		<guid isPermaLink="false">http://bloggerinme.wordpress.com/?p=585</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<ul class="wp-block-list">
<li>Topics
<ul class="wp-block-list">
<li>Represents a logical entity, a category or a feed where the messages are pushed into. Eg: Logs, User Data, Orders, Invoices etc </li>
</ul>
</li>



<li>Partitions
<ul class="wp-block-list">
<li>A Topic can have one more more partitions. Based on the message key the message will be pushed into one of the multiple partitions of the topic.</li>



<li>Order of the messages published is guaranteed within a partition. But not across the partition.</li>



<li>Partitions allow horizontal scaling of the kafka publish, consumer process.</li>
</ul>
</li>



<li>Offsets
<ul class="wp-block-list">
<li>Is the autoincremented Id which is unique to each partition. It will continue to be incremented everytime a new message is published into the kafka topic.</li>
</ul>
</li>



<li>Producers
<ul class="wp-block-list">
<li>A producer is an entity that is setup to publish data into a Topic.</li>



<li>A message key is set for a particular message in a kafka topic based on which the data is inserted into the partition.</li>



<li>Producer need to connect to a single broker to publish the data into the topic. If there are multiple brokers then kafka will automatically determine which is the broker that has the partition and publish the data into the partition.</li>
</ul>
</li>



<li>Message Key
<ul class="wp-block-list">
<li>Message consists of Mesage key and Mesage body</li>



<li>The partition to which the data need to be published depends upon which message message key. If there are multiple messages with the same message key then all the messages are published into the same topic. So while setting up the message key we need to make sure that the related data have the same message key.</li>



<li>Eg: 
<ul class="wp-block-list">
<li>For a fleet tracking application Truck Id should be the message so that multiple GPS location of the truck are pushed into the same partition so that it can be processed in order.</li>



<li>For order processing application Order Id should be the message key so that multiple updates on the Order can be pushed to the same partition so Tha it can be processed by a single consumer in Order.</li>
</ul>
</li>
</ul>
</li>



<li>Message Serialization and DeSerialization
<ul class="wp-block-list">
<li>When a producer push the data into the Kafka topic it can push in multiple formats like Avro,Protobuf,JSON etc. This data is serialized and converted into a byte stream and passed into the kafka topic.
<ul class="wp-block-list">
<li>The key is serialized using the key serializer and body is serialized using the Message body serializer and stored in the kafka topic .</li>



<li>When the data is consumed the data needs to be deserialized and converted back into Protobuf,Avro or JSON format so that the consumer can read and process the data.</li>
</ul>
</li>
</ul>
</li>



<li>Consumers and Consumer Groups
<ul class="wp-block-list">
<li>For each of the data consuming application a Consumer Group needs to be set.</li>



<li>A Consumer Group can have one or more consumers setup against it.</li>



<li>A Consumer Group will ensure that all the data from the topic from all partitions is processed by the consumers setup under it.</li>



<li>Consumer is the entity which is a child of a Consumer Group. It processes the messages of one or more partitions. </li>



<li>No two consumers will read the data from the same partition. 
<ul class="wp-block-list">
<li>Eg:
<ul class="wp-block-list">
<li>We can have a Consumer Group C1 processing Topic with 5 partitions having 5 consumers. In this case each consumer will process 1 partition.</li>



<li>We can have a Consumer Group C2 processing Topic with 5 partitions having 3 consumers. In this first consumer will process first 2 partitions, second consumer will process next two partitions and the last consumer will process last partition.</li>



<li>We can have a Consumer Group C3 processing Topic with 3 partitions having 5 consumers. In this first consumer will process first partition, second consumer will process second partition,third consumer will process last partition and the remaining two consumers will be idle not processing anything.</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>



<li>Broker
<ul class="wp-block-list">
<li>A kafka cluster is an ensemble of multiple broker.</li>



<li>Broker is just a server.</li>



<li>Each broker will contain only a certain number of topic partitions. Basically all partitions of a Topic may not reside Ina single broker if there are multiple brokers setup for a Topic.</li>



<li>For eg-
<ul class="wp-block-list">
<li>If a Topic has 3 partitions P1,P2, and P3 and 3 brokers B1,B2 and B3. Then P1 will be present in B1, P2 in B2 and P3 in B3.</li>
</ul>
</li>



<li>Having multiple brokers and multiple partitions will allow for horizontal scaling of the data.</li>
</ul>
</li>



<li>Replication factor
<ul class="wp-block-list">
<li>Replication factor is basically number of copies of the partition that needs to be stored in different brokers.</li>



<li>Eg: If a Topic has 3 partitions P1,P2, and P3 and 3 brokers B1,B2 and B3. Then P1 will be present in B1, P2 in B2 and P3 in B3 when replication factor is 1. If replication factor is 2 then P1 will be present in B1 primary and B2 secondary, P2 will be present in B2 primary and B3 secondary and P3 will be present in B3 primary and B1 secondary.</li>



<li>So primary for a partition is called the leader and secondary is called the follower.</li>



<li>Producer always writes into the Broker with the leader partition for the data.</li>



<li>The data from leader is replicated to the follower.</li>



<li>If the leader broker for a partition goes down the application functionality does not get impacted since the secondary will take over and start working as a primary. This makes kafka a highly available system.</li>
</ul>
</li>



<li>Offset Storage
<ul class="wp-block-list">
<li>There is a separate topic which stores committed offset called __offsets. This tracks the last processed offsets for each consumer group and consumers. So if a Consumer is stopped and restated then it can start processing from where it left off.</li>
</ul>
</li>



<li>Zookeeper
<ul class="wp-block-list">
<li>Maintains metadata of the cluster, broker, topics etc</li>



<li>This will be deprecated in the later version of kafka.</li>
</ul>
</li>



<li>KRaft
<ul class="wp-block-list">
<li>In the newer version of Kafka the zookeeper will not be used and instead KRaft will be used to store metadata information of the kafka cluster.</li>
</ul>
</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://bloggerinme.wordpress.com/2023/10/16/learning-kafka-part-1-basics/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6abd10ac64582daa364ff8562fda830a3f69330fde644a326dbb45c0004fedf9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">batta420</media:title>
		</media:content>
	</item>
		<item>
		<title>Java Libraries for command line tools</title>
		<link>https://bloggerinme.wordpress.com/2023/10/08/java-libraries-for-command-line-tools/</link>
					<comments>https://bloggerinme.wordpress.com/2023/10/08/java-libraries-for-command-line-tools/#respond</comments>
		
		<dc:creator><![CDATA[batta420]]></dc:creator>
		<pubDate>Sun, 08 Oct 2023 13:25:46 +0000</pubDate>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[Commons]]></category>
		<category><![CDATA[commons cli]]></category>
		<guid isPermaLink="false">http://bloggerinme.wordpress.com/2023/10/08/java-libraries-for-command-line-tools/</guid>

					<description><![CDATA[I needed a simple command line argument parser for a CLI tool which I wanted to create in Java. Below is the reference I used &#8211; https://stackoverflow.com/questions/367706/how-do-i-parse-command-line-arguments-in-java I ended up using commons cli library since it was lightweight and my use was very basic. I used the below code provided in the stackoverflow as sample [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>I needed a simple command line argument parser for a CLI tool which I wanted to create in Java.</p>



<p>Below is the reference I used &#8211;</p>



<p><a href="https://stackoverflow.com/questions/367706/how-do-i-parse-command-line-arguments-in-java" rel="nofollow">https://stackoverflow.com/questions/367706/how-do-i-parse-command-line-arguments-in-java</a></p>



<p>I ended up using commons cli library since it was lightweight and my use was very basic.</p>



<p>I used the below code provided in the stackoverflow as sample for my parsing use case.</p>



<pre class="wp-block-preformatted">or instance, this is how you use commons-cli to parse 2 string arguments:<br><br>import org.apache.commons.cli.*;<br><br>public class Main {<br><br><br>    public static void main(String[] args) throws Exception {<br><br>        Options options = new Options();<br><br>        Option input = new Option("i", "input", true, "input file path");<br>        input.setRequired(true);<br>        options.addOption(input);<br><br>        Option output = new Option("o", "output", true, "output file");<br>        output.setRequired(true);<br>        options.addOption(output);<br><br>        CommandLineParser parser = new DefaultParser();<br>        HelpFormatter formatter = new HelpFormatter();<br>        CommandLine cmd = null;//not a good practice, it serves it purpose <br><br>        try {<br>            cmd = parser.parse(options, args);<br>        } catch (ParseException e) {<br>            System.out.println(e.getMessage());<br>            formatter.printHelp("utility-name", options);<br><br>            System.exit(1);<br>        }<br><br>        String inputFilePath = cmd.getOptionValue("input");<br>        String outputFilePath = cmd.getOptionValue("output");<br><br>        System.out.println(inputFilePath);<br>        System.out.println(outputFilePath);<br><br>    }<br><br>}</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://bloggerinme.wordpress.com/2023/10/08/java-libraries-for-command-line-tools/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6abd10ac64582daa364ff8562fda830a3f69330fde644a326dbb45c0004fedf9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">batta420</media:title>
		</media:content>
	</item>
		<item>
		<title>Oracle Check statements currently running on a table</title>
		<link>https://bloggerinme.wordpress.com/2023/10/08/oracle-check-statements-currently-running-on-a-table/</link>
					<comments>https://bloggerinme.wordpress.com/2023/10/08/oracle-check-statements-currently-running-on-a-table/#respond</comments>
		
		<dc:creator><![CDATA[batta420]]></dc:creator>
		<pubDate>Sun, 08 Oct 2023 13:02:49 +0000</pubDate>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Check]]></category>
		<category><![CDATA[Drop]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[oracle database]]></category>
		<category><![CDATA[Partition]]></category>
		<category><![CDATA[SELECT]]></category>
		<category><![CDATA[Usage]]></category>
		<guid isPermaLink="false">http://bloggerinme.wordpress.com/2023/10/08/oracle-check-statements-currently-running-on-a-table/</guid>

					<description><![CDATA[I need to check if a table is being used in a select statement or not before running the command to drop the older partitions using the table. Below is the query used to check for the same &#8211; SELECT s.sid, s.serial#, s.username, s.program, s.machineFROM gv$session sWHERE EXISTS ( SELECT 1 FROM gv$open_cursor c WHERE [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>I need to check if a table is being used in a select statement or not before running the command to drop the older partitions using the table.</p>



<p>Below is the query used to check for the same &#8211;</p>



<pre class="wp-block-preformatted">SELECT s.sid, s.serial#, s.username, s.program, s.machine<br>FROM gv$session s<br>WHERE EXISTS (<br>  SELECT 1<br>  FROM gv$open_cursor c<br>  WHERE c.sid = s.sid<br>    AND c.status = 'OPEN'<br>    AND c.sql_text LIKE '%YOUR_TABLE_NAME%'<br>);</pre>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://bloggerinme.wordpress.com/2023/10/08/oracle-check-statements-currently-running-on-a-table/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		
		<media:content url="https://0.gravatar.com/avatar/6abd10ac64582daa364ff8562fda830a3f69330fde644a326dbb45c0004fedf9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">batta420</media:title>
		</media:content>
	</item>
	</channel>
</rss>
