<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Parthiban Rey ]]></title><description><![CDATA[Parthiban Rey ]]></description><link>https://parthibanrey.com/</link><image><url>https://parthibanrey.com/favicon.png</url><title>Parthiban Rey </title><link>https://parthibanrey.com/</link></image><generator>Ghost 5.80</generator><lastBuildDate>Sat, 20 Jun 2026 19:59:37 GMT</lastBuildDate><atom:link href="https://parthibanrey.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Trading Position Size and Target Calculator]]></title><description><![CDATA[<p></p>
<!--kg-card-begin: html-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pro Position Sizer</title>
    <style>
        :root {
            --primary: #2563eb;
            --primary-hover: #1d4ed8;
            --success: #10b981;
            --danger: #ef4444;
            --background: #e2e8f0;
            --card-bg: #ffffff;
            --panel-bg: #f8fafc;
            --text-main: #0f172a;
            --text-muted: #64748b;
            --border: #cbd5e1;
        }

        body { 
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; 
            background-color: var(--background); 
            color: var(--text-main);
            display: flex; 
            justify-content: center; 
            align-items: center;
            min-height: 100vh;
            padding: 40px</style></head></html>]]></description><link>https://parthibanrey.com/trading-position-size-and-target-calculator/</link><guid isPermaLink="false">6a0afe7c73e5320477dea4cc</guid><category><![CDATA[trading]]></category><dc:creator><![CDATA[Parthiban Rey]]></dc:creator><pubDate>Mon, 18 May 2026 11:58:55 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1504805572947-34fad45aed93?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDR8fHRyYWRpbmd8ZW58MHx8fHwxNzc5MTA1NDM1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1504805572947-34fad45aed93?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDR8fHRyYWRpbmd8ZW58MHx8fHwxNzc5MTA1NDM1fDA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="Trading Position Size and Target Calculator"><p></p>
<!--kg-card-begin: html-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pro Position Sizer</title>
    <style>
        :root {
            --primary: #2563eb;
            --primary-hover: #1d4ed8;
            --success: #10b981;
            --danger: #ef4444;
            --background: #e2e8f0;
            --card-bg: #ffffff;
            --panel-bg: #f8fafc;
            --text-main: #0f172a;
            --text-muted: #64748b;
            --border: #cbd5e1;
        }

        body { 
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; 
            background-color: var(--background); 
            color: var(--text-main);
            display: flex; 
            justify-content: center; 
            align-items: center;
            min-height: 100vh;
            padding: 40px 20px; 
            margin: 0;
            line-height: 1.5;
            box-sizing: border-box;
        }

        .calculator-wrapper {
            background: var(--card-bg);
            border-radius: 20px;
            box-shadow: 0 20px 40px -10px rgba(0,0,0,0.1);
            width: 100%;
            max-width: 850px;
            overflow: hidden;
            display: grid;
            grid-template-columns: 1fr 1fr;
        }

        /* --- Left Side: Inputs --- */
        .input-panel {
            padding: 40px;
        }

        h2 { 
            margin-top: 0;
            margin-bottom: 24px;
            font-size: 24px;
            font-weight: 800;
            color: var(--text-main);
            letter-spacing: -0.5px;
        }

        .form-group { 
            margin-bottom: 20px; 
        }

        .input-row {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 16px;
        }

        label { 
            display: block; 
            font-weight: 600; 
            margin-bottom: 8px; 
            color: var(--text-muted); 
            font-size: 13px;
            text-transform: uppercase;
            letter-spacing: 0.5px;
        }

        input[type="number"] { 
            width: 100%; 
            padding: 14px 16px; 
            border: 1.5px solid var(--border); 
            border-radius: 10px; 
            box-sizing: border-box; 
            font-size: 16px;
            font-weight: 500;
            transition: all 0.2s ease;
            color: var(--text-main);
            background-color: #fff;
        }

        input[type="number"]:focus {
            outline: none;
            border-color: var(--primary);
            box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.1);
        }

        /* Toggle Switch */
        .ratio-toggle {
            display: flex;
            background: var(--panel-bg);
            border: 1px solid var(--border);
            border-radius: 10px;
            padding: 6px;
            margin-top: 10px;
        }

        .ratio-toggle label {
            flex: 1;
            text-align: center;
            margin: 0;
            padding: 12px;
            font-size: 14px;
            font-weight: 700;
            cursor: pointer;
            border-radius: 8px;
            color: var(--text-muted);
            transition: all 0.2s;
        }

        .ratio-toggle input[type="radio"] {
            display: none;
        }

        .ratio-toggle input[type="radio"]:checked + label {
            background: var(--primary);
            color: white;
            box-shadow: 0 4px 6px -1px rgba(37, 99, 235, 0.2);
        }

        /* --- Right Side: Results --- */
        .result-panel {
            background: #0f172a; /* Dark sleek background for contrast */
            color: white;
            padding: 40px;
            display: flex;
            flex-direction: column;
            justify-content: center;
        }

        .result-card {
            background: #1e293b;
            border-radius: 16px;
            padding: 24px;
            margin-bottom: 20px;
            border: 1px solid #334155;
        }

        .result-card:last-child {
            margin-bottom: 0;
        }

        .result-header {
            font-size: 13px;
            text-transform: uppercase;
            letter-spacing: 1px;
            color: #94a3b8;
            margin-bottom: 16px;
            font-weight: 700;
            border-bottom: 1px solid #334155;
            padding-bottom: 8px;
        }

        .result-item { 
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 16px; 
            font-size: 15px; 
            color: #cbd5e1;
        }

        .result-item:last-child { margin-bottom: 0; }

        .result-value { 
            font-weight: 700; 
            color: white; 
            font-size: 16px;
        }

        .highlight-large {
            display: flex;
            justify-content: space-between;
            align-items: center;
            background: rgba(37, 99, 235, 0.1);
            padding: 16px;
            border-radius: 10px;
            border: 1px solid rgba(37, 99, 235, 0.3);
            margin-top: 16px;
        }

        .highlight-large span:first-child {
            color: #94a3b8;
            font-weight: 600;
        }

        .highlight-large .result-value {
            font-size: 24px;
            color: #60a5fa;
        }

        .val-danger { color: #f87171 !important; }
        .val-success { color: #34d399 !important; font-size: 20px !important; }

        .error-msg {
            color: #f87171;
            font-size: 14px;
            margin-top: 8px;
            font-weight: 600;
            display: none;
        }

        /* Mobile Responsiveness */
        @media (max-width: 768px) {
            .calculator-wrapper {
                grid-template-columns: 1fr;
            }
            .input-panel, .result-panel {
                padding: 30px 20px;
            }
        }
    </style>
</head>
<body>

<div class="calculator-wrapper">
    
    <div class="input-panel">
        <h2>Trade Setup</h2>
        
        <div class="form-group">
            <label for="capital">Total Capital (&#x20B9;)</label>
            <input type="number" id="capital" placeholder="e.g., 400000">
        </div>
        
        <div class="form-group">
            <label for="riskPct">Account Risk per Trade (%)</label>
            <input type="number" id="riskPct" value="1" step="0.1">
        </div>
        
        <div class="input-row">
            <div class="form-group">
                <label for="entry">Entry Price</label>
                <input type="number" id="entry" placeholder="520">
            </div>
            
            <div class="form-group">
                <label for="stoploss">Stop Loss</label>
                <input type="number" id="stoploss" placeholder="500">
            </div>
        </div>

        <div class="form-group" style="margin-top: 10px;">
            <label>Target Reward Ratio</label>
            <div class="ratio-toggle">
                <input type="radio" id="ratio2" name="targetRatio" value="2" checked>
                <label for="ratio2">1:2 Target</label>
                
                <input type="radio" id="ratio3" name="targetRatio" value="3">
                <label for="ratio3">1:3 Target</label>
            </div>
        </div>

        <div id="error-msg" class="error-msg"></div>
    </div>

    <div class="result-panel">
        
        <div class="result-card">
            <div class="result-header">Risk &amp; Sizing</div>
            
            <div class="result-item">
                <span>Max Risk (Loss)</span> 
                <span class="result-value val-danger" id="res-max-loss">-</span>
            </div>
            <div class="result-item">
                <span>Risk Per Share</span> 
                <span class="result-value" id="res-risk-share">-</span>
            </div>
            <div class="result-item">
                <span>Capital Deployed</span> 
                <span class="result-value" id="res-capital">-</span>
            </div>
            
            <div class="highlight-large">
                <span>Shares to Buy</span> 
                <span class="result-value" id="res-shares">-</span>
            </div>
        </div>

        <div class="result-card">
            <div class="result-header" id="res-target-title">Target Metrics</div>
            
            <div class="result-item">
                <span>Target Sell Price</span> 
                <span class="result-value" id="res-target-price">-</span>
            </div>
            <div class="result-item">
                <span>Return on Investment</span> 
                <span class="result-value" id="res-target-pct">-</span>
            </div>
            <div class="result-item" style="margin-top: 16px; border-top: 1px dashed #334155; padding-top: 16px;">
                <span>Total Profit</span> 
                <span class="result-value val-success" id="res-target-profit">-</span>
            </div>
        </div>

    </div>
</div>

<script>
    // Helper to format currency
    const formatCurrency = (num) => '₹' + num.toLocaleString('en-IN', {minimumFractionDigits: 2, maximumFractionDigits: 2});

    function calculateLive() {
        const capital = parseFloat(document.getElementById('capital').value);
        const riskPct = parseFloat(document.getElementById('riskPct').value);
        const entry = parseFloat(document.getElementById('entry').value);
        const stoploss = parseFloat(document.getElementById('stoploss').value);
        const targetMultiplier = parseInt(document.querySelector('input[name="targetRatio"]:checked').value);
        
        const errorMsg = document.getElementById('error-msg');
        
        // Reset defaults if inputs are empty or invalid
        if (isNaN(capital) || isNaN(riskPct) || isNaN(entry) || isNaN(stoploss)) {
            errorMsg.style.display = "none";
            resetUI();
            return;
        }

        // Validate logic
        if (entry <= stoploss) {
            errorMsg.textContent = "Entry price must be strictly greater than Stop Loss.";
            errorMsg.style.display = "block";
            resetUI();
            return;
        }

        errorMsg.style.display = "none";

        // --- Core Math ---
        const maxLoss = capital * (riskPct / 100);
        const riskPerShare = entry - stoploss;
        const sharesToBuy = Math.floor(maxLoss / riskPerShare);
        const capitalDeployed = sharesToBuy * entry;

        // --- Target Math ---
        const targetPrice = entry + (riskPerShare * targetMultiplier);
        const targetProfit = sharesToBuy * (riskPerShare * targetMultiplier);
        const targetPct = ((targetPrice - entry) / entry) * 100;

        // --- Update UI ---
        document.getElementById('res-target-title').textContent = `1:${targetMultiplier} Target Metrics`;
        
        document.getElementById('res-max-loss').textContent = formatCurrency(maxLoss);
        document.getElementById('res-risk-share').textContent = formatCurrency(riskPerShare);
        document.getElementById('res-shares').textContent = sharesToBuy.toLocaleString('en-IN');
        document.getElementById('res-capital').textContent = formatCurrency(capitalDeployed);
        
        document.getElementById('res-target-price').textContent = formatCurrency(targetPrice);
        document.getElementById('res-target-profit').textContent = formatCurrency(targetProfit);
        document.getElementById('res-target-pct').textContent = targetPct.toFixed(2) + '%';
    }

    function resetUI() {
        const targetMultiplier = parseInt(document.querySelector('input[name="targetRatio"]:checked').value);
        document.getElementById('res-target-title').textContent = `1:${targetMultiplier} Target Metrics`;
        
        const resetElements = ['res-max-loss', 'res-risk-share', 'res-shares', 'res-capital', 'res-target-price', 'res-target-profit', 'res-target-pct'];
        resetElements.forEach(id => {
            document.getElementById(id).textContent = '-';
        });
    }

    // Attach real-time event listeners to all inputs
    const inputs = document.querySelectorAll('input[type="number"], input[type="radio"]');
    inputs.forEach(input => {
        input.addEventListener('input', calculateLive);
        input.addEventListener('change', calculateLive);
    });

</script>

</body>
</html>
<!--kg-card-end: html-->
]]></content:encoded></item><item><title><![CDATA[Arts & Crafts Archives]]></title><description><![CDATA[<p></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://ajanthaschoolofarts.com/?ref=parthibanrey.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">AJANTHA SCHOOL OF ARTS :: &#xB85;&#xB9C;&#xBA8;&#xBCD;&#xBA4;&#xBBE; &#xBB8;&#xBCD;&#xB95;&#xBC2;&#xBB2;&#xBCD; &#xB86;&#xB83;&#xBAA;&#xBCD; &#xB86;&#xBB0;&#xBCD;&#xB9F;&#xBCD;&#xBB8;&#xBCD; ::</div><div class="kg-bookmark-description"></div><div class="kg-bookmark-metadata"></div></div><div class="kg-bookmark-thumbnail"><img src="https://ajanthaschoolofarts.com/images/logo.png" alt></div></a></figure><p><a href="https://www.instagram.com/ajanthaschoolofartschennai/?ref=parthibanrey.com">https://www.instagram.com/ajanthaschoolofartschennai/</a></p><p><a href="https://www.instagram.com/prasunfinearts/?ref=parthibanrey.com">https://www.instagram.com/prasunfinearts/</a></p><p>Courses from <a href="https://www.domestika.org/?ref=parthibanrey.com">https://www.domestika.org/</a></p>]]></description><link>https://parthibanrey.com/arts-crafts-archives/</link><guid isPermaLink="false">68450ea173e5320477dea3ae</guid><category><![CDATA[archives]]></category><dc:creator><![CDATA[Parthiban Rey]]></dc:creator><pubDate>Sun, 08 Jun 2025 04:20:18 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1585840887185-dc28a1b86ea0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDE1fHxkcmF3aW5nfGVufDB8fHx8MTc0OTM1NjMwMnww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1585840887185-dc28a1b86ea0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDE1fHxkcmF3aW5nfGVufDB8fHx8MTc0OTM1NjMwMnww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="Arts &amp; Crafts Archives"><p></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://ajanthaschoolofarts.com/?ref=parthibanrey.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">AJANTHA SCHOOL OF ARTS :: &#xB85;&#xB9C;&#xBA8;&#xBCD;&#xBA4;&#xBBE; &#xBB8;&#xBCD;&#xB95;&#xBC2;&#xBB2;&#xBCD; &#xB86;&#xB83;&#xBAA;&#xBCD; &#xB86;&#xBB0;&#xBCD;&#xB9F;&#xBCD;&#xBB8;&#xBCD; ::</div><div class="kg-bookmark-description"></div><div class="kg-bookmark-metadata"></div></div><div class="kg-bookmark-thumbnail"><img src="https://ajanthaschoolofarts.com/images/logo.png" alt="Arts &amp; Crafts Archives"></div></a></figure><p><a href="https://www.instagram.com/ajanthaschoolofartschennai/?ref=parthibanrey.com">https://www.instagram.com/ajanthaschoolofartschennai/</a></p><p><a href="https://www.instagram.com/prasunfinearts/?ref=parthibanrey.com">https://www.instagram.com/prasunfinearts/</a></p><p>Courses from <a href="https://www.domestika.org/?ref=parthibanrey.com">https://www.domestika.org/</a></p>]]></content:encoded></item><item><title><![CDATA[How to get desktop chrome notification to smart (android) phone]]></title><description><![CDATA[<p></p><p>For an example lets take Microsoft Teams web view sends notification to your laptop&apos;s chrome and you wish to receive this notification on your smart phone ( here we considered android)</p><p>To get&#xA0;<strong>Microsoft Teams Chrome desktop notifications</strong>&#xA0;from a different Chrome profile on your&#xA0;<strong>Android</strong></p>]]></description><link>https://parthibanrey.com/how-to-get-desktop-chrome-notification-to-android-phone/</link><guid isPermaLink="false">679c5035f8a27104d3d1ec1f</guid><category><![CDATA[General]]></category><dc:creator><![CDATA[Parthiban Rey]]></dc:creator><pubDate>Mon, 03 Feb 2025 14:35:03 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1584438784894-089d6a62b8fa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDV8fG5vdGlmaWNhdGlvbnxlbnwwfHx8fDE3Mzg1OTMyNjh8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1584438784894-089d6a62b8fa?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDV8fG5vdGlmaWNhdGlvbnxlbnwwfHx8fDE3Mzg1OTMyNjh8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="How to get desktop chrome notification to smart (android) phone"><p></p><p>For an example lets take Microsoft Teams web view sends notification to your laptop&apos;s chrome and you wish to receive this notification on your smart phone ( here we considered android)</p><p>To get&#xA0;<strong>Microsoft Teams Chrome desktop notifications</strong>&#xA0;from a different Chrome profile on your&#xA0;<strong>Android phone</strong>, follow these steps:</p><h3 id="solution-1-use-pushbullet-for-cross-device-notifications"><strong>Solution 1: Use Pushbullet for Cross-Device Notifications</strong></h3><p>Pushbullet can forward desktop notifications to your Android device.</p><h4 id="steps-to-set-up-pushbullet"><strong>Steps to Set Up Pushbullet:</strong></h4><ol><li><strong>Install Pushbullet on Chrome (Different Profile)</strong><ul><li>Open Chrome in the profile where Teams notifications appear.</li><li>Install&#xA0;<strong>Pushbullet Extension</strong>&#xA0;&#x2192;&#xA0;<a rel="noopener">Chrome&#xA0;Web&#xA0;Store</a></li><li>Sign in using Google.</li></ul></li><li><strong>Install Pushbullet on Android</strong><ul><li>Download from&#xA0;<a rel="noopener">Google&#xA0;Play&#xA0;Store</a>.</li><li>Log in with the&#xA0;<strong>same Google account</strong>.</li></ul></li><li><strong>Enable Notification Mirroring</strong><ul><li>Open the&#xA0;<strong>Pushbullet Android app</strong>&#xA0;&#x2192;&#xA0;<strong>Settings</strong>&#xA0;&#x2192;&#xA0;<strong>Enable Notification Mirroring</strong>.</li><li>Select Chrome as a source app.</li></ul></li><li><strong>Test by Receiving a Teams Notification</strong><ul><li>When Teams sends a notification in Chrome, it should&#xA0;<strong>automatically appear on your Android device</strong>.</li></ul></li></ol><hr><h3 id="solution-2-use-kde-connect-open-source-alternative"><strong>Solution 2: Use KDE Connect (Open Source Alternative)</strong></h3><p>If you prefer an open-source method, KDE Connect can sync notifications between devices.</p><h4 id="steps-to-set-up-kde-connect"><strong>Steps to Set Up KDE Connect:</strong></h4><ol><li><strong>Install KDE Connect Chrome Extension</strong><ul><li>Open Chrome in the required profile.</li><li>Install&#xA0;<strong>KDE Connect Extension</strong>&#xA0;&#x2192;&#xA0;<a rel="noopener">KDE&#xA0;Connect&#xA0;Chrome</a></li></ul></li><li><strong>Install KDE Connect on Android</strong><ul><li>Download from<a href="https://play.google.com/store/apps/details?id=org.kde.kdeconnect_tp&amp;ref=parthibanrey.com" rel="noreferrer">&#xA0;Google&#xA0;Play&#xA0;Store.</a></li></ul></li><li><strong>Pair Your Devices</strong><ul><li>Open the Android app &#x2192;&#xA0;<strong>Find &amp; pair your PC</strong>.</li><li>Approve the connection on both devices.</li></ul></li><li><strong>Enable Notification Sync</strong><ul><li>On Android: Go to&#xA0;<strong>Settings &#x2192; Notification Sync &#x2192; Enable</strong>.</li><li>Select Chrome as a source.</li></ul></li></ol><p>Now, Chrome notifications (including Microsoft Teams) will be forwarded to your Android device.</p><hr><h3 id="solution-3-use-microsofts-your-phone-app-windows-users"><strong>Solution 3: Use Microsoft&apos;s &quot;Your Phone&quot; App (Windows Users)</strong></h3><p>If you&apos;re using Windows, Microsoft&#x2019;s&#xA0;<strong>Phone Link (Your Phone Companion)</strong>&#xA0;can sync Teams notifications to Android.</p><h4 id="steps"><strong>Steps:</strong></h4><ol><li><strong>Install &quot;Your Phone&quot; on Windows</strong><ul><li>Download from Microsoft Store &#x2192;&#xA0;<a href="https://www.microsoft.com/en-us/p/microsoft-your-phone/9nmpj99vjbwv?ref=parthibanrey.com" rel="noopener"><strong>Your&#xA0;Phone</strong></a></li><li>Log in with the same Microsoft account.</li></ul></li><li><strong>Install &quot;Link to Windows&quot; on Android</strong><ul><li>Download from&#xA0;<a rel="noopener">Google&#xA0;Play&#xA0;Store</a>.</li></ul></li><li><strong>Enable Notification Sync</strong><ul><li>Open &quot;Your Phone&quot; on PC &#x2192;&#xA0;<strong>Settings &#x2192; Enable Notifications</strong>.</li></ul></li></ol><p>You will now receive&#xA0;<strong>Teams notifications from your Chrome profile on your Android device</strong>.</p>]]></content:encoded></item><item><title><![CDATA[Wordpress Shared Hosting and Web Hosting for Indian Users]]></title><description><![CDATA[<p>I have been searching the internet since very long and used some of the providers hosting raja, host gator and few others in the past. But recently i figured out <a href="https://my.milesweb.com/aff.php?aff=2125&amp;ref=parthibanrey.com" rel="noreferrer">Milesweb.com</a> is a perfect fit for me and it serves my purpose of local routing which giver better response</p>]]></description><link>https://parthibanrey.com/wordpress-hosting-for-indian-users/</link><guid isPermaLink="false">67727b6ef8a27104d3d1ebf5</guid><category><![CDATA[Wordpress]]></category><category><![CDATA[WebHosting]]></category><dc:creator><![CDATA[Parthiban Rey]]></dc:creator><pubDate>Mon, 30 Dec 2024 11:04:34 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1597138768744-9f97be8cdd64?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fGRhdGFjZW50ZXJ8ZW58MHx8fHwxNzM1NTU2Mzg4fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1597138768744-9f97be8cdd64?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fGRhdGFjZW50ZXJ8ZW58MHx8fHwxNzM1NTU2Mzg4fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Wordpress Shared Hosting and Web Hosting for Indian Users"><p>I have been searching the internet since very long and used some of the providers hosting raja, host gator and few others in the past. But recently i figured out <a href="https://my.milesweb.com/aff.php?aff=2125&amp;ref=parthibanrey.com" rel="noreferrer">Milesweb.com</a> is a perfect fit for me and it serves my purpose of local routing which giver better response time and my clients are happy.</p><p>Link : <a href="https://my.milesweb.com/aff.php?aff=2125&amp;ref=parthibanrey.com" rel="noreferrer">www.milesweb.com</a></p><p>Their shared hosting Plan starts for <em>&#x20B9;</em>59/m upto <em>&#x20B9;</em>599/m when you buy for three years together and it will be beneficial , if you are planning for multiple site hosting.</p><p>The most effective plan i think is <a href="https://my.milesweb.com/aff.php?aff=2125&amp;ref=parthibanrey.com" rel="noreferrer">Elite</a> <strong><em>&#x20B9;</em>119/m </strong></p>]]></content:encoded></item><item><title><![CDATA[Wordpress ELF daemon attacks]]></title><description><![CDATA[<p></p><p>All of a sudden one of my wordpress site went down and a got a down status alert from betterstack. My first suspicion goes as some attack happened.</p><p>By drilling down the logs and status of the services I figured out that almost 10+ processes untilising high CPU and those</p>]]></description><link>https://parthibanrey.com/wordpress-elf-daemon-attacks/</link><guid isPermaLink="false">6764e15cf8a27104d3d1ebd1</guid><category><![CDATA[Tech Issues]]></category><dc:creator><![CDATA[Parthiban Rey]]></dc:creator><pubDate>Fri, 20 Dec 2024 04:05:08 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1699891730676-037bed3c1bed?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDR8fHdvcmRwcmVzc3xlbnwwfHx8fDE3MzQ2Njc0Nzh8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1699891730676-037bed3c1bed?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDR8fHdvcmRwcmVzc3xlbnwwfHx8fDE3MzQ2Njc0Nzh8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Wordpress ELF daemon attacks"><p></p><p>All of a sudden one of my wordpress site went down and a got a down status alert from betterstack. My first suspicion goes as some attack happened.</p><p>By drilling down the logs and status of the services I figured out that almost 10+ processes untilising high CPU and those are from wordpress file locations with daemon as the user and these process are running as daemons . </p><p>Eventhough i have a crontab to restart all services once in a day , irrespective of that the apache php-fpm mariadb services were down.</p><p>Realised that the high utlising process are ELF executable files and it needs to removed and the process to be killed.</p><p>Now this is started repeating and i am cleaning it up now , but how about for future ? Working on finding a permanent solution...</p><p><strong>Found ELF file</strong>: <br><br>rate_accept03<br>xml_domit_xpath<br>sp_config<br>AttrTypes<br>lib_ajax_admin<br>viva_zoom<br>config_clicks<br>forgot_mail<br>phocagallerycos<br>livehelp_step1<br>project.inc<br>database.mysqli<br>com_wrapper<br>mygroupperm<br>core.rm_auto</p><p></p><pre><code>daemon     17812  0.0  0.0   2576     0 ?        S    Dec10   0:00 sh -c /opt/bitnami/wordpress/wp-includes/art/bandarqq/sp_config &gt; /dev/null 2&gt;&amp;1
daemon     17813  3.2  0.0  22048     4 ?        R    Dec10 434:50 /opt/bitnami/wordpress/wp-includes/art/bandarqq/sp_config
daemon     19632  0.0  0.0   2576     0 ?        S    Dec10   0:00 sh -c /opt/bitnami/wordpress/wp-includes/l10n/viva_zoom &gt; /dev/null 2&gt;&amp;1
daemon     19633  3.0  0.0  22704     4 ?        R    Dec10 416:21 /opt/bitnami/wordpress/wp-includes/l10n/viva_zoom
daemon     92992  0.0  0.0   2576     0 ?        S    Dec10   0:00 sh -c /opt/bitnami/wordpress/wp-includes/php-compat/database.mysqli &gt; /dev/null 2&gt;&amp;1
daemon     92993  3.1  0.0  23360     4 ?        R    Dec10 427:14 /opt/bitnami/wordpress/wp-includes/php-compat/database.mysqli
daemon    111178  0.0  0.0   2576     0 ?        S    Dec10   0:00 sh -c /opt/bitnami/wordpress/wp-includes/images/crystal/core.rm_auto &gt; /dev/null 2&gt;&amp;1
daemon    111179  3.3  0.0  21392     4 ?        R    Dec10 441:18 /opt/bitnami/wordpress/wp-includes/images/crystal/core.rm_auto
daemon    549029  0.0  0.0   2576     0 ?        S    Dec11   0:00 sh -c /opt/bitnami/wordpress/wp-includes/js/swfupload/AttrTypes &gt; /dev/null 2&gt;&amp;1
daemon    549030  2.9  0.0  20408     4 ?        R    Dec11 380:10 /opt/bitnami/wordpress/wp-includes/js/swfupload/AttrTypes
daemon   2177938  0.0  0.0   2576     0 ?        S    Dec18   0:00 sh -c /opt/bitnami/wordpress/wp-includes/blocks/column/phocagallerycos &gt; /dev/null 2&gt;&amp;1
daemon   2177939 10.4  0.0    564     4 ?        R    Dec18 306:48 /opt/bitnami/wordpress/wp-includes/blocks/column/phocagallerycos
daemon   2224076  0.0  0.0   2576     0 ?        S    Dec18   0:00 sh -c /opt/bitnami/wordpress/wp-includes/blocks/columns/config_clicks &gt; /dev/null 2&gt;&amp;1
daemon   2224077 10.6  0.0  18932     4 ?        R    Dec18 310:11 /opt/bitnami/wordpress/wp-includes/blocks/columns/config_clicks
daemon   2346064  0.0  0.0   2576     0 ?        S    Dec18   0:00 sh -c /opt/bitnami/wordpress/wp-includes/blocks/columns/config_clicks &gt; /dev/null 2&gt;&amp;1
daemon   2346065 17.3  0.0   2696     4 ?        R    Dec18 493:15 /opt/bitnami/wordpress/wp-includes/blocks/columns/config_clicks
daemon   2427842  0.0  0.0   2576     0 ?        S    Dec18   0:00 sh -c /opt/bitnami/wordpress/wp-includes/blocks/column/phocagallerycos &gt; /dev/null 2&gt;&amp;1
daemon   2427843 15.5  0.0    400     4 ?        R    Dec18 434:56 /opt/bitnami/wordpress/wp-includes/blocks/column/phocagallerycos
daemon   2431072  0.0  0.0   2576     0 ?        S    Dec18   0:00 sh -c /opt/bitnami/wordpress/wp-admin/css/colors/ocean/xml_domit_xpath &gt; /dev/null 2&gt;&amp;1
daemon   2431074 15.6  0.0   5484     4 ?        R    Dec18 435:14 /opt/bitnami/wordpress/wp-admin/css/colors/ocean/xml_domit_xpath
daemon   2439593  0.0  0.0   2576     0 ?        S    Dec18   0:00 sh -c /opt/bitnami/wordpress/wp-admin/css/colors/ocean/xml_domit_xpath &gt; /dev/null 2&gt;&amp;1
daemon   2439594 15.6  0.0   7124     4 ?        R    Dec18 435:22 /opt/bitnami/wordpress/wp-admin/css/colors/ocean/xml_domit_xpath
daemon   2481396  0.0  0.0   2576     0 ?        S    Dec18   0:00 sh -c /opt/bitnami/wordpress/wp-includes/blocks/columns/config_clicks &gt; /dev/null 2&gt;&amp;1
daemon   2481397 15.7  0.0   2860     4 ?        R    Dec18 435:03 /opt/bitnami/wordpress/wp-includes/blocks/columns/config_clicks
daemon   2548247  0.0  0.0   2576     0 ?        S    Dec18   0:00 sh -c /opt/bitnami/wordpress/wp-includes/blocks/table/forgot_mail &gt; /dev/null 2&gt;&amp;1
daemon   2548248 11.2  0.0   3844     4 ?        R    Dec18 307:55 /opt/bitnami/wordpress/wp-includes/blocks/table/forgot_mail
daemon   2633592  0.0  0.0   2576     0 ?        S    Dec18   0:00 sh -c /opt/bitnami/wordpress/wp-admin/css/colors/ocean/xml_domit_xpath &gt; /dev/null 2&gt;&amp;1
daemon   2633593 14.5  0.0   2204     4 ?        R    Dec18 388:36 /opt/bitnami/wordpress/wp-admin/css/colors/ocean/xml_domit_xpath
daemon   2633907  0.0  0.0   2576     0 ?        S    Dec18   0:00 sh -c /opt/bitnami/wordpress/wp-includes/blocks/columns/config_clicks &gt; /dev/null 2&gt;&amp;1
daemon   2633908 14.5  0.0   2696     4 ?        R    Dec18 388:39 /opt/bitnami/wordpress/wp-includes/blocks/columns/config_clicks</code></pre>]]></content:encoded></item><item><title><![CDATA[Macbook Setup]]></title><description><![CDATA[<p></p><h3 id="oh-my-zsh-for-iterm-2">Oh My ZSH for ITerm 2</h3><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://medium.com/@satriajanaka09/setup-zsh-oh-my-zsh-powerlevel10k-on-ubuntu-20-04-c4a4052508fd?ref=parthibanrey.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Setup Zsh + Oh my Zsh + Powerlevel10k + Dracula theme with auto-suggestions and syntax-higlighting</div><div class="kg-bookmark-description">Zsh (The Z shell) is an Unix shell that can be used as an interactive login shell and as a command interpreter for shell scripting. Zsh is&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://miro.medium.com/v2/resize:fill:304:304/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156" alt><span class="kg-bookmark-author">Medium</span><span class="kg-bookmark-publisher">Satria Janaka</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://miro.medium.com/v2/resize:fit:1107/1*ZvBXl6zqOE29ekwGX85sdA.png" alt></div></a></figure><p></p><h3 id="asdf-for-multiple-runtime-manager-like-nodejs-ruby-python">asdf</h3>]]></description><link>https://parthibanrey.com/macbook-setup/</link><guid isPermaLink="false">673df038f8a27104d3d1eba8</guid><category><![CDATA[General]]></category><dc:creator><![CDATA[Parthiban Rey]]></dc:creator><pubDate>Wed, 20 Nov 2024 14:22:28 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1611186871348-b1ce696e52c9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDZ8fG1hY2Jvb2t8ZW58MHx8fHwxNzMyMTEyNDkzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1611186871348-b1ce696e52c9?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDZ8fG1hY2Jvb2t8ZW58MHx8fHwxNzMyMTEyNDkzfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Macbook Setup"><p></p><h3 id="oh-my-zsh-for-iterm-2">Oh My ZSH for ITerm 2</h3><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://medium.com/@satriajanaka09/setup-zsh-oh-my-zsh-powerlevel10k-on-ubuntu-20-04-c4a4052508fd?ref=parthibanrey.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Setup Zsh + Oh my Zsh + Powerlevel10k + Dracula theme with auto-suggestions and syntax-higlighting</div><div class="kg-bookmark-description">Zsh (The Z shell) is an Unix shell that can be used as an interactive login shell and as a command interpreter for shell scripting. Zsh is&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://miro.medium.com/v2/resize:fill:304:304/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156" alt="Macbook Setup"><span class="kg-bookmark-author">Medium</span><span class="kg-bookmark-publisher">Satria Janaka</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://miro.medium.com/v2/resize:fit:1107/1*ZvBXl6zqOE29ekwGX85sdA.png" alt="Macbook Setup"></div></a></figure><p></p><h3 id="asdf-for-multiple-runtime-manager-like-nodejs-ruby-python">asdf , for multiple runtime manager like nodejs, ruby, python</h3><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://asdf-vm.com/?ref=parthibanrey.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">asdf</div><div class="kg-bookmark-description">Manage multiple runtime versions with a single CLI tool</div><div class="kg-bookmark-metadata"><span class="kg-bookmark-author">Get Started</span></div></div></a></figure><p></p>]]></content:encoded></item><item><title><![CDATA[Google Sheet Filter Values From One Sheet To Another Sheet]]></title><description><![CDATA[<p></p><p>Let&apos;s say you have the following data in <code>Sheet1</code>:</p>
<!--kg-card-begin: html-->
<table><thead><tr><th>A</th><th>B</th><th>C</th></tr></thead><tbody><tr><td>Name</td><td>Age</td><td>Country</td></tr><tr><td>John</td><td>25</td><td>USA</td></tr><tr><td>Alice</td><td>30</td><td>UK</td></tr><tr><td>Bob</td><td>22</td><td>Canada</td></tr><tr><td>Charlie</td><td>25</td><td>USA</td></tr></tbody></table>
<!--kg-card-end: html-->
<p>You want to filter this data to show only the rows where the <code>Country</code> is &quot;USA&quot;.</p><p>In <code>FilteredSheet</code>, enter</p>]]></description><link>https://parthibanrey.com/google-sheet-filter-values-from-one-sheet-to-another-sheet/</link><guid isPermaLink="false">66b37a43f8a27104d3d1eb91</guid><category><![CDATA[Google Sheet]]></category><dc:creator><![CDATA[Parthiban Rey]]></dc:creator><pubDate>Wed, 07 Aug 2024 13:47:36 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1599658880436-c61792e70672?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDE2fHxnb29nbGUlMjBkb2NzfGVufDB8fHx8MTcyMzAzODQ4M3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1599658880436-c61792e70672?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDE2fHxnb29nbGUlMjBkb2NzfGVufDB8fHx8MTcyMzAzODQ4M3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Google Sheet Filter Values From One Sheet To Another Sheet"><p></p><p>Let&apos;s say you have the following data in <code>Sheet1</code>:</p>
<!--kg-card-begin: html-->
<table><thead><tr><th>A</th><th>B</th><th>C</th></tr></thead><tbody><tr><td>Name</td><td>Age</td><td>Country</td></tr><tr><td>John</td><td>25</td><td>USA</td></tr><tr><td>Alice</td><td>30</td><td>UK</td></tr><tr><td>Bob</td><td>22</td><td>Canada</td></tr><tr><td>Charlie</td><td>25</td><td>USA</td></tr></tbody></table>
<!--kg-card-end: html-->
<p>You want to filter this data to show only the rows where the <code>Country</code> is &quot;USA&quot;.</p><p>In <code>FilteredSheet</code>, enter the following formula in cell <code>A1</code>:</p><p><code>FILTER(Sheet1!A:C, Sheet1!C:C = &quot;USA&quot;)</code><br></p><p>This will filter and display only the rows where the <code>Country</code> is &quot;USA&quot; in the <code>FilteredSheet</code>.</p><h3 id="explanation">Explanation:</h3><ul><li><code>FILTER(range, condition)</code>: The <code>FILTER</code> function takes two arguments: the range of data to filter and the condition to apply.</li><li><code>Sheet1!A:C</code>: This specifies the range of data in <code>Sheet1</code> from columns A to C.</li><li><code>Sheet1!C:C = &quot;USA&quot;</code>: This specifies the condition to filter the data where the values in column C are &quot;USA&quot;.</li></ul>]]></content:encoded></item><item><title><![CDATA[Wordpress site went down due to bots and crawlers like facebookexternalhit  and mj12bot]]></title><description><![CDATA[<p></p><p>One of my wordpress site went down 20 days back  and it is in the construction phase so i was less cared and didn&apos;t check for a while.</p><p>Last weekend I just tried to ssh the server and could not connect to it which is hosted in aws</p>]]></description><link>https://parthibanrey.com/wordpress-down-due-to-bots-and-crawlers/</link><guid isPermaLink="false">66852b68f8a27104d3d1eb66</guid><category><![CDATA[Tech Issues]]></category><dc:creator><![CDATA[Parthiban Rey]]></dc:creator><pubDate>Wed, 03 Jul 2024 10:57:42 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1585378335564-c220f04a9ad0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDh8fGJvdCUyMHZpcnVzJTIwYXR0YWN8ZW58MHx8fHwxNzIwMDA0MjEwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1585378335564-c220f04a9ad0?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDh8fGJvdCUyMHZpcnVzJTIwYXR0YWN8ZW58MHx8fHwxNzIwMDA0MjEwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Wordpress site went down due to bots and crawlers like facebookexternalhit  and mj12bot"><p></p><p>One of my wordpress site went down 20 days back  and it is in the construction phase so i was less cared and didn&apos;t check for a while.</p><p>Last weekend I just tried to ssh the server and could not connect to it which is hosted in aws lightsail. I restarted the server and after 5 mins I got into the server and checked all the services like webmin, mysqld etc. Everything looks fine and the site came up and was able to browse the pages. But, after 5 mins again it went down and I went and checked I was able to ssh and was curious is there any malicious script is blocking the site or keeping the server busy, got no clue.</p><p>Finally today I found in the access log of the site and understood that it was under attack by crawlers and bots of  <code>facebookexternalhit</code>  and <code>mj12bot</code> .  With the below given links I was not able to bring down the traffic. Like htaccess or robots.txt file did not help.</p><pre><code>85.208.96.204 - - [03/Jul/2024:04:41:48 +0000] &quot;GET /shop/page/1/?filter_flavor=robust%2Chigh%2Cvery-low%2Coriginal%2Csugar-free%2Clow&amp;lay_style=3&amp;query_typ
e_flavor=or&amp;shop_layout=4 HTTP/1.1&quot; 301 4326 &quot;-&quot; &quot;Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)&quot;
95.91.111.56 - - [03/Jul/2024:04:41:47 +0000] &quot;GET /size/5-5oz-20-servings/?filter_flavor=sugar-free,very-low&amp;query_type_flavor=or&amp;lay_style=1 HTTP/1.1&quot; 200
 252260 &quot;-&quot; &quot;Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/)&quot;</code></pre><p><a href="https://webmasters.stackexchange.com/questions/129316/trying-to-determine-if-bot-crawling-my-site-is-malicious-mj12bot?ref=parthibanrey.com">https://webmasters.stackexchange.com/questions/129316/trying-to-determine-if-bot-crawling-my-site-is-malicious-mj12bot</a></p><p><a href="https://wordpress.org/support/topic/facebookexternalhit-1-1-thousands-of-requests/?ref=parthibanrey.com">https://wordpress.org/support/topic/facebookexternalhit-1-1-thousands-of-requests/</a></p><p><a href="https://stackoverflow.com/questions/9773954/why-facebook-is-flooding-my-site?ref=parthibanrey.com">https://stackoverflow.com/questions/9773954/why-facebook-is-flooding-my-site</a></p><p><a href="https://developers.facebook.com/community/threads/974370274080457/?ref=parthibanrey.com">https://developers.facebook.com/community/threads/974370274080457/</a></p><p>We hosted our dns in cloudflare and it sparked the idea to explore and see any option for this. Found the WAF rules will help to sort the issue . Configured the custom rules to block the useragent of above mentioned bots. Still the traffic did not came down. After a while understood that to use the cloudflare rules , I should enable the proxy in DNS entries. Soon after this the traffic literally came down and I could see there are no entries anymore regarding the bots. Uff !!! </p><p>If any of you face such issues do let me know in the comments how did you solve or even you can suggest good solutions to the above said issue.</p>]]></content:encoded></item><item><title><![CDATA[Sample App: Spring Boot Rest API Example With Dockerfile - Java]]></title><description><![CDATA[<p>In the recent days I always wanted to have a Sample app or an example app which should expose Rest API and also it should be dockerised.</p><p>Eventhough there are many source codes available in github it hardly works as certain dependencies might have been outdated. Hence I found a</p>]]></description><link>https://parthibanrey.com/spring-boot-rest-api-example-with-dockerfile/</link><guid isPermaLink="false">6673b619f8a27104d3d1eb4d</guid><dc:creator><![CDATA[Parthiban Rey]]></dc:creator><pubDate>Thu, 20 Jun 2024 05:10:08 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1495508348712-216a17cfbbc4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDJ8fGRvY2tlciUyMGJ1aWxkfGVufDB8fHx8MTcxODg2MDE5M3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1495508348712-216a17cfbbc4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDJ8fGRvY2tlciUyMGJ1aWxkfGVufDB8fHx8MTcxODg2MDE5M3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Sample App: Spring Boot Rest API Example With Dockerfile - Java"><p>In the recent days I always wanted to have a Sample app or an example app which should expose Rest API and also it should be dockerised.</p><p>Eventhough there are many source codes available in github it hardly works as certain dependencies might have been outdated. Hence I found a recent code , forked and created my own dockerfile and tested with a docker compose.</p><p>So anyone can use this source code to test RestAPI , docker deployments for CICD, or practise for ECS and Kuberenetes deployments with any managed services like EKS, AKS,  GKE</p><p>Repo Url:  <a href="https://github.com/reyparthi/springboot_crud_postgres?ref=parthibanrey.com">https://github.com/reyparthi/springboot_crud_postgres</a></p><p>From the Readme</p><h3 id="prerequisite">Prerequisite</h3><p><a href="https://github.com/reyparthi/springboot_crud_postgres?ref=parthibanrey.com#prerequisite"></a></p><p>Docker Desktop</p><h3 id="test-in-local">Test in Local</h3><p><a href="https://github.com/reyparthi/springboot_crud_postgres?ref=parthibanrey.com#test-in-local"></a></p><p>docker compose up -d</p><p>By using postman or curl you can verify the app,</p><pre><code>GET: http://localhost:8080/api/v1/employees
</code></pre><pre><code>POST: http://localhost:8080/api/v1/employees

{
    &quot;firstName&quot; : &#x201C;Test&#x201D;,
    &quot;lastName&quot; : &#x201C;User&#x201D;,
    &quot;email&quot; : &#x201C;testemail@example.app&quot;
}</code></pre><p>If the Post creation works , then you can also verify the postgres db for entries in the employee table.</p><p>If you have any queries do post in the comment , I am happy to help.</p>]]></content:encoded></item><item><title><![CDATA[Why Disposable or Temporary Email Address]]></title><description><![CDATA[<p>Disposable email addresses are temporary email addresses that self-destruct after a certain period or after a single use. They serve various purposes:</p><ol><li><strong>Spam Prevention</strong>: Disposable emails can be used to avoid spam. When you need to register for a service or website that you suspect might send unwanted emails, a</li></ol>]]></description><link>https://parthibanrey.com/why-temporary-email-address/</link><guid isPermaLink="false">665d9e5ff8a27104d3d1eb3a</guid><category><![CDATA[General]]></category><dc:creator><![CDATA[Parthiban Rey]]></dc:creator><pubDate>Mon, 03 Jun 2024 10:46:50 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1603791452906-af1740e171bc?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDJ8fGRpc3Bvc2FibGUlMjBlbWFpbHxlbnwwfHx8fDE3MTc0MTE0OTl8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1603791452906-af1740e171bc?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDJ8fGRpc3Bvc2FibGUlMjBlbWFpbHxlbnwwfHx8fDE3MTc0MTE0OTl8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Why Disposable or Temporary Email Address"><p>Disposable email addresses are temporary email addresses that self-destruct after a certain period or after a single use. They serve various purposes:</p><ol><li><strong>Spam Prevention</strong>: Disposable emails can be used to avoid spam. When you need to register for a service or website that you suspect might send unwanted emails, a disposable email can keep your primary inbox clean.</li><li><strong>Privacy Protection</strong>: Using a disposable email can help protect your identity and personal information. If you don&apos;t trust a website or service with your real email, a disposable email provides an extra layer of privacy.</li><li><strong>Testing and Development</strong>: Developers and testers use disposable emails to test applications, especially those that require email verification. This avoids cluttering real email accounts with test data.</li><li><strong>Temporary Use</strong>: For one-time transactions or short-term engagements, such as signing up for a newsletter to get a discount code, a disposable email is convenient and practical.</li><li><strong>Reducing Digital Footprint</strong>: By using disposable emails, you can reduce your digital footprint and avoid having your personal email address stored in numerous databases, which could be vulnerable to data breaches.</li><li><strong>Avoiding Subscription Overload</strong>: When signing up for multiple services or newsletters, disposable emails can help manage and limit the influx of emails to your main inbox.</li></ol><p>Despite these advantages, it&apos;s important to note that some services block or limit the use of disposable emails to ensure genuine sign-ups and reduce misuse.<br><br>Some of the famous service I use are</p><ol><li><a href="https://wowmail.app/?ref=parthibanrey.com" rel="noreferrer">https://wowmail.app </a></li><li><a href="https://yopmail.com/?ref=parthibanrey.com" rel="noreferrer">https://yopmail.com</a></li></ol><p></p>]]></content:encoded></item><item><title><![CDATA[Articles Read Later]]></title><description><![CDATA[<p></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://opensauced.pizza/blog/how-we-saved-thousands-of-dollars-deploying-low-cost-open-source-ai-technologies?ref=dailydev"><div class="kg-bookmark-content"><div class="kg-bookmark-title">How We Saved 10s of Thousands of Dollars Deploying Low Cost Open Source AI Technologies At Scale with Kubernetes</div><div class="kg-bookmark-description">Scaling up generative AI operations can be costly. At OpenSauced, we faced this challenge while building StarSearch, until we found a low cost solution to deploy an OpenAI-compatible API using open</div></div></a></figure>]]></description><link>https://parthibanrey.com/articles-read-later/</link><guid isPermaLink="false">6644a22ef8a27104d3d1ea81</guid><category><![CDATA[Read Later]]></category><dc:creator><![CDATA[Parthiban Rey]]></dc:creator><pubDate>Wed, 15 May 2024 11:54:36 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1585829365295-ab7cd400c167?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDV8fGFydGljbGVzfGVufDB8fHx8MTcxNTc3NDAwN3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1585829365295-ab7cd400c167?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDV8fGFydGljbGVzfGVufDB8fHx8MTcxNTc3NDAwN3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Articles Read Later"><p></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://opensauced.pizza/blog/how-we-saved-thousands-of-dollars-deploying-low-cost-open-source-ai-technologies?ref=dailydev"><div class="kg-bookmark-content"><div class="kg-bookmark-title">How We Saved 10s of Thousands of Dollars Deploying Low Cost Open Source AI Technologies At Scale with Kubernetes</div><div class="kg-bookmark-description">Scaling up generative AI operations can be costly. At OpenSauced, we faced this challenge while building StarSearch, until we found a low cost solution to deploy an OpenAI-compatible API using open source technology.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://opensauced.pizza/favicon.svg" alt="Articles Read Later"><span class="kg-bookmark-author">The Future of Open Source Collaboration is Here: Meet StarSearch</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.sanity.io/images/r7m53vrk/production/a329087041f0219d5a861a5cc26582297b591824-800x800.jpg" alt="Articles Read Later"></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://mattermost.com/blog/making-a-postgres-query-1000-times-faster/?ref=dailydev"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Making a Postgres query 1,000 times faster</div><div class="kg-bookmark-description">Learn how we discovered what was slowing down large database queries, and what we did to make Postgres queries 1000x faster.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://mattermost.com/wp-content/themes/mattermost-2021/frontend/dist/img/favicon/v2/apple-touch-icon.png" alt="Articles Read Later"><span class="kg-bookmark-author">Mattermost.com</span><span class="kg-bookmark-publisher">Alejandro Garc&#xED;a Montoro</span></div></div><div class="kg-bookmark-thumbnail"><img src="http://mattermost.com/wp-content/uploads/2024/05/03_Postgres_Faster@2x.png" alt="Articles Read Later"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[Softwares - Open Source Schedulers , Caprover, Luigi]]></title><description><![CDATA[<p></p><p>Heroku Alternatives</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://dokku.com/?ref=parthibanrey.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Dokku - The smallest PaaS implementation you&#x2019;ve ever seen</div><div class="kg-bookmark-description"></div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.4/docs/assets/favicons/apple-touch-icon-180x180.png" alt><span class="kg-bookmark-author">Dokku</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://dokku.com/assets/dokku-logo.svg" alt></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://caprover.com/?ref=parthibanrey.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">CapRover &#xB7; Scalable, Free and Self-hosted PaaS!</div><div class="kg-bookmark-description">Scalable, Free and Self-hosted PaaS!</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://caprover.com/img/favicon.ico" alt></div></div><div class="kg-bookmark-thumbnail"><img src="https://caprover.com/img/logo.png" alt></div></a></figure><p></p><p>Sql Based Api </p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://tools.latitude.so/?ref=parthibanrey.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Latitude | Developer-first embedded analytics</div><div class="kg-bookmark-description">Latitude is an embedded analytics framework designed with developers in mind. It integrates seamlessly with your database</div></div></a></figure>]]></description><link>https://parthibanrey.com/softwares-i-explored-open-source-schedulers/</link><guid isPermaLink="false">6641b6c3f8a27104d3d1ea5e</guid><category><![CDATA[Softwares Explored]]></category><dc:creator><![CDATA[Parthiban Rey]]></dc:creator><pubDate>Mon, 13 May 2024 06:46:19 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1611162617213-7d7a39e9b1d7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDJ8fGFwcHN8ZW58MHx8fHwxNzE1NTgyNzQxfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1611162617213-7d7a39e9b1d7?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDJ8fGFwcHN8ZW58MHx8fHwxNzE1NTgyNzQxfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Softwares - Open Source Schedulers , Caprover, Luigi"><p></p><p>Heroku Alternatives</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://dokku.com/?ref=parthibanrey.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Dokku - The smallest PaaS implementation you&#x2019;ve ever seen</div><div class="kg-bookmark-description"></div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.4/docs/assets/favicons/apple-touch-icon-180x180.png" alt="Softwares - Open Source Schedulers , Caprover, Luigi"><span class="kg-bookmark-author">Dokku</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://dokku.com/assets/dokku-logo.svg" alt="Softwares - Open Source Schedulers , Caprover, Luigi"></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://caprover.com/?ref=parthibanrey.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">CapRover &#xB7; Scalable, Free and Self-hosted PaaS!</div><div class="kg-bookmark-description">Scalable, Free and Self-hosted PaaS!</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://caprover.com/img/favicon.ico" alt="Softwares - Open Source Schedulers , Caprover, Luigi"></div></div><div class="kg-bookmark-thumbnail"><img src="https://caprover.com/img/logo.png" alt="Softwares - Open Source Schedulers , Caprover, Luigi"></div></a></figure><p></p><p>Sql Based Api </p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://tools.latitude.so/?ref=parthibanrey.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Latitude | Developer-first embedded analytics</div><div class="kg-bookmark-description">Latitude is an embedded analytics framework designed with developers in mind. It integrates seamlessly with your database or data warehouse, leveraging SQL and straightforward frontend components.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://framerusercontent.com/images/SyEIguESGDBQFj4fhucvbz9xw.png" alt="Softwares - Open Source Schedulers , Caprover, Luigi"><span class="kg-bookmark-author">Developer-first embedded analytics</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://framerusercontent.com/assets/MIFkbzcEz2NsVy7ptXPPdMcrc8.png" alt="Softwares - Open Source Schedulers , Caprover, Luigi"></div></a></figure><p></p><p>Open source Schedulers</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/jhuckaby/Cronicle?ref=parthibanrey.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">GitHub - jhuckaby/Cronicle: A simple, distributed task scheduler and runner with a web based UI.</div><div class="kg-bookmark-description">A simple, distributed task scheduler and runner with a web based UI. - jhuckaby/Cronicle</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" alt="Softwares - Open Source Schedulers , Caprover, Luigi"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">jhuckaby</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/90f11e849c8069c8069dbb3a2489bbf1cd775bde706dcd253c438b01191b36f6/jhuckaby/Cronicle" alt="Softwares - Open Source Schedulers , Caprover, Luigi"></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://cronicle.net/?ref=parthibanrey.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Cronicle</div><div class="kg-bookmark-description">A simple distributed task scheduler and runner.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://cronicle.net/favicon.ico" alt="Softwares - Open Source Schedulers , Caprover, Luigi"><span class="kg-bookmark-publisher">Joseph Huckaby</span></div></div></a></figure><p></p><p><a href="https://dolphinscheduler.apache.org/en-us?ref=parthibanrey.com">https://dolphinscheduler.apache.org/en-us</a><br></p><p>Apache DolphinScheduler is a distributed and extensible open-source workflow orchestration platform with powerful DAG visual interfaces</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://luigi.readthedocs.io/en/latest/?ref=parthibanrey.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Getting Started &#x2014; Luigi 3.5.0 documentation</div><div class="kg-bookmark-description"></div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://luigi.readthedocs.io/favicon.ico" alt="Softwares - Open Source Schedulers , Caprover, Luigi"><span class="kg-bookmark-author">Luigi</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://raw.githubusercontent.com/spotify/luigi/master/doc/luigi.png" alt="Softwares - Open Source Schedulers , Caprover, Luigi"></div></a></figure><p>Luigi is a Python (3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 tested) package that helps you build complex pipelines of batch jobs. It handles dependency resolution, workflow management, visualization, handling failures, command line integration, and much more</p>]]></content:encoded></item><item><title><![CDATA[FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory]]></title><description><![CDATA[<p></p><p>Github Action gives my this error for the last &quot;run: npm run build&quot;</p><pre><code class="language-vhdl">FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
Error: Process completed with exit code 1.</code></pre><p></p><p>Solution is to update the workflow with these additional details</p><p><code>run</code></p><pre><code class="language-yaml">jobs:
  make-love:
    steps:
      -</code></pre>]]></description><link>https://parthibanrey.com/fatal-error-reached-heap-limit-allocation-failed-javascript-heap-out-of-memory/</link><guid isPermaLink="false">663c70f7f8a27104d3d1ea4b</guid><category><![CDATA[Tech Issues]]></category><dc:creator><![CDATA[Parthiban Rey]]></dc:creator><pubDate>Thu, 09 May 2024 06:47:01 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1633356122544-f134324a6cee?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDd8fGphdmFzY3JpcHR8ZW58MHx8fHwxNzE1MjM3MTE4fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1633356122544-f134324a6cee?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDd8fGphdmFzY3JpcHR8ZW58MHx8fHwxNzE1MjM3MTE4fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory"><p></p><p>Github Action gives my this error for the last &quot;run: npm run build&quot;</p><pre><code class="language-vhdl">FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
Error: Process completed with exit code 1.</code></pre><p></p><p>Solution is to update the workflow with these additional details</p><p><code>run</code></p><pre><code class="language-yaml">jobs:
  make-love:
    steps:
      - name: &quot;Just do it&quot;
        run: |
        export NODE_OPTIONS=&quot;--max_old_space_size=4096&quot;
        npm start
</code></pre><p><code>env</code></p><pre><code class="language-yaml">jobs:
  make-love:
    steps:
      - name: &quot;Nothing is impossible&quot;
        env:
          NODE_OPTIONS: &quot;--max_old_space_size=4096&quot;
        run: npm start</code></pre>]]></content:encoded></item><item><title><![CDATA[Software Tools]]></title><description><![CDATA[<p></p><p>gzip for mac - <a href="https://support.apple.com/en-in/guide/terminal/apdc52250ee-4659-4751-9a3a-8b7988150530/mac?ref=parthibanrey.com">https://support.apple.com/en-in/guide/terminal/apdc52250ee-4659-4751-9a3a-8b7988150530/mac</a></p>]]></description><link>https://parthibanrey.com/software-tools/</link><guid isPermaLink="false">663b0e29f8a27104d3d1ea40</guid><dc:creator><![CDATA[Parthiban Rey]]></dc:creator><pubDate>Wed, 08 May 2024 05:31:43 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1636955903101-d6b4b926018c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDQxfHxzb2Z0d2FyZSUyMGFwcHN8ZW58MHx8fHwxNzE2OTk5MjM2fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1636955903101-d6b4b926018c?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDQxfHxzb2Z0d2FyZSUyMGFwcHN8ZW58MHx8fHwxNzE2OTk5MjM2fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Software Tools"><p></p><p>gzip for mac - <a href="https://support.apple.com/en-in/guide/terminal/apdc52250ee-4659-4751-9a3a-8b7988150530/mac?ref=parthibanrey.com">https://support.apple.com/en-in/guide/terminal/apdc52250ee-4659-4751-9a3a-8b7988150530/mac</a></p>]]></content:encoded></item><item><title><![CDATA[Calculate Average By Group or Unique Columns in Google Sheet]]></title><description><![CDATA[<p>For the below list of values I want to group by Coin(Market) and Average the values ( Price) of each coin .</p><figure class="kg-card kg-image-card"><img src="https://parthibanrey.com/content/images/2024/04/Screenshot-2024-04-30-at-7.53.20-PM.png" class="kg-image" alt loading="lazy" width="1144" height="494" srcset="https://parthibanrey.com/content/images/size/w600/2024/04/Screenshot-2024-04-30-at-7.53.20-PM.png 600w, https://parthibanrey.com/content/images/size/w1000/2024/04/Screenshot-2024-04-30-at-7.53.20-PM.png 1000w, https://parthibanrey.com/content/images/2024/04/Screenshot-2024-04-30-at-7.53.20-PM.png 1144w" sizes="(min-width: 720px) 720px"></figure><p>First I have to get the Coins in Unique and we can use the below formula</p><pre><code>=UNIQUE(B7:B14)</code></pre><p>The result is </p><p></p>
<!--kg-card-begin: html-->
<img src="https://parthibanrey.com/content/images/2024/04/Screenshot-2024-04-30-at-7.52.38-PM.png" max-height="40px !important">

<!--kg-card-end: html-->
<p></p><p>Now I have to calculate the average</p>]]></description><link>https://parthibanrey.com/calculate-average-by-group-or-unique-columns-in-google-sheet/</link><guid isPermaLink="false">6630fe0af8a27104d3d1ea15</guid><category><![CDATA[Google Sheet]]></category><dc:creator><![CDATA[Parthiban Rey]]></dc:creator><pubDate>Tue, 30 Apr 2024 14:29:08 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1658203897339-0b8c64a42fba?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDE1fHxleGNlbHxlbnwwfHx8fDE3MTQ0Mjc0MTV8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1658203897339-0b8c64a42fba?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDE1fHxleGNlbHxlbnwwfHx8fDE3MTQ0Mjc0MTV8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Calculate Average By Group or Unique Columns in Google Sheet"><p>For the below list of values I want to group by Coin(Market) and Average the values ( Price) of each coin .</p><figure class="kg-card kg-image-card"><img src="https://parthibanrey.com/content/images/2024/04/Screenshot-2024-04-30-at-7.53.20-PM.png" class="kg-image" alt="Calculate Average By Group or Unique Columns in Google Sheet" loading="lazy" width="1144" height="494" srcset="https://parthibanrey.com/content/images/size/w600/2024/04/Screenshot-2024-04-30-at-7.53.20-PM.png 600w, https://parthibanrey.com/content/images/size/w1000/2024/04/Screenshot-2024-04-30-at-7.53.20-PM.png 1000w, https://parthibanrey.com/content/images/2024/04/Screenshot-2024-04-30-at-7.53.20-PM.png 1144w" sizes="(min-width: 720px) 720px"></figure><p>First I have to get the Coins in Unique and we can use the below formula</p><pre><code>=UNIQUE(B7:B14)</code></pre><p>The result is </p><p></p>
<!--kg-card-begin: html-->
<img src="https://parthibanrey.com/content/images/2024/04/Screenshot-2024-04-30-at-7.52.38-PM.png" max-height="40px !important" alt="Calculate Average By Group or Unique Columns in Google Sheet">

<!--kg-card-end: html-->
<p></p><p>Now I have to calculate the average of each coins that i purchased, for that I can apply the below formulat using AVERAGEIF</p><pre><code>=AVERAGEIF($B$7:$B$14, H7, $D$7:$D$14)</code></pre>
<!--kg-card-begin: html-->
<img src="https://parthibanrey.com/content/images/2024/04/telegram-cloud-photo-size-5-6163627062078848350-x.jpg" max-height="80px !important" alt="Calculate Average By Group or Unique Columns in Google Sheet">
<!--kg-card-end: html-->
]]></content:encoded></item></channel></rss>