<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts | Ukant Jadia</title><link>https://ukantjadia.github.io/post/</link><atom:link href="https://ukantjadia.github.io/post/index.xml" rel="self" type="application/rss+xml"/><description>Posts</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Tue, 27 Oct 2026 04:47:00 +0530</lastBuildDate><image><url>https://ukantjadia.github.io/media/icon_hu5e29e1df12b63ca0c9252c8db4842f1b_8915_512x512_fill_lanczos_center_3.png</url><title>Posts</title><link>https://ukantjadia.github.io/post/</link></image><item><title>403 vs 404: Why GitHub Hides Private Repos</title><link>https://ukantjadia.github.io/post/403-vs-404-github-private-repos/</link><pubDate>Tue, 27 Oct 2026 04:47:00 +0530</pubDate><guid>https://ukantjadia.github.io/post/403-vs-404-github-private-repos/</guid><description>&lt;p>One letter.&lt;/p>
&lt;p>Cacti, an open-source network monitoring tool, answered a failed login with &amp;ldquo;Login failed&amp;rdquo; when the username existed and &amp;ldquo;Login Failed&amp;rdquo; when it didn&amp;rsquo;t. That capital F told anyone guessing which accounts were real. It became a public vulnerability, CVE-2026-49442, on October 23, 2026.&lt;/p>
&lt;p>GitHub closed this hole long ago. I just didn&amp;rsquo;t notice.&lt;/p>
&lt;p>I have private repos on GitHub. Log out, open one, and GitHub says it doesn&amp;rsquo;t exist. For years I read that as a glitch. A few months ago I finally asked why, and the answer was simple: it isn&amp;rsquo;t broken. It&amp;rsquo;s lying to me on purpose.&lt;/p>
&lt;h2 id="403-vs-404-what-each-answer-tells-the-caller">403 vs 404: what each answer tells the caller&lt;/h2>
&lt;p>There are two ways for a server to say no.&lt;/p>
&lt;p>403 Forbidden means &amp;ldquo;it&amp;rsquo;s here, but not for you.&amp;rdquo; 404 Not Found means &amp;ldquo;there&amp;rsquo;s nothing here.&amp;rdquo;&lt;/p>
&lt;p>A 403 is a locked door, and a locked door proves there&amp;rsquo;s a room. A 404 is a wall.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;/th>
&lt;th>403 Forbidden&lt;/th>
&lt;th>404 Not Found&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>What the caller learns&lt;/td>
&lt;td>It exists, but you can&amp;rsquo;t have it&lt;/td>
&lt;td>Nothing is here&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Confirms the thing exists?&lt;/td>
&lt;td>Yes&lt;/td>
&lt;td>No&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Use it when&lt;/td>
&lt;td>The caller can fix it, for example by logging in&lt;/td>
&lt;td>Even knowing it exists is a secret&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Two cards. 403 Forbidden: a stranger learns something real is here. 404 Not Found: a stranger learns nothing at all." srcset="
/post/403-vs-404-github-private-repos/01b-two-answers_huf1f01eeb36e659960df90d5abc331a32_65022_8898d1f95f0467d0761237e03d279034.webp 400w,
/post/403-vs-404-github-private-repos/01b-two-answers_huf1f01eeb36e659960df90d5abc331a32_65022_cefea37d08588e7b95ae65b410048411.webp 760w,
/post/403-vs-404-github-private-repos/01b-two-answers_huf1f01eeb36e659960df90d5abc331a32_65022_1200x1200_fit_q75_h2_lanczos_2.webp 1200w"
src="https://ukantjadia.github.io/post/403-vs-404-github-private-repos/01b-two-answers_huf1f01eeb36e659960df90d5abc331a32_65022_8898d1f95f0467d0761237e03d279034.webp"
width="608"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="why-github-returns-404-for-private-repos">Why GitHub returns 404 for private repos&lt;/h2>
&lt;p>GitHub chose the wall, and it says why in one sentence on a troubleshooting page almost nobody reads. It answers 404 &amp;ldquo;instead of a 403 Forbidden response to avoid confirming the existence of private repositories.&amp;rdquo;&lt;/p>
&lt;p>This isn&amp;rsquo;t a hack. The HTTP standard allows it. RFC 9110 says a server that wants to &amp;ldquo;hide&amp;rdquo; a forbidden resource &amp;ldquo;MAY instead respond with a status code of 404.&amp;rdquo;&lt;/p>
&lt;p>And there&amp;rsquo;s a lot behind that wall. In GitHub&amp;rsquo;s Octoverse 2025 report, 81.5% of all contributions happened in private repos. Most of GitHub is wall.&lt;/p>
&lt;h2 id="try-it-open-a-private-repo-while-logged-out">Try it: open a private repo while logged out&lt;/h2>
&lt;p>Here&amp;rsquo;s how solid the wall is. Logged out, I asked GitHub for one of my private repos and for a name nobody owns. Both came back exactly the same, byte for byte: 404 Not Found, 132 bytes long.&lt;/p>
&lt;p>The website does the same. Both pages show an identical &amp;ldquo;Page not found&amp;rdquo;. From the outside, my private repo and a typo are the same thing.&lt;/p>
&lt;video autoplay muted loop playsinline controls >
&lt;source src="https://ukantjadia.github.io/post/403-vs-404-github-private-repos/01e-terminals.mp4" type="video/mp4">
&lt;/video>
&lt;h2 id="should-you-return-403-or-404">Should you return 403 or 404?&lt;/h2>
&lt;p>Not always 404. The wall has a cost, and the owner pays it too.&lt;/p>
&lt;p>Logged out, I get the same &amp;ldquo;doesn&amp;rsquo;t exist&amp;rdquo; for my own repo. So does a teammate who forgot to sign in. GitHub&amp;rsquo;s own troubleshooting page has to remind people that if they know it exists, &amp;ldquo;you should check your authentication.&amp;rdquo;&lt;/p>
&lt;p>So choose on purpose. Return 403 when the caller can fix the problem, usually by logging in, and telling them helps. Return 404 when even knowing the thing exists is the secret: a private repo, someone else&amp;rsquo;s invoice, an email that may or may not have an account.&lt;/p>
&lt;p>That last one has a name: enumeration. Guess names, watch the answers, keep the ones that come back different. Make 1,000 guesses against a server that says 403, and you walk away with a list of every name that&amp;rsquo;s real. Make them against GitHub, and you walk away with 1,000 identical answers. It&amp;rsquo;s the attack the wall stops.&lt;/p>
&lt;h2 id="what-a-404-alone-does-not-hide">What a 404 alone does not hide&lt;/h2>
&lt;p>The status code is one part of the answer. Everything around it has to match too.&lt;/p>
&lt;p>&lt;strong>The body.&lt;/strong> Cacti&amp;rsquo;s leak wasn&amp;rsquo;t a status code at all. It was this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-diff" data-lang="diff">&lt;span class="line">&lt;span class="cl">&lt;span class="gd">- Login failed &amp;lt;- the user exists
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gd">&lt;/span>&lt;span class="gi">+ Login Failed &amp;lt;- the user does not exist
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Other pages.&lt;/strong> One page can follow the rule while another forgets it. Every page that touches the private thing has to give the same answer.&lt;/p>
&lt;p>&lt;strong>The clock.&lt;/strong> If &amp;ldquo;private&amp;rdquo; takes longer to answer than &amp;ldquo;missing&amp;rdquo;, a stopwatch gives the secret away, whatever the status code says.&lt;/p>
&lt;h2 id="how-we-use-it-githubs-wall-around-our-posters">How we use it: GitHub&amp;rsquo;s wall, around our posters&lt;/h2>
&lt;p>Our posters go to business owners, so two things on our side are private: the artwork, and the list of who it&amp;rsquo;s for. We built a private link that knows the difference. It hands over the artwork. It never hands over the list. And everything it refuses gets the same 404.&lt;/p>
&lt;p>It&amp;rsquo;s the same wall GitHub puts in front of a private repo, rebuilt around our posters.&lt;/p>
&lt;video autoplay muted loop playsinline controls >
&lt;source src="https://ukantjadia.github.io/post/403-vs-404-github-private-repos/01d-door.mp4" type="video/mp4">
&lt;/video>
&lt;p>&lt;em>Four requests reach the private link. Only the artwork gets through. The recipient list, a wrong link and anything else all hit the same 404.&lt;/em>&lt;/p>
&lt;h2 id="how-to-return-404-instead-of-403">How to return 404 instead of 403&lt;/h2>
&lt;p>OWASP, the Open Worldwide Application Security Project, gives the same advice: &amp;ldquo;map both cases to the same public response, such as a 404.&amp;rdquo; In plain words, your app needs one rule:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">When someone asks for a file:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> it doesn&amp;#39;t exist -&amp;gt; &amp;#34;404 Not Found&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> it isn&amp;#39;t theirs -&amp;gt; &amp;#34;404 Not Found&amp;#34; (the same answer)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> it&amp;#39;s theirs -&amp;gt; here it is
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Every web framework can do this in a few lines. The trick is to look up only what belongs to the person asking, so &amp;ldquo;not yours&amp;rdquo; and &amp;ldquo;doesn&amp;rsquo;t exist&amp;rdquo; become the same answer automatically.&lt;/p>
&lt;p>Then check it. Sign in as a normal user, ask for something that belongs to someone else, then ask for something that doesn&amp;rsquo;t exist. If the two answers match word for word, nothing leaks. When I tested a deliberately broken version, both answers were 22 bytes long, but one said &amp;ldquo;Forbidden&amp;rdquo; and the other &amp;ldquo;Not Found&amp;rdquo;. Same size, different meaning. Compare the words, not the size.&lt;/p>
&lt;p>If you do one thing after reading this, run that check on your own app.&lt;/p>
&lt;h2 id="where-else-this-applies">Where else this applies&lt;/h2>
&lt;p>Anywhere a &amp;ldquo;no&amp;rdquo; could confirm that something exists:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Password reset.&lt;/strong> Say &amp;ldquo;If that email has an account, we&amp;rsquo;ve sent a link,&amp;rdquo; whether it has one or not.&lt;/li>
&lt;li>&lt;strong>Invite and share links.&lt;/strong> A wrong or expired link should look exactly like one that never existed.&lt;/li>
&lt;li>&lt;strong>Admin pages.&lt;/strong> An &lt;code>/admin&lt;/code> that answers 403 tells a scanner where to dig.&lt;/li>
&lt;/ul>
&lt;p>The wall can point at bots too. Answer 404 to a crawler and, as far as it knows, your site isn&amp;rsquo;t there.&lt;/p>
&lt;p>It only stops the polite ones. Polite bots say who they are, and they already obey &lt;code>robots.txt&lt;/code>, the file where a site lists what bots may read. The scrapers you want gone pretend to be an ordinary browser. And point the wall at Googlebot by mistake and you drop out of Google. Turning bots away from your own site is your call. Aim carefully.&lt;/p>
&lt;h2 id="the-question-i-should-have-asked-years-ago">The question I should have asked years ago&lt;/h2>
&lt;p>The answer was in GitHub&amp;rsquo;s docs the whole time. I only found it the day I asked the exact question: why 404, and not 403?&lt;/p>
&lt;p>AI works the same way. It hands you the basics until you ask for the specific thing. Learning to ask is the skill.&lt;/p>
&lt;p>An error message is information. Give strangers none.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ol>
&lt;li>GitHub Docs, &lt;a href="https://docs.github.com/en/rest/using-the-rest-api/troubleshooting-the-rest-api#404-not-found-for-an-existing-resource" target="_blank" rel="noopener">Troubleshooting the REST API: 404 Not Found for an existing resource&lt;/a>&lt;/li>
&lt;li>IETF, &lt;a href="https://www.rfc-editor.org/rfc/rfc9110#section-15.5.4" target="_blank" rel="noopener">RFC 9110 HTTP Semantics, section 15.5.4 (403 Forbidden)&lt;/a>&lt;/li>
&lt;li>GitHub Blog, &lt;a href="https://github.blog/news-insights/octoverse/octoverse-a-new-developer-joins-github-every-second-as-ai-leads-typescript-to-1/" target="_blank" rel="noopener">Octoverse 2025&lt;/a>&lt;/li>
&lt;li>NVD, &lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2026-49442" target="_blank" rel="noopener">CVE-2026-49442 (Cacti)&lt;/a>&lt;/li>
&lt;li>OWASP, &lt;a href="https://cheatsheetseries.owasp.org/cheatsheets/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet.html" target="_blank" rel="noopener">Insecure Direct Object Reference Prevention Cheat Sheet&lt;/a>&lt;/li>
&lt;/ol>
&lt;hr>
&lt;p>&lt;em>Steal Like an Engineer #1. Stolen from: GitHub.&lt;/em> More from me: &lt;a href="https://www.linkedin.com/in/ukantjadia/" target="_blank" rel="noopener">linkedin.com/in/ukantjadia&lt;/a>.&lt;/p></description></item><item><title>SAS Fraud Management Platform</title><link>https://ukantjadia.github.io/post/sas-fm/</link><pubDate>Thu, 29 Aug 2024 14:19:38 +0530</pubDate><guid>https://ukantjadia.github.io/post/sas-fm/</guid><description>&lt;h1 id="sas-fraud-management-platform---all-in-one-solution-for-fraud-detection">SAS Fraud Management Platform - All in one solution for Fraud Detection&lt;/h1>
&lt;p>The issue of fraud has always presented challenges, but in today&amp;rsquo;s digital age, it has grown more complex and sophisticated. Fraudsters are continuously devising new methods to exploit systems and pilfer valuable resources, especially in sectors such as banking, retail, subscription fraud, and credit card fraud. However, technology is pushing back with great force. I recently watched a talk presentation by Varun Mehta, a renowned fraud prevention expert from SAS Middle East, where he shed light on how advanced analytics, artificial intelligence (AI), and machine learning (ML) are revolutionizing the battle against fraud.&lt;/p>
&lt;p>In this post, I will guide you through the main ideas of Varun’s speech, explaining how SAS&amp;rsquo;s creative tools are aiding companies worldwide in identifying and stopping fraud with greater efficiency. If you work in finance, healthcare, or any sector susceptible to fraudulent behavior, the information from this talk could be extremely beneficial in fortifying your security measures.&lt;/p>
&lt;h2 id="introduction-to-sas-and-their-role-in-fraud-detection">Introduction to SAS and Their Role in Fraud Detection&lt;/h2>
&lt;p>SAS is not just like any other software company. They have been leading the way in business analytics for more than 41 years, consistently pushing the boundaries with new technologies. What impressed me the most was their commitment to reinvesting a substantial portion of their revenue - 25%, which is more than twice the industry average - back into research and development. This focus on innovation has allowed SAS to develop strong, long-term partnerships with clients and provide state-of-the-art solutions to address the constantly changing challenges of fraud.
SAS currently supports over 80,000 clients in 148 nations, assisting them in addressing various fraud situations using a flexible and integrated technology platform.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="https://youtu.be/39iaStcVVUo?si=wb6nSq4pwwUEGeoX" srcset="
/post/sas-fm/image/img1_huc92880f9a3e96f2658caf459459fba0d_232670_a6e6d4c63b45c2512b8067f82f9ff2f2.webp 400w,
/post/sas-fm/image/img1_huc92880f9a3e96f2658caf459459fba0d_232670_783dffced25fe5f97097612a1a7555bf.webp 760w,
/post/sas-fm/image/img1_huc92880f9a3e96f2658caf459459fba0d_232670_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://ukantjadia.github.io/post/sas-fm/image/img1_huc92880f9a3e96f2658caf459459fba0d_232670_a6e6d4c63b45c2512b8067f82f9ff2f2.webp"
width="760"
height="428"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="the-sas-fraud-platform-a-comprehensive-solution">The SAS Fraud Platform: A Comprehensive Solution&lt;/h2>
&lt;p>Varun Mehta presented a detailed overview of the SAS Fraud Platform, which is a powerful tool designed to combat various forms and types of fraud in different sectors. This platform is valuable because it eliminates the need for separate systems to address different types of fraud, providing a unified and comprehensive solution.&lt;/p>
&lt;h3 id="here-are-some-key-points">Here are some key points&lt;/h3>
&lt;ol>
&lt;li>
&lt;p>&lt;em>Cross-Industry Application&lt;/em>: The SAS Fraud Platform is capable of detecting fraud across various industries such as banking, insurance, healthcare, e-commerce, and procurement, thanks to its versatile technology.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;em>Real-Time Detection&lt;/em>: Its real-time fraud detection capability is a game-changer as it can swiftly identify and prevent fraudulent activities, safeguarding organizations from significant financial losses.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;em>Advanced Analytics and Machine Learning&lt;/em>: Through advanced analytics and machine learning, the platform can uncover unnoticed fraud by examining extensive data and identifying irregular patterns. This includes identifying suspicious banking transactions and uncovering procurement fraud involving ghost vendors and duplicate invoices.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>Recently SAS also did a survey by sending 22 questions to its member all over the world for asking about their organization&amp;rsquo;s anti-fraud initiatives.
Here are the ways you can explore the report, first A visually appeling &lt;a href="https://tbub.engage.sas.com/SASVisualAnalytics/?reportUri=%2Freports%2Freports%2Fdd662d82-6890-4f17-9cfe-43251c355543&amp;amp;sso_guest=true&amp;amp;printEnabled=false&amp;amp;shareEnabled=false&amp;amp;informationEnabled=false&amp;amp;commentsEnabled=false&amp;amp;alertsEnabled=false&amp;amp;reportViewOnly=true&amp;amp;reportContextBar=false&amp;amp;sas-welcome=false" target="_blank" rel="noopener">dashboard&lt;/a> and second complete report with a login &lt;a href="https://www.sas.com/en_us/offers/24q1/anti-fraud-technology.html" target="_blank" rel="noopener">report&lt;/a>.&lt;/p>
&lt;p>here is a screen shot of showing the uses of analytics tools in banking and finance services for fraud detection&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Report Dashboard" srcset="
/post/sas-fm/image/img_hu5418bfba16886a754278d58acdff9efb_61801_7544ea39ed8efacbb36da337fc971da2.webp 400w,
/post/sas-fm/image/img_hu5418bfba16886a754278d58acdff9efb_61801_466a157f55c2c5491f8b015416755d9b.webp 760w,
/post/sas-fm/image/img_hu5418bfba16886a754278d58acdff9efb_61801_1200x1200_fit_q75_h2_lanczos.webp 1200w"
src="https://ukantjadia.github.io/post/sas-fm/image/img_hu5418bfba16886a754278d58acdff9efb_61801_7544ea39ed8efacbb36da337fc971da2.webp"
width="760"
height="246"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="real-world-examples-of-fraud-detection">Real-World Examples of Fraud Detection&lt;/h2>
&lt;p>Varun shared several real-world examples that highlight the effectiveness of the SAS Fraud Platform.&lt;/p>
&lt;h3 id="example-1">Example 1&lt;/h3>
&lt;p>In a situation in which malicious individuals took advantage of an unused bank account and changed their account address and phone no. to illegally transfer large amounts of money in small increments, the standard monitoring systems did not detect fraudulent activity until after it had already occurred. The perpetrators efficiently carried out their plan over a short period of about 30 minutes, using various mule accounts to withdraw the unlawfully obtained funds and bypass standard surveillance methods.&lt;/p>
&lt;p>If the organization had incorporated SAS Fraud Protection into its system, the platform would have quickly caught the abnormal activity by identifying key signs, such as sudden changes in account information followed immediately by high-value transactions. These irregularities would have triggered real-time alerts within the first 5 minutes, enabling proactive detection and allowing the organization to promptly halt all account activities before the fraudulent individuals could carry out their plan.&lt;/p>
&lt;h3 id="example-2">Example 2&lt;/h3>
&lt;p>Another example is a company with 8,000 employees. During an audit, it was discovered that 140 people were over the age of 80, even though the official government retirement age is 63. It was found that salaries for these individuals were still being paid after they retired. What happened is that when a person retired or left the company, the payroll department did not stop the payments but instead changed the account details to their controlling account. This is a form of fraud where people&amp;rsquo;s money is taken unlawfully.&lt;/p>
&lt;p>The examples emphasize the growing challenges of fraud in today&amp;rsquo;s digital age and highlight the pivotal role of advanced analytics, artificial intelligence, and machine learning in combatting fraudulent activities. It stresses the importance of implementing advanced technological solutions to protect against and prevent fraudulent behavior in various sectors.&lt;/p>
&lt;h2 id="reference">Reference&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://www.sas.com/en_in/software/fraud-management.html" target="_blank" rel="noopener">SFM&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://youtu.be/39iaStcVVUo?si=wb6nSq4pwwUEGeoX" target="_blank" rel="noopener">Video&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.sas.com/en_us/offers/24q1/anti-fraud-technology.html" target="_blank" rel="noopener">Report&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://tbub.engage.sas.com/SASVisualAnalytics/?reportUri=%2Freports%2Freports%2Fdd662d82-6890-4f17-9cfe-43251c355543&amp;amp;sso_guest=true&amp;amp;printEnabled=false&amp;amp;shareEnabled=false&amp;amp;informationEnabled=false&amp;amp;commentsEnabled=false&amp;amp;alertsEnabled=false&amp;amp;reportViewOnly=true&amp;amp;reportContextBar=false&amp;amp;sas-welcome=false" target="_blank" rel="noopener">Dashboard&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.acfe.com/acfe-insights-blog/blog-detail?s=insights-from-2024-anti-fraud-technology-benchmarking-report" target="_blank" rel="noopener">Insights from the 2024 Anti-Fraud Technology Benchmarking Report - ACFE Blog&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Federated Learning vs. De-Anonymization -- Protecting Your Data</title><link>https://ukantjadia.github.io/post/fl-2/</link><pubDate>Sun, 16 Jun 2024 14:15:39 +0530</pubDate><guid>https://ukantjadia.github.io/post/fl-2/</guid><description>&lt;h1 id="federated-learning-vs-de-anonymization-protecting-your-data">Federated Learning vs. De-Anonymization: Protecting Your Data&lt;/h1>
&lt;p>In simple terms, federated learning is a technique where a machine learning model is shared with different nodes, clients, or data collectors (like IoT devices). Each client device trains the model locally using its own data and then sends the updated parameters and weights to a central model. This central model then aggregates these updates, learns from them, and shares the new parameters back with the client models.&lt;/p>
&lt;p>Here are some terms used in this process:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Client:&lt;/strong> Total number of devices involved in the federated learning process.&lt;/li>
&lt;li>&lt;strong>Active Client:&lt;/strong> Some clients are selected to perform training based on certain conditions such as stable network connection, charging status, etc.&lt;/li>
&lt;li>&lt;strong>Round:&lt;/strong> The number of times each active node will perform training locally and then share the final parameters with the central model.&lt;/li>
&lt;/ul>
&lt;p>Even when data is made anonymous, personal information can still be revealed. Two cases illustrate this issue:&lt;/p>
&lt;p>&lt;strong>Case 1: Revealing the Identity of Netflix Users&lt;/strong>&lt;/p>
&lt;p>Netflix shared anonymous viewing data for a competition to enhance its recommendation system. Yet, researchers managed to uncover the identities of individuals by linking this data with publicly available IMDb ratings. By comparing the viewing habits of a small number of users in both datasets, the researchers were able to identify specific people and their viewing preferences. This raised serious concerns about the reliability of anonymization methods.&lt;/p>
&lt;p>&lt;strong>Case 2: Strava Heat Map Exposing Military Locations&lt;/strong>&lt;/p>
&lt;p>Strava, a fitness-tracking app, creates a map showing the activity levels of its users around the world. Although the data is anonymous, it has accidentally revealed sensitive military locations. Researchers discovered that by studying the map, they could figure out how people move in remote areas. In some cases, this helped them locate military bases and track the movements of personnel, disclosing important information.&lt;/p>
&lt;h2 id="measures-to-prevent-information-leaks-in-federated-learning">Measures to Prevent Information Leaks in Federated Learning&lt;/h2>
&lt;p>To mitigate the risks associated with data de-anonymization, several techniques can be employed:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Stochastic Gradient Descent (SGD):&lt;/strong>
SGD is a technique used in machine learning to improve a model by adjusting weights based on the gradient of the loss function. By adding noise to the gradient calculation, it can enhance privacy protection by making it more difficult to extract exact data points.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Differential Privacy:&lt;/strong>
Differential privacy means sharing information about a group without revealing information about individuals. It ensures that adding or removing a single data point doesn&amp;rsquo;t significantly change the results, protecting individual privacy.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Federated Averaging:&lt;/strong>
Federated averaging is a method used in federated learning where multiple devices work together to train a model without sharing their raw data. Each device calculates updates to the model based on its local data. Only the updates, not the data itself, are shared and averaged to improve the global model. This approach helps maintain data privacy across decentralized systems.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="conclusion">Conclusion&lt;/h2>
&lt;p>Protecting personal information in the age of big data is a tough job that requires advanced techniques. The example of Netflix and Strava shows that even when data is anonymized, it can still be at risk of de-anonymization attacks. By using methods like stochastic gradient descent, differential privacy, and federated averaging, organizations can improve their data protection measures and better protect individual privacy.&lt;/p>
&lt;h2 id="references">References&lt;/h2>
&lt;ul>
&lt;li>How To Break Anonymity of the Netflix Prize Dataset &lt;a href="https://arxiv.org/pdf/cs/0610105" target="_blank" rel="noopener">Paper&lt;/a>&lt;/li>
&lt;li>Anonymity and the Netflix Dataset - &lt;a href="https://www.schneier.com/blog/archives/2007/12/anonymity_and_t_2.html" target="_blank" rel="noopener">An Essay&lt;/a>&lt;/li>
&lt;li>Heat Marks the Spot: De-Anonymizing Users’ Geographical Data on the Strava Heatmap - &lt;a href="https://conpro23.ieee-security.org/papers/childs-conpro23.pdf" target="_blank" rel="noopener">Paper&lt;/a>&lt;/li>
&lt;li>Lecture 23 — Differentially Private Machine Learning - By &lt;a href="http://www.gautamkamath.com/" target="_blank" rel="noopener">Prof. Gautam Kamath&lt;/a> - &lt;a href="http://www.gautamkamath.com/courses/CS480-wi2021-files/lec23-notes.pdf" target="_blank" rel="noopener">Lecture Notes&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Introduction to Federated Learning</title><link>https://ukantjadia.github.io/post/fl/</link><pubDate>Sat, 16 Mar 2024 14:15:39 +0530</pubDate><guid>https://ukantjadia.github.io/post/fl/</guid><description>&lt;h1 id="intro-to-flfederated-learning">Intro to FL(Federated Learning)&lt;/h1>
&lt;h2 id="the-problem-with-current-machine-learning">The Problem with Current Machine Learning&lt;/h2>
&lt;p>Data goes to your model.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Getting data from different sources can change the true nature and authenticity of the data. It also creates worries about sharing and keeping the collected data private.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Today&amp;rsquo;s machine learning algorithms have data stored in one central place. This means the authenticity and originality of the data can be altered, and the data can be fake or synthetic.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="the-solution-federated-learning-fl">The Solution: Federated Learning (FL)&lt;/h2>
&lt;p>In FL, your model goes to the data.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>In simpler terms, your model is shared and spread across the different data sources, and your model is trained on the data on individual devices or machines. All the updated model weights are then combined into a central model.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>There is a main central model that communicates with other models distributed across many client devices. The client model is trained on the client&amp;rsquo;s system multiple times in rounds so that it can handle different types of data. After addressing data issues, the distributed models share their final weights with the central model.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>For example, people from different regions use Google&amp;rsquo;s keyboard, and they get suggestions in their local languages.&lt;/p>
&lt;p>Another example we&amp;rsquo;re all familiar with is next-word predictions on our phone keyboards. The suggestions are based on our typing habits.&lt;/p>
&lt;p>Another use case is detecting anomalies in industrial IoT devices, as different IoT devices work differently based on their surroundings and characteristics, needing different maintenance predictions from other IoT devices.&lt;/p>
&lt;h2 id="how-fl-is-effective">How FL is Effective&lt;/h2>
&lt;p>There are various methods to use data from different sources and train models, but Federated Learning is a proven and widely used technique. It solves privacy issues and the risk of exposing personal data by not taking data from clients.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>For data generalization, having many different forms of data can reduce the performance of a regular machine-learning model. To avoid this, our model should be able to handle all kinds of data.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The machine learning model should use less computing power so it doesn&amp;rsquo;t overload client devices and machines.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The model should be trained in multiple rounds to train efficiently by handling the different types of data and resource availability on clients&amp;rsquo; devices.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="1710596229818" srcset="
/post/fl/image/intro/1710596229818_hu6ffe9f252afaf5e06e5faa8367eb2977_212598_76e1cda44e620089b6449ed49943b0c1.webp 400w,
/post/fl/image/intro/1710596229818_hu6ffe9f252afaf5e06e5faa8367eb2977_212598_1ef2fec02430fbbbfe1328ecbfdaf52b.webp 760w,
/post/fl/image/intro/1710596229818_hu6ffe9f252afaf5e06e5faa8367eb2977_212598_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://ukantjadia.github.io/post/fl/image/intro/1710596229818_hu6ffe9f252afaf5e06e5faa8367eb2977_212598_76e1cda44e620089b6449ed49943b0c1.webp"
width="760"
height="428"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>&lt;a href="https://www.altexsoft.com/blog/federated-learning/" target="_blank" rel="noopener">source&lt;/a>&lt;/em>&lt;/p>
&lt;p>Reading Material &lt;a href="https://www.altexsoft.com/blog/federated-learning/" target="_blank" rel="noopener">link&lt;/a>&lt;/p></description></item><item><title>What I Know About Java</title><link>https://ukantjadia.github.io/post/what-i-know-about-java/</link><pubDate>Sat, 30 Dec 2023 14:23:50 +0530</pubDate><guid>https://ukantjadia.github.io/post/what-i-know-about-java/</guid><description>&lt;h2 id="explaining-the">Explaining the&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-java" data-lang="java">&lt;span class="line">&lt;span class="cl">&lt;span class="n">pubic&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kd">static&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kt">void&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nf">main&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">String&lt;/span>&lt;span class="o">[]&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>
&lt;p>the execution of our code starts form main.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>let in order to create the object of class x we should have the main method&lt;/p>
&lt;/li>
&lt;li>
&lt;p>So main is a parameter and it takes parameter ie. &lt;code>main ( )&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>And the type of the parameter can be anything so we take the &lt;code>string&lt;/code> because &lt;code>String&lt;/code> except values and we don&amp;rsquo;t know how many values we are taking so we take array &lt;code>main(String args[])&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>There is nothing to return in main so it is a &lt;code>void&lt;/code> type&lt;/p>
&lt;/li>
&lt;li>
&lt;p>In order to call the method we require the object and the execution of our code is start from the main so that&amp;rsquo;s why it considered as &lt;code>static void main(String args[])&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>and it made public so &lt;code>public static void main(String args[])&lt;/code>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="creating-a-object-inside-the-main">creating a object inside the main&lt;/h3>
&lt;ul>
&lt;li>we type the class name and obj name &lt;code>Main obj&lt;/code>&lt;/li>
&lt;li>then we have a keyword &lt;code>new&lt;/code> : it tell the jvm how memory it required for the given class, for that the size of class is define by the default constructor.&lt;/li>
&lt;/ul>
&lt;ul>
&lt;li>it is like a blowing the air inside the pillow (keyword new ), and capacity of that pillow is constructor.&lt;/li>
&lt;/ul>
&lt;h1 id="java-oop">Java OOP&lt;/h1>
&lt;h2 id="method-overloading">Method Overloading&lt;/h2>
&lt;ul>
&lt;li>Methods with same name but diff in (parameter or data type of the(both)).&lt;/li>
&lt;li>this kind of methods are known as overloaded method.
ex :&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-java" data-lang="java">&lt;span class="line">&lt;span class="cl">&lt;span class="kt">void&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nf">func&lt;/span>&lt;span class="p">(){..}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nf">func&lt;/span>&lt;span class="p">(){...}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="kt">float&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nf">func&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">){...}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="kt">void&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nf">func&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kt">float&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">k&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kt">long&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">l&lt;/span>&lt;span class="p">){...}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Method overloading should be consider by the type or count of the parameter that passed to a method not by the &lt;strong>return type of the method.&lt;/strong>&lt;/li>
&lt;/ul>
&lt;h2 id="constructor">Constructor&lt;/h2>
&lt;blockquote>
&lt;ul>
&lt;li>It is member method.&lt;/li>
&lt;li>Constructor have same name as class name.&lt;/li>
&lt;li>Constructor will never return anything.&lt;/li>
&lt;li>It used to allocate the memory.&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;hr>
&lt;blockquote>
&lt;ul>
&lt;li>Every time when we have to create a any object we have to use the constructor weather we define it or not.&lt;/li>
&lt;li>If we don&amp;rsquo;t create a constructor it will be there that&amp;rsquo;s a default constructor.&lt;/li>
&lt;li>What a Constructor do : it will define the size of class which help keyword new to create the memory accordingly .&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;ul>
&lt;li>unlike methods, a constructor has the &lt;strong>same name as that of class&lt;/strong> and does not have any return type.&lt;/li>
&lt;li>In java similar to method but only invoked when an object of the class is created.
ex:&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-java" data-lang="java">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">class&lt;/span> &lt;span class="nc">Main&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">private&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kt">short&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">num&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// constructor&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">Main&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">System&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;After the object is create. &amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">num&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">27&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">public&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kd">static&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kt">void&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nf">main&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">String&lt;/span>&lt;span class="o">[]&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="p">){&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// object of class is created &lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">Main&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">obj&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">new&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">Main&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// calling the var&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">System&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;the short number is &amp;#34;&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">obj&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">num&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>There are three type of Constructor&lt;/li>
&lt;li>&lt;strong>Private Constructor&lt;/strong> : Private constructor can&amp;rsquo;t be accessed from outside the class.&lt;/li>
&lt;li>&lt;strong>No-Arg Constructor&lt;/strong> : Constructor that does not accept any arguments.&lt;/li>
&lt;li>&lt;strong>Parameterized Constructor&lt;/strong> : Constructor that accepts arguments.&lt;/li>
&lt;li>&lt;strong>Default Constructor&lt;/strong> : Constructor that is automatically created by the Java compiler if it is not defined.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;ul>
&lt;li>A constructor can not be &lt;code>abstract&lt;/code>, &lt;code>static&lt;/code> or &lt;code>final&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="access-modifier">Access Modifier&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>It is helpful in the Encapsulation ( preventing the data from misuse and alter.).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>And to Control what part of program can access the members of a class.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Default&lt;/strong> : Declarations are visible only within the package(package private).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Public&lt;/strong> : This can be access by other class.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Private&lt;/strong> : This can not be accessed by other class.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Protected&lt;/strong> : Declarations are visible within the package or all subclasses.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>refer to this image &lt;a href="https://cdn.programiz.com/sites/tutorial2program/files/java-access-modifiers-public-private-protected-default_0.jpg" target="_blank" rel="noopener">this&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="this-key-word">this key word&lt;/h2>
&lt;ul>
&lt;li>this : refer to the current object inside a method or constructor.&lt;/li>
&lt;li>in other words: this is treating the variable with same name, differently according to there position/place.&lt;/li>
&lt;li>using this with getters and setters : in getters/setters we are using the same var name as in the program&lt;/li>
&lt;li>using this in constructor overloading
ex:&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-java" data-lang="java">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">class&lt;/span> &lt;span class="nc">Complex&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">private&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// constructor with 2 parameters&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">private&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nf">Complex&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">j&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">){&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">a&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">b&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">j&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// constructor with single parameter&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">private&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nf">Complex&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">){&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// invokes the constructor with 2 parameters&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">this&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// constructor with no parameter&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">private&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nf">Complex&lt;/span>&lt;span class="p">(){&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// invokes the constructor with single parameter&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">this&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">0&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nd">@Override&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">public&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">String&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nf">toString&lt;/span>&lt;span class="p">(){&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">return&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">a&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s">&amp;#34; + &amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">b&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s">&amp;#34;i&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">public&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kd">static&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kt">void&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nf">main&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">String&lt;/span>&lt;span class="o">[]&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// creating object of Complex class&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// calls the constructor with 2 parameters&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">Complex&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">c1&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">new&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">Complex&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">2&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">3&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// calls the constructor with a single parameter&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">Complex&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">c2&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">new&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">Complex&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">3&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// calls the constructor with no parameters&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">Complex&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">c3&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">new&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">Complex&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// print objects&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">System&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">c1&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">System&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">c2&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">System&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">c3&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>passing this as an argument : - i also didn&amp;rsquo;t get it. ask to sir&lt;/li>
&lt;/ul>
&lt;h2 id="final-keyword">final keyword&lt;/h2>
&lt;ul>
&lt;li>final keyword means used to denote the constants and it can be used with variables,method and classes.&lt;/li>
&lt;li>final variable cannot be reinitialized with another value.&lt;/li>
&lt;li>the final method cannot be overridden.&lt;/li>
&lt;li>the final class cannot be extended.&lt;/li>
&lt;/ul>
&lt;h2 id="instanceof-operator">&lt;code>instanceOf&lt;/code> operator&lt;/h2>
&lt;ul>
&lt;li>used to check whether an object is an instance of class or not&lt;/li>
&lt;li>syntax &lt;code>objectName instanceOf className;&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="inheritance">Inheritance&lt;/h2>
&lt;ul>
&lt;li>It allows to create a new class from an existing class.&lt;/li>
&lt;li>just inherit it from it&amp;rsquo;s father class.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-java" data-lang="java">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">class&lt;/span> &lt;span class="nc">Main&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">public&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kd">static&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kt">void&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nf">main&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">String&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">args&lt;/span>&lt;span class="o">[]&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">child&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">boy&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">new&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">child&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">boy&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">display&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="kd">class&lt;/span> &lt;span class="nc">parent&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">String&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">color&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s">&amp;#34;White&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">System&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;It is same like we get the traits from our parents, JDK or JVM also doing the same thing.&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// it is same like we get the traits from our parents, JDK/JVM/java is also doing the same thing. &lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c1">// inherit from parents&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="kd">class&lt;/span> &lt;span class="nc">child&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kd">extends&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">parent&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">public&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kt">void&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nf">display&lt;/span>&lt;span class="p">(){&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">System&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;The value for variable \&amp;#39;color\&amp;#39; is comming from the parent class.&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">System&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">out&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">println&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Color of child is &amp;#34;&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="n">color&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Learn Visualization With Seaborn</title><link>https://ukantjadia.github.io/post/learn-visiualization-with-seaborn/</link><pubDate>Sat, 30 Dec 2023 14:23:16 +0530</pubDate><guid>https://ukantjadia.github.io/post/learn-visiualization-with-seaborn/</guid><description>&lt;h1 id="seaborn-tutorial">Seaborn Tutorial&lt;/h1>
&lt;blockquote>
&lt;p>&lt;strong>IMPORTANT&lt;/strong>
Que: What is Probability Density of Data?
Ans: The Probability Density of Data refers to the likelihood of a certain value or range of values occurring within a dataset.
It is mathematical function that describes the distribution of the data and can be used to make prediction
and to understand the underlying patterns and relationship within the dataset.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>&lt;strong>Note&lt;/strong>
Python notebook containing all plots with various parameter can be obtain from [here]&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="setup">Setup&lt;/h2>
&lt;p>Install the &lt;a href="https://matplotlib.org/" target="_blank" rel="noopener">matplotlib&lt;/a> and &lt;a href="https://seaborn.pydata.org/" target="_blank" rel="noopener">seaborn&lt;/a> in your editor or notebook by using following commands&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">pip&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="n">seaborn&lt;/span> &lt;span class="c1"># to install in termianl &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">pip&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="n">matplotlib&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">!&lt;/span>&lt;span class="n">pip&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="n">seaborn&lt;/span> &lt;span class="c1"># to install in notebook&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">!&lt;/span>&lt;span class="n">pip&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="n">matplotlib&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">conda&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="n">seaborn&lt;/span> &lt;span class="c1"># to install in conda env &lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">conda&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="n">matplotlib&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="plots">Plots&lt;/h1>
&lt;h2 id="distribution-plots">Distribution Plots&lt;/h2>
&lt;h3 id="joint-plot">Joint Plot&lt;/h3>
&lt;p>Joint Plot is a combination of scatter plot and a histogram or kernel density estimate (KDE) plot to display the distribution of one variable along the x-axis and the distribution of another variable on y-axis.
It allows to visualize the relationship between two variables.&lt;/p>
&lt;h3 id="kde-plot">KDE Plot&lt;/h3>
&lt;p>Kernel Density Estimation is a graphical representation of the probability density function of a continuous random variable.
It uses a smoothed line to show how often different values appear in the dataset.
It is a non-parametric method(it does not make any assumptions about the underlying distribution of data.)&lt;/p>
&lt;h3 id="pair-plot">Pair Plot&lt;/h3>
&lt;p>Also known as Scatter plot matrix.
A pair plot is used to visualize the relationship between multiple variables in a dataset.
It uses a grid of subplots, where each subplot shows a scatter plot of two variables.
Pair plot is often used to explore the relationship in a dataset.&lt;/p>
&lt;h3 id="rug-plot">Rug Plot&lt;/h3>
&lt;p>Rug plot shows the distribution of a single numeric variable.
A set of vertical lines is plotted for each observation in the dataset, with x-axis representing the variable of interest and the y-axis representing a value of 0 or 1.
The resulting plot allows you to see the density of observations at different values of the variable.
It&amp;rsquo;s called rug-plot because it looks like a carpet or a rug.&lt;/p>
&lt;h3 id="styling">Styling&lt;/h3>
&lt;p>Style and customization can be done using various function and options like you can change the color palette of a plot, adjust the size and font of the axis labels, or add a title to the plot, scale and provide context to the plot, various plotting function and Faceting(split data across multiple subplots).&lt;/p>
&lt;h2 id="categorial-plots">Categorial Plots&lt;/h2>
&lt;h3 id="bar-plot">Bar Plot&lt;/h3>
&lt;p>In Bar Plot bars can represent different categories or groups, and the height of the bar plot can represent a numerical value or count.
In Seaborn the &lt;code>barplot()&lt;/code> function can plot a bar char of the y-axis variable against the x-axis variable.&lt;/p>
&lt;h3 id="count-plot">Count Plot&lt;/h3>
&lt;p>Count Plot shows the number of occurrences of each category in a dataset.
It used to visualize the distribution of categorical data.
The x-axis represents the categories and the y-axis represents the count of data points in each category.&lt;/p>
&lt;h3 id="box-plot">Box Plot&lt;/h3>
&lt;h3 id="violin-plot">Violin Plot&lt;/h3>
&lt;p>Violin Plot is similar to the box plot, but instead of a box it plots the data as kernel density estimate(KDE).
The violin plot shows the probability density of the data at different values.
It has a marker to indicate the median of the data and the width of violin indicates the frequency of the data points.&lt;/p>
&lt;h3 id="strip-plot">Strip Plot&lt;/h3>
&lt;p>It displays the individual data points as dots or points on a single line.
It is used to show the distribution of a single variable and often used in combination with other types of plots to provide additional information.&lt;/p>
&lt;h3 id="swarm-plot">Swarm Plot&lt;/h3>
&lt;h3 id="palettes">Palettes&lt;/h3>
&lt;p>A palette refers to a set of colors that can be used to create visualizations.
&lt;code>sns.color_palette()&lt;/code> function can be used to create custom palettes.
Different palettes can be used to create different types of plots, such as categorical plots, sequential plots, and diverging plots&lt;/p>
&lt;h2 id="matrix-plot">Matrix Plot&lt;/h2>
&lt;h3 id="heat-maps">Heat Maps&lt;/h3>
&lt;p>Heat maps use color to show the density of distribution of the data, where the values are represented by colors.
It is a 2-dimensional representation of data.
The data can be passed as a matrix or a data-frame, with each row and column representing a variable in the data, and the values of the cells representing the measurements or observations.&lt;/p>
&lt;h3 id="cluster-map">Cluster Map&lt;/h3>
&lt;p>Cluster Map group similar data points together and separated dissimilar data points.
In Cluster Map, the rows and columns of the data are rearranged to group of similar data points together and to make patterns in the data more visible.&lt;/p>
&lt;h3 id="pair-grid">Pair Grid&lt;/h3>
&lt;p>Pair Grid allows to plot multiple plots together in a grid format.&lt;/p>
&lt;h3 id="facet-grid">Facet Grid&lt;/h3>
&lt;h3 id="regression-plot">Regression Plot&lt;/h3>
&lt;iframe src="Learn-Seaborn-code.html" width="100%" height="300">&lt;/iframe></description></item><item><title>Markdown to Html Conversion</title><link>https://ukantjadia.github.io/post/markdown-to-html-conversion/</link><pubDate>Sat, 30 Dec 2023 14:22:57 +0530</pubDate><guid>https://ukantjadia.github.io/post/markdown-to-html-conversion/</guid><description>&lt;h1 id="conversion-of-markdownmd-to-html-markup-language">Conversion of Markdown(.md) to html markup language&lt;/h1>
&lt;ul>
&lt;li>get the &lt;code>pandoc&lt;/code>&lt;/li>
&lt;li>Use the following command&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-r" data-lang="r">&lt;span class="line">&lt;span class="cl"> &lt;span class="n">pandoc&lt;/span> &lt;span class="n">smaple_readme.md&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">t&lt;/span> &lt;span class="n">html&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">o&lt;/span> &lt;span class="n">sample_readme.html&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>In shell it would be written like&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">cat&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="k">$(&lt;/span>pandoc &lt;span class="nv">$1&lt;/span>.md -t html -o &lt;span class="nv">$1&lt;/span>.html &lt;span class="k">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>It will be run the loop with wildcard like&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> i in ~/locat/.md/file/* &lt;span class="p">;&lt;/span> &lt;span class="k">do&lt;/span> &lt;span class="k">$(&lt;/span>var&lt;span class="k">)&lt;/span> &lt;span class="p">;&lt;/span> &lt;span class="k">done&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="modification">Modification&lt;/h1>
&lt;ul>
&lt;li>check extension of each file with if condition and print the non md file
like&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">if [ $1 -ne *.md ]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">then
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> echo &amp;#34;UNEXPECTED Document format $1 &amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> continue
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">else:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> `further code`
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">fi
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Learn tmux, a Terminal Multiplexer</title><link>https://ukantjadia.github.io/post/learn-termux-a-terminal-multiplexer/</link><pubDate>Sat, 30 Dec 2023 14:22:29 +0530</pubDate><guid>https://ukantjadia.github.io/post/learn-termux-a-terminal-multiplexer/</guid><description>&lt;h1 id="tmux">tmux&lt;/h1>
&lt;!-- ---
## bullet point
1. install
2. what it is
3. what it can do
4. tmux key binding
5. tmux conf
6. extra features
7. patching for history backups
8.
---
### data 💽 -->
&lt;h2 id="installation">Installation&lt;/h2>
&lt;ul>
&lt;li>Linux : &lt;code>sudo apt-get install tmux&lt;/code>&lt;/li>
&lt;li>Fedora : &lt;code>sudo dnf -y install tmux&lt;/code>&lt;/li>
&lt;li>Cent-OS : &lt;code>sudo yum -y install tmux&lt;/code>&lt;/li>
&lt;li>Arch Linux : &lt;code>sudo pacman -S tmux&lt;/code>&lt;/li>
&lt;li>to start : &lt;code>tmux&lt;/code>&lt;/li>
&lt;li>NOTE: Prefix key : &lt;code>Ctrl+b&lt;/code>&lt;/li>
&lt;li>&lt;a href="https://github.com/tmux/tmux" target="_blank" rel="noopener">github&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="what-is-tmux-">What is tmux ??&lt;/h2>
&lt;ul>
&lt;li>It is terminal multiplexer.&lt;/li>
&lt;li>It acts as a window manager in your terminal.&lt;/li>
&lt;li>It also allows to create multiple window and panes in a single terminal window.&lt;/li>
&lt;/ul>
&lt;h2 id="what-it-can-do">What it can do&lt;/h2>
&lt;ul>
&lt;li>Tmux keeps the sessions , windows and panes in a server located at &lt;code>/tmp/tmux&lt;/code>&lt;/li>
&lt;li>If your terminal window is crash or killed(&lt;em>detach&lt;/em>) then still all your process and session is alive, until you kill the tmux server(reboot).&lt;/li>
&lt;li>Again you can pick the session from where you left by simply &lt;em>attaching&lt;/em> to the session.&lt;/li>
&lt;li>tmux is also helpful while working with remote machine.&lt;/li>
&lt;/ul>
&lt;h2 id="tmux-key-binds">tmux key binds&lt;/h2>
&lt;p>NOTE: Prefix key &lt;code>C-b&lt;/code> == &lt;code>Ctrl+b&lt;/code>&lt;/p>
&lt;ul>
&lt;li>to start : &lt;code>tmux&lt;/code>&lt;/li>
&lt;li>Splitting Pane :
&lt;ul>
&lt;li>for left and right : &lt;code>C-b+%&lt;/code>&lt;/li>
&lt;li>for top and bottom : &lt;code>C-b+&amp;quot;&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Navigates through panes :
&lt;ul>
&lt;li>&lt;code>C-b+&amp;lt;arrow_keys&lt;/code>&lt;/li>
&lt;li>to move left : &lt;code>C-b ⬅&lt;/code>&lt;/li>
&lt;li>to move right : &lt;code>C-b ➡&lt;/code>&lt;/li>
&lt;li>to move up : &lt;code>C-b ⬆&lt;/code>&lt;/li>
&lt;li>to move down : &lt;code>C-b ⬇&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Closing pane: type &lt;code>exit&lt;/code> or &lt;code>C-b x&lt;/code>&lt;/li>
&lt;li>Creating windows : &lt;code>C-b c&lt;/code>
&lt;ul>
&lt;li>rename windows : &lt;code>C-b ,&lt;/code>&lt;/li>
&lt;li>to kill window : &lt;code>C-b &amp;amp;&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Navigates through windows :
&lt;ul>
&lt;li>for previous window : &lt;code>C-b p&lt;/code>&lt;/li>
&lt;li>for next window : &lt;code>C-b n&lt;/code>&lt;/li>
&lt;li>for required : &lt;code>C-b &amp;lt;number&amp;gt;&lt;/code>
where number is number in front of the window&amp;rsquo;s name in your status bar&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Session handling :
&lt;ul>
&lt;li>to detach your current session : &lt;code>C-b d&lt;/code>&lt;/li>
&lt;li>for list of session to detach : &lt;code>C-b D&lt;/code>
&lt;ul>
&lt;li>for list of session : &lt;code>C-b s&lt;/code>&lt;/li>
&lt;li>for list of session : &lt;code>tmux ls&lt;/code> it worked without a tmux session&lt;/li>
&lt;li>to attach to session from list : &lt;code>tmux attach -t 0&lt;/code>
&lt;code>-t 0&lt;/code> -t for specific target and 0 name of the session&lt;/li>
&lt;li>attach to a new session : &lt;code>tmux new -s database&lt;/code>
&lt;code>new -s database&lt;/code> new for new , -s for session , database as name of session
&lt;code>new -w __&lt;/code> -w for new window&lt;/li>
&lt;li>rename session : &lt;code>C-b $&lt;/code>
rename before starting the session : &lt;code>tmux rename-session -t 0 database&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>to enter command prompt mode : &lt;code>C-b :&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>NOTE : to see the more key bindings use &lt;strong>&lt;code>C-b ?&lt;/code>&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>It will show the all binding available in it&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="links-">Links 🔗&lt;/h2>
&lt;ol>
&lt;li>&lt;a href="https://medium.com/hackernoon/a-gentle-introduction-to-tmux-8d784c404340" target="_blank" rel="noopener">blog&lt;/a>&lt;/li>
&lt;li>&lt;a href="">key-binds_img&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://youtu.be/icEE9HHtawc" target="_blank" rel="noopener">YT-video&lt;/a>&lt;/li>
&lt;li>tmux key binds :&lt;/li>
&lt;li>&lt;a href="https://sourcedigit.com/wp-content/uploads/2014/09/Tmux-Key-Binding-Commands.png" target="_blank" rel="noopener">default-key-binds&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://sourcedigit.com/wp-content/uploads/2014/09/Tmux-Resize-Pane-Commands.png" target="_blank" rel="noopener">resize-pane-using-command&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://sourcedigit.com/wp-content/uploads/2014/09/Screen-Terminal-Multiplexer-Commands.png" target="_blank" rel="noopener">to-control-screen&lt;/a>&lt;/li>
&lt;li>&lt;a href="obsidian://open?vault=Obsidian&amp;amp;file=11%2FDaily-Note%2Ftmux-1.png">key-binds&lt;/a>&lt;/li>
&lt;/ol></description></item><item><title>Network Concepts Basics</title><link>https://ukantjadia.github.io/post/network-concepts-basics/</link><pubDate>Sat, 30 Dec 2023 14:21:26 +0530</pubDate><guid>https://ukantjadia.github.io/post/network-concepts-basics/</guid><description>&lt;h1 id="networking-concept">Networking Concept&lt;/h1>
&lt;h3 id="mac-address">Mac address&lt;/h3>
&lt;ul>
&lt;li>Media control access&lt;/li>
&lt;li>It is physical address to identify the devices&lt;/li>
&lt;li>it identify the NIC of each divices (NIC&amp;ndash;&amp;gt; Network identification card)&lt;/li>
&lt;li>ex:- ether 00:0c:49:0a:43:03&lt;/li>
&lt;li>Mac work in the second and third layer of the OSI model&lt;/li>
&lt;li>Specially it is related to the switches&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="tcp---vs---udp">TCP &amp;ndash;VS&amp;ndash; UDP&lt;/h3>
&lt;h4 id="tcp">TCP&lt;/h4>
&lt;ul>
&lt;li>Transmission COntrol Protocol&lt;/li>
&lt;li>Connection oriented protocol&lt;/li>
&lt;li>used in HTTPS/SSH/TelNet/SMTP/FTP&lt;/li>
&lt;li>provide the more security and relailablity&lt;/li>
&lt;li>it form one-to-one connection and it gurantee the complete delivery of data&lt;/li>
&lt;li>Three way hand shake&lt;/li>
&lt;li>SYN -&amp;gt; SYN-ACK -&amp;gt; ACK&lt;/li>
&lt;li>it is slow due to three-way-handshake, it take time to complete and establis the connection&lt;/li>
&lt;li>Use port to establish the connection&lt;/li>
&lt;li>During hand-shake it acknowldge your machine to the requested server&lt;/li>
&lt;li>contains the 20Byte packet&lt;/li>
&lt;/ul>
&lt;h4 id="udp">UDP&lt;/h4>
&lt;ul>
&lt;li>User Datagram Protocol&lt;/li>
&lt;li>Connection less Protocol&lt;/li>
&lt;li>it provide the fast transmission&lt;/li>
&lt;li>Broadcast or multicast the message and the complete delivery of data is note guarnted&lt;/li>
&lt;li>Streamming on voice-over-io(VOIP), DHCP,DNS&lt;/li>
&lt;li>Used for streaming the data like procast, video&lt;/li>
&lt;li>contains the 8Byte packet&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="comman-ports-and-protocol">Comman Ports and Protocol&lt;/h3>
&lt;h4 id="tcp-1">TCP&lt;/h4>
&lt;pre>&lt;code> PROTOCOL/SERVICE PORT'S
FTP 21
SSH 22
TelNet 23
SMTP 25
DNS 53
HTTP/HTTPS 80/443
POP3 110
SMB 139+445
IMAP 143
&lt;/code>&lt;/pre>
&lt;h4 id="udp-1">UDP&lt;/h4>
&lt;pre>&lt;code> PROTOCOL/SERVICE PORT'S
DNS 53
DHCP 67.68
TFTP 69
SNMP 161
&lt;/code>&lt;/pre>
&lt;hr>
&lt;h3 id="the-osi-model">The OSI Model&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>Open Systems Interconnection(OSI)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Learn this mnemonic to to know the seven layer sequence&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Please Do Not Throw Sausage Pizza Away&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>OSI seven layers are&lt;/p>
&lt;pre>&lt;code> 1. Physical (P)Please
2. Data link (D)Do
3. Network (N)Not
4. Transport (T)Throw
5. Session (S)Sausage
6. Presentation (P)Pizza
7. Application (A)Away
&lt;/code>&lt;/pre>
&lt;/li>
&lt;li>
&lt;p>OSI Model Explain &lt;a href="https://www.imperva.com/learn/application-security/osi-model/" target="_blank" rel="noopener">REF&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://www.imperva.com/learn/wp-content/uploads/sites/13/2020/02/OSI-vs.-TCPIP-models.jpg.webp" alt="IMG" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;pre>&lt;code> Layers For
1. Physical -- Provide the connection between computer and network, it includes physical datacable,server
2. Data Link -- Make sure the data-transfer is error-free between different node, when data packet arrive at network layer then data link layer(DLL) deliver that packet to the requested host using MAC address.
3. Network -- Transmitt the data from one host to other, in different netwroks.It also place the reciver/sender ip address in header of packet.
4. Transport -- Data packet referred as Segment, it is responsible for the end-to-end delivery of complete message without any error/packet loss.
5. Session -- Responsible for the establishing the session,maintaining and also ensure the security
6. Presentation --- Data from application layer(layer 7) is extracted here and manipulate as per the required to transmit over network.
7. Application --- Used by the end user software such as web browser and email clients.
&lt;/code>&lt;/pre>
&lt;blockquote>
&lt;p>While Receiving the data from network model work from layer 1 &amp;ndash;&amp;gt; layer 7&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>While sending the data from machine model work from layer 7 &amp;ndash;&amp;gt; layer 1&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h3 id="networks">Networks&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>IP address are work with the third layer of the OSI Model&lt;/p>
&lt;/li>
&lt;li>
&lt;p>There are two types of ip address&lt;/p>
&lt;ul>
&lt;li>IPv4 : 192.168.34.123&lt;/li>
&lt;li>IPv6 : 23:s3:3w:34:dw:23:2d&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>In IPv4 each section after delimeter(.) is contain the 8 bits each (0 &amp;amp; 1)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The total of complete ip address is 32 byte.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>the total in terms of the bits is 256 that is from 0 to 255.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>There are many network around you and your system and all are having the very specific identity number that is known as IP address.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Types of ip address in a network&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Class&lt;/th>
&lt;th>Start ip&lt;/th>
&lt;th>End ip&lt;/th>
&lt;th>Subnet Mask&lt;/th>
&lt;th>Netwroks(max)&lt;/th>
&lt;th>Hosts(max)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>A&lt;/td>
&lt;td>0&lt;/td>
&lt;td>127&lt;/td>
&lt;td>255.0.0.0&lt;/td>
&lt;td>126&lt;/td>
&lt;td>16,646,144&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>B&lt;/td>
&lt;td>127&lt;/td>
&lt;td>191&lt;/td>
&lt;td>255.255.0.0&lt;/td>
&lt;td>16,383&lt;/td>
&lt;td>15,024&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>C&lt;/td>
&lt;td>192&lt;/td>
&lt;td>223&lt;/td>
&lt;td>255.225.255.0&lt;/td>
&lt;td>2097,151&lt;/td>
&lt;td>254&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/li>
&lt;li>
&lt;p>IP address in the binary format&lt;/p>
&lt;ul>
&lt;li>11111111.11111111.11111111.0 == 255.255.255.0&lt;/li>
&lt;li>== 192.168.15.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Some Standard Slash Network&lt;/p>
&lt;ul>
&lt;li>/24 Network
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>128&lt;/th>
&lt;th>64&lt;/th>
&lt;th>32&lt;/th>
&lt;th>16&lt;/th>
&lt;th>8&lt;/th>
&lt;th>4&lt;/th>
&lt;th>2&lt;/th>
&lt;th>1&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1&lt;/td>
&lt;td>0&lt;/td>
&lt;td>0&lt;/td>
&lt;td>0&lt;/td>
&lt;td>0&lt;/td>
&lt;td>0&lt;/td>
&lt;td>0&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/li>
&lt;li>/25 Network
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>128&lt;/th>
&lt;th>64&lt;/th>
&lt;th>32&lt;/th>
&lt;th>16&lt;/th>
&lt;th>8&lt;/th>
&lt;th>4&lt;/th>
&lt;th>2&lt;/th>
&lt;th>1&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1&lt;/td>
&lt;td>1&lt;/td>
&lt;td>0&lt;/td>
&lt;td>0&lt;/td>
&lt;td>0&lt;/td>
&lt;td>0&lt;/td>
&lt;td>0&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="links">Links&lt;/h3>
&lt;p>It is getting hard for me to write and draw the ahed so i am adding some link of my document go through them, Some link to internet resources&lt;/p>
&lt;ol>
&lt;li>&lt;a href="https://www.youtube.com/watch?v=ZxAwQB8TZsM" target="_blank" rel="noopener">7_second_subnating&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://drive.google.com/file/d/1ETKH31-E7G-7ntEOlWGZcDZWuukmeHFe/view" target="_blank" rel="noopener">subnet_execl_sheet&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://drive.google.com/file/d/1tl052Kxro6GOT15H0YfHaA9-fhV8xZRa/view?usp=drivesdk" target="_blank" rel="noopener">my_hand_written_notes&lt;/a>&lt;/li>
&lt;/ol></description></item><item><title>Information Gathering, the First Step for Exploitation</title><link>https://ukantjadia.github.io/post/information-gathering-first-step-for-exploitatoin/</link><pubDate>Sat, 30 Dec 2023 14:20:17 +0530</pubDate><guid>https://ukantjadia.github.io/post/information-gathering-first-step-for-exploitatoin/</guid><description>&lt;h1 id="recon">Recon&lt;/h1>
&lt;p>There are two type of Reconnaissance&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Passive Reconnaissance :&amp;ndash; Doing the recon without coming in direct contact of the target. \&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Active Reconnaissance :&amp;ndash; Doing the active notecible action on the target site.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="passive-reconnaissance-includes">Passive Reconnaissance includes&lt;/h2>
&lt;ul>
&lt;li>local/Geo Information
&lt;ul>
&lt;li>Satellite Images&lt;/li>
&lt;li>Building layout&lt;/li>
&lt;li>Cabin location, fence, count of head in building, ways to exit, break areas, security fencing.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Job information&lt;/li>
&lt;li>Senior manager name, meeting routine, job title.&lt;/li>
&lt;li>Image from social sites like badge photo, cubical, desktop.&lt;/li>
&lt;/ul>
&lt;h2 id="web-and-network-information">Web and Network Information&lt;/h2>
&lt;h3 id="targe-validation">Targe Validation&lt;/h3>
&lt;p>First thing you have to do is, validate your target.&lt;/p>
&lt;p>Weather the description of given target is having the relating with the given ip&lt;/p>
&lt;h3 id="finding-subdomain">Finding Subdomain&lt;/h3>
&lt;p>Testing only one domain or some domain is decrease the chances of finding the flaw.&lt;/p>
&lt;p>Testing the all in-scope sub-domain is a good practice.&lt;/p>
&lt;p>Tool can be use for finding the subdomain are&lt;/p>
&lt;p>Google fu, dig, Nmap, sublist3r, bluto, crt.sh etc.&lt;/p>
&lt;h3 id="fingerprinting">Fingerprinting&lt;/h3>
&lt;p>We need to know which website running what on front or back.&lt;/p>
&lt;p>What&amp;rsquo;s running on the host.&lt;/p>
&lt;p>What&amp;rsquo;s web server, ssh, ftp, services.&lt;/p>
&lt;h3 id="data-breaches">Data Breaches&lt;/h3>
&lt;p>Just check if the credentials or account is pawned or not&lt;/p>
&lt;p>Use this to check&lt;/p>
&lt;p>havebeenpawned, Breach-prose, weleakinfo.&lt;/p>
&lt;p>&lt;strong>NOTE:&lt;/strong> Better Recon, enumeration makes you better pentester.&lt;/p>
&lt;h1 id="email-address-gathering-with-hunterio">Email Address gathering with Hunter.io&lt;/h1>
&lt;ul>
&lt;li>
&lt;p>You can use Hunter.io to find the people email address working or related to the domain you enter.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>In free plan it only provide the 20 searches as free, so do not abuse the searches.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>It also tell the where it get all emails written in source.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>You have to login with valid email id to have account.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>It also provide the category of email address, the department of the email owner.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h1 id="breach-phrase-from-github">Breach-Phrase from github&lt;/h1>
&lt;ul>
&lt;li>It is tool on the GitHub, it checks for the leaked credentials in its own in-build data of credentials&lt;/li>
&lt;li>This in build data is gather from the dark web store.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>NOTE:&lt;/strong> the gather email address are plays important role in further recon and enumeration.&lt;/p>
&lt;h1 id="utilizing-the-harvester">Utilizing the Harvester&lt;/h1>
&lt;ul>
&lt;li>It searches with the domain.&lt;/li>
&lt;li>It can gather the subdomain name, e-mail addresses, virtual hosts, open ports/banner, and employee name from different public sources like search engine, social site&lt;/li>
&lt;/ul>
&lt;h1 id="hunting-subdomain">Hunting Subdomain&lt;/h1>
&lt;p>We need see/identify what are the available or working subdomain out there.
use this&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Sublist3r&lt;/p>
&lt;ul>
&lt;li>Sometimes it only give the 3 level subdomain&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>crt.sh&lt;/p>
&lt;ul>
&lt;li>It give the all registered subdomain that can be 3 level or 4 level&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>OWASP Amass is more efficient tool than above mentioned&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Sublist3r is slow during to fast up increase the threads
&lt;strong>NOTE:&lt;/strong> Found subdomain may or may not alive.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h1 id="identifying-the-web-technologies">Identifying the Web Technologies&lt;/h1>
&lt;ul>
&lt;li>To Fingerprinting the web page or to get the services running in the background&lt;/li>
&lt;li>wappalyzer is browser extension which show the frontend and backend services.&lt;/li>
&lt;li>Terminal tool is whatweb
&lt;ul>
&lt;li>use &lt;code>whatweb -h&lt;/code> for more details of tool&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>Imputation of Missing Data</title><link>https://ukantjadia.github.io/post/imputation-of-missing-data/</link><pubDate>Sat, 30 Dec 2023 14:19:38 +0530</pubDate><guid>https://ukantjadia.github.io/post/imputation-of-missing-data/</guid><description>&lt;h1 id="find-the-missing-data">Find the missing data&lt;/h1>
&lt;p>In order to find the missing data in large dataset we use the functions of pandas library, functions is isnull()&lt;/p>
&lt;ul>
&lt;li>DataFrame_name.isnull()&lt;/li>
&lt;li>it will give the outout as boolean for every element of dataset.&lt;/li>
&lt;li>To get the status of a single comlumn apply the with &lt;code>.any(axis=1)&lt;/code> parameter like &lt;code>df[df.isnull().any(axis-1)]&lt;/code>&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>NOTE: DataFrame_name.isnull() function do not consider an empty string or string with space as missing value. So we have to check and replace the empty string from our dataset if any exist.&lt;/p>
&lt;/blockquote>
&lt;h1 id="process-to-handle-missing-data">Process to Handle Missing Data&lt;/h1>
&lt;p>There are mainly two process to handle the missing data in our observation&lt;/p>
&lt;ol>
&lt;li>drop the missing data by row/column&lt;/li>
&lt;li>Imput the missing values using mean/median/mode&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>To drop the data row with missing/nan values :&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">df.dropna()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>We can imput the data in servel ways using the &lt;code>df.fillna()&lt;/code> on the dataset.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">df&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;col_name&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">fillna&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="n">inplave&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># It will replace nan with 1 in the col_name column&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">df&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;date&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">fillna&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">method&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;ffill&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">inplace&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># It will fill the previous value on the next nan observation &lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>We can also use the mean,mode and median to fill the missing value&lt;/li>
&lt;/ul>
&lt;h1 id="what-if-we-ignore-the-missing-valuedata">What if we ignore the Missing Value/data&lt;/h1>
&lt;ul>
&lt;li>Missing Data can lead to bias and inaccurate result and conclusions.&lt;/li>
&lt;/ul></description></item><item><title>Basic Git Commands</title><link>https://ukantjadia.github.io/post/basic-git-commands/</link><pubDate>Sat, 30 Dec 2023 14:15:59 +0530</pubDate><guid>https://ukantjadia.github.io/post/basic-git-commands/</guid><description>&lt;h1 id="what-you-should-do-in-git">what you should do in git&lt;/h1>
&lt;ol>
&lt;li>git init -b main&lt;/li>
&lt;li>git remote add origin &amp;lt;repo_link&amp;gt;&lt;/li>
&lt;li>git remote -v&lt;/li>
&lt;/ol>
&lt;hr>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> to the root file of the project
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;+ Project &amp;#34;&lt;/span> &amp;gt;&amp;gt; README.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git init
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git add .
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git commit -m &lt;span class="s2">&amp;#34;README&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git branch -M Main
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git remote add origin &amp;lt;repo_link&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git push -u origin Main
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;ul>
&lt;li>pushing an existing repo from cli
git remote add origin &lt;a href="https://github.com/UserCtf777/Inkdrop.git" target="_blank" rel="noopener">https://github.com/UserCtf777/Inkdrop.git&lt;/a>
git branch -M Main
git push -u origin Main&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>after clonning any repo it have the address of origin, simply you cannot add your repo url for backup/project/ICR
for that you have to change the origin url follow the following command&lt;/p>
&lt;ul>
&lt;li>
&lt;p>to check the origin url try the remote verbose
git remote -v&lt;/p>
&lt;/li>
&lt;li>
&lt;p>to change the remote origin try
git remote set-url origin &amp;lt;repo_url&amp;gt;&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;ul>
&lt;li>
&lt;p>new error found&lt;/p>
&lt;/li>
&lt;li>
&lt;p>sometimes when we clone the repo we use depth=1 to remove it&amp;rsquo;s history&lt;/p>
&lt;/li>
&lt;li>
&lt;p>this give the error during pushing it to other origin&lt;/p>
&lt;/li>
&lt;li>
&lt;p>error looks like&lt;/p>
&lt;/li>
&lt;li>
&lt;pre>&lt;code> ![remote rejected] Main -&amp;gt; Main (shallow update not allowed)
&lt;/code>&lt;/pre>
&lt;/li>
&lt;li>
&lt;pre>&lt;code> error: failed to push some refs to
&lt;/code>&lt;/pre>
&lt;/li>
&lt;li>
&lt;p>to solve this try
git remote set-url &amp;lt;old_url&amp;gt;
git fetch &amp;ndash;unshallow old&lt;/p>
&lt;/li>
&lt;/ul>
&lt;ol>
&lt;li>git init -b main&lt;/li>
&lt;li>git remote add origin &amp;lt;repo_link&amp;gt;&lt;/li>
&lt;li>git remote -v&lt;/li>
&lt;/ol>
&lt;hr>
&lt;p>cd to the root file of the project
echo &amp;ldquo;+ Project &amp;quot; &amp;raquo; README.md
git init
git add .
git commit -m &amp;ldquo;README&amp;rdquo;
git branch -M Main
git remote add origin &amp;lt;repo_link&amp;gt;
git push -u origin Main&lt;/p>
&lt;hr>
&lt;ul>
&lt;li>pushing an existing repo from cli
git remote add origin &lt;a href="https://github.com/UserCtf777/Inkdrop.git" target="_blank" rel="noopener">https://github.com/UserCtf777/Inkdrop.git&lt;/a>
git branch -M Main
git push -u origin Main&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>after clonning any repo it have the address of origin, simply you cannot add your repo url for backup/project/ICR
for that you have to change the origin url follow the following command&lt;/p>
&lt;ul>
&lt;li>
&lt;p>to check the origin url try the remote verbose
git remote -v&lt;/p>
&lt;/li>
&lt;li>
&lt;p>to change the remote origin try
git remote set-url origin &amp;lt;repo_url&amp;gt;&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;ul>
&lt;li>
&lt;p>new error found&lt;/p>
&lt;/li>
&lt;li>
&lt;p>sometimes when we clone the repo we use depth=1 to remove it&amp;rsquo;s history&lt;/p>
&lt;/li>
&lt;li>
&lt;p>this give the error during pushing it to other origin&lt;/p>
&lt;/li>
&lt;li>
&lt;p>error looks like&lt;/p>
&lt;/li>
&lt;li>
&lt;pre>&lt;code> ![remote rejected] Main -&amp;gt; Main (shallow update not allowed)
&lt;/code>&lt;/pre>
&lt;/li>
&lt;li>
&lt;pre>&lt;code> error: failed to push some refs to
&lt;/code>&lt;/pre>
&lt;/li>
&lt;li>
&lt;p>to solve this try
git remote set-url &amp;lt;old_url&amp;gt;
git fetch &amp;ndash;unshallow old
+!/bin/bash&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>cd ~/work/obs/Obsidian&lt;/p>
&lt;p>git add .
git commit -m &amp;lsquo;daily update&amp;rsquo;
git push&lt;/p>
&lt;p>+!/bin/bash&lt;/p>
&lt;ul>
&lt;li>
&lt;p>to make dir work as git repo
git init&lt;/p>
&lt;/li>
&lt;li>
&lt;p>to check the changes
git status&lt;/p>
&lt;/li>
&lt;li>
&lt;p>to sort/simplify the changes
git add .&lt;/p>
&lt;/li>
&lt;li>
&lt;p>git log shows the log of all commit done
git log&lt;/p>
&lt;/li>
&lt;li>
&lt;p>restore to discard the changes
git restore .&lt;/p>
&lt;/li>
&lt;li>
&lt;p>to commit the changes [with &amp;lsquo;-m&amp;rsquo; for successful commit/{-m =&amp;gt; metadata of changes}]
git commit -m &amp;ldquo;daily update&amp;rdquo;&lt;/p>
&lt;/li>
&lt;li>
&lt;p>git push to add new file to the repo
git push&lt;/p>
&lt;/li>
&lt;li>
&lt;p>command to add remote repo / it skip the authentication part during git push
git remote add origin &lt;a href="mailto:git@github.com">git@github.com&lt;/a>:UserCtf777/Obsidian.git
git branch -M master
git push -m origin master&lt;/p>
&lt;/li>
&lt;li>
&lt;p>To solve the conflicts during rebasing
git rebase &amp;ndash;continue + fix conflicts and run this
git rebase &amp;ndash;skip + to skip this patch/changes
git rebase &amp;ndash;abort + to checkout the original branch&lt;/p>
&lt;/li>
&lt;li>
&lt;p>When we have unresolved conflicts before merging or having error related to add
git fetch + to gain the latest changes from server
git merge origin master + to give a try to automatice merging&lt;/p>
&lt;/li>
&lt;li>
&lt;p>it will only work if branch has to merge something&amp;ndash; it can be checked with git status
git merge &amp;ndash;abort + the unresolved conflicts will be cleared off&lt;/p>
&lt;/li>
&lt;li>
&lt;p>to edit the conflicts
git rebase &amp;ndash;edit-todo
git rebase &amp;ndash;continue&lt;/p>
&lt;/li>
&lt;li>
&lt;p>if conflicts dosen&amp;rsquo;t resolve then
git rebase &amp;ndash;abort&lt;/p>
&lt;/li>
&lt;li>
&lt;p>it will give the path of unresolved files&lt;/p>
&lt;/li>
&lt;li>
&lt;p>if you know how to edit then resolve them&lt;/p>
&lt;/li>
&lt;li>
&lt;p>OR you can remove that confict by
git rm &lt;file>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>if nothing is ahppening you can skip the commit wiht
git rebase &amp;ndash;skip&lt;/p>
&lt;/li>
&lt;/ul></description></item><item><title>Enumeration Second Step for Exploitation</title><link>https://ukantjadia.github.io/post/enumeration-second-step-for-explotation/</link><pubDate>Sat, 30 Dec 2023 14:15:39 +0530</pubDate><guid>https://ukantjadia.github.io/post/enumeration-second-step-for-explotation/</guid><description>&lt;h1 id="enumeration">Enumeration&lt;/h1>
&lt;h2 id="kioptrix-level-1">Kioptrix level 1&lt;/h2>
&lt;ul>
&lt;li>Now as beginner we should a have vulnerable machine to test&lt;/li>
&lt;li>Use &lt;a href="Vhttps://www.vulnhub.com/entry/kioptrix-level-1-1,22/">kioptrix level a&lt;/a> from vulnhub.&lt;/li>
&lt;li>This is used for beginner to develop there skill by testing the vulnerable machine.&lt;/li>
&lt;li>Download it, and set up it on your virtual software.&lt;/li>
&lt;li>Make sure the network connection is set to &lt;code>NAT&lt;/code>&lt;/li>
&lt;li>Open the root folder(which contain all configuration files) and open configuration file and change &lt;code>Bridge&lt;/code> to &lt;code>NAT&lt;/code>&lt;/li>
&lt;li>&lt;code>I Coppied&lt;/code> select this option form pop dialogue&lt;/li>
&lt;li>Once the setup is done do the &lt;code>arp-scan -l&lt;/code>&lt;/li>
&lt;li>On your system it will discover the available host in your ip CHIR&lt;/li>
&lt;li>Ignore the x.x.x.1 and x.x.x.254 because this are your network identity and broadcast ip, Rest all machine are lying in your ip range.&lt;/li>
&lt;/ul>
&lt;h2 id="nmap-stealthy-scan">Nmap stealthy scan&lt;/h2>
&lt;p>What normal two-way connection looks like&lt;/p>
&lt;blockquote>
&lt;p>SYN &amp;lt;-&amp;gt; SYNACK &amp;lt;-&amp;gt; ACK&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>Stealthy scan doesn&amp;rsquo;t establish the connection it ask for the open port on the serve as server reply the status it will take the step back without establishing the connection.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>SYN &amp;lt;-&amp;gt; SYNACK &amp;lt;-&amp;gt; RST&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>Use this Namp flags for better enumeration
&lt;code>nmap -T4 -p- -A &amp;lt;ip_address&amp;gt;&lt;/code>&lt;/li>
&lt;li>Go through the scan properly&lt;/li>
&lt;li>Visit ip/webpage, check weather there you can do anything like directory busting.&lt;/li>
&lt;li>Get all services running, also check the header and behaviour.&lt;/li>
&lt;li>Do whatever you can do.&lt;/li>
&lt;li>Then use nikto web vulnerability tool.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>&lt;code>nikto -host &amp;lt;url&amp;gt;&lt;/code>&lt;/p>
&lt;/blockquote>
&lt;h2 id="directory-busting">Directory busting&lt;/h2>
&lt;ul>
&lt;li>dirbuster / birb / gobuster&lt;/li>
&lt;/ul>
&lt;h2 id="dirbuster">Dirbuster&lt;/h2>
&lt;ul>
&lt;li>start dirbuster from terminal&lt;/li>
&lt;li>fill the slot with information of your target&lt;/li>
&lt;li>for word file use &lt;code>/usr/share/wordlist/dirbuster&lt;/code>&lt;/li>
&lt;li>File extension depends on you or the time you have.&lt;/li>
&lt;li>Received/common url can be a information disclosure of anything like stats, user-data, server header, response.&lt;/li>
&lt;/ul></description></item><item><title>Dwmbar vs Dwmblocks, a Task Manager</title><link>https://ukantjadia.github.io/post/dwmbar-vs-dwmblocks-a-taskmanger/</link><pubDate>Sat, 30 Dec 2023 14:15:02 +0530</pubDate><guid>https://ukantjadia.github.io/post/dwmbar-vs-dwmblocks-a-taskmanger/</guid><description>&lt;h1 id="2022-05-17">2022-05-17&lt;/h1>
&lt;h2 id="problem-statement">problem statement&lt;/h2>
&lt;p>with dwmbar the cpu uses is touching its picks and that thing i don&amp;rsquo;t like&lt;/p>
&lt;h2 id="solution">solution&lt;/h2>
&lt;p>to solve this i am trying to get the dwmblocks of Bugswriter&lt;/p>
&lt;h2 id="error-or-problem-faced">error or problem faced&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>get repo&lt;/p>
&lt;/li>
&lt;li>
&lt;p>run make and you may get this error 🔽&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Pasted image 20220518015013.png&lt;/p>
&lt;/li>
&lt;li>
&lt;p>solving this we get this&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="solution-1">Solution&lt;/h2>
&lt;p>okh now the error is fixed&lt;/p>
&lt;p>So first know what is error about&lt;/p>
&lt;p>&lt;strong>error&lt;/strong>
we are trying to automatically compile the dwmblocks.c file and in the code the library which is ariseing the error that is -lX11
The path to solve this is we have to do the maual compilation of an C language file and that is very easy&lt;/p>
&lt;p>command for compilation is &lt;code>gcc dwmblocks.c -lX11 -o dwmblocks&lt;/code> ▶ gcc as in-build compiler, dwmblocks.c file to compile, -lX11 is lib adding manually during compilation, -o to get output with, dwmblocks as name of output file&lt;/p>
&lt;p>edit the config file according to required blocks&lt;/p>
&lt;p>NOTE📌 : cp the dwmblocks file to the &lt;code>/usr/local/bin&lt;/code> so it can run from any where&lt;/p>
&lt;p>take the dwmbloks script form lukesmith voidrice build use this&lt;/p>
&lt;p>add bar scripts in the &lt;code>/usr/local/bin&lt;/code> this path is given in the documentation of dwmblocks&lt;/p>
&lt;p>now you are ready to run&lt;/p>
&lt;p>&lt;strong>Command&lt;/strong>&lt;/p>
&lt;p>&lt;code>idconfig&lt;/code> &amp;ndash;&amp;gt; configure dynamic linker run-time bindings.&lt;/p>
&lt;p>Used to create links and cache to the most recent shared
libraries .&lt;/p>
&lt;p>&lt;code>gcc &amp;lt;-lib-to-add&amp;gt; -o &amp;lt;output-file-name&amp;gt;&lt;/code>&lt;/p>
&lt;p>&lt;code>gcc dwmblocks.c -lX11 -o dwmblocks&lt;/code>&lt;/p></description></item><item><title>Networking Command Netstat</title><link>https://ukantjadia.github.io/post/networking-command-netstat/</link><pubDate>Sat, 30 Dec 2023 14:14:11 +0530</pubDate><guid>https://ukantjadia.github.io/post/networking-command-netstat/</guid><description>&lt;h1 id="learn-netstat">Learn Netstat&lt;/h1>
&lt;blockquote>
&lt;p>A basic &lt;code>Linux&lt;/code> network command&lt;/p>
&lt;/blockquote>
&lt;h2 id="netstat">NETSTAT&lt;/h2>
&lt;ul>
&lt;li>Prints the network connection and routing tables.&lt;/li>
&lt;li>Like an CCTV monitor for every connection come in and go out from your machine.&lt;/li>
&lt;li>MiniManual&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;ul>
&lt;li>&lt;code>netstat -ant&lt;/code> : &lt;code>a&lt;/code> for all connection, &lt;code>n&lt;/code> for numeric, &lt;code>t&lt;/code> for all TCP connection//&lt;code>u&lt;/code> for the UDP connection&lt;/li>
&lt;li>&lt;code>netstat -rnec&lt;/code> :&lt;code>r&lt;/code> for the route information, &lt;code>n&lt;/code> numeric, &lt;code>e&lt;/code> extend, &lt;code>c&lt;/code> continous prints the result&lt;/li>
&lt;li>&lt;code>netstat -stuw&lt;/code> : &lt;code>s&lt;/code> for statistics summary,&lt;code>t/u&lt;/code> for tcp/udp, &lt;code>w&lt;/code> prints raw data&lt;/li>
&lt;li>&lt;code>netstat -tulpn&lt;/code> : it shows the connectio with PID numbers&lt;/li>
&lt;li>&lt;code>lsof -i&lt;/code> : it establish the connection&lt;/li>
&lt;/ul>
&lt;/blockquote></description></item><item><title>Cloud Computing Basics</title><link>https://ukantjadia.github.io/post/cloud-computing-basics/</link><pubDate>Sat, 30 Dec 2023 14:13:52 +0530</pubDate><guid>https://ukantjadia.github.io/post/cloud-computing-basics/</guid><description>&lt;h1 id="cloud-computing">Cloud Computing&lt;/h1>
&lt;ol>
&lt;li>Types of cloud/ Cloud deployment model&lt;/li>
&lt;/ol>
&lt;h2 id="public-cloud">Public Cloud&lt;/h2>
&lt;img src="img1.jpg" alt="Example Image" width="300" height="200" align="right">
&lt;!-- + *[IMAGE](https://media.geeksforgeeks.org/wp-content/uploads/20211123123729/Group4-660x330.jpg) -->
&lt;ul>
&lt;li>Public cloud managed by third parties which provide cloud service over the enternet to the pubilc&lt;/li>
&lt;li>public cloud is the go-to option for the small enterprise, where they are able to start there businesse without large upfront investment.&lt;/li>
&lt;li>multitenacy :&amp;ndash;&amp;gt; meant to serve multiple user not a singel user&lt;/li>
&lt;/ul>
&lt;h2 id="private-cloud">Private Cloud&lt;/h2>
&lt;img src="img2.jpg" alt="Example Image" width="300" height="200" align="right">
&lt;!-- *[IMAGE](https://media.geeksforgeeks.org/wp-content/uploads/20211123123851/Group1-660x330.jpg)* -->
&lt;ul>
&lt;li>aka coprate cloud or internal cloud&lt;/li>
&lt;li>used by the organization to built and manage there own data centers internally or by the third party.&lt;/li>
&lt;li>private cloud distrubuted system that work on private infrastructure and provide the user with dynaminacally provisioning of computing resource&lt;/li>
&lt;li>Advantages&lt;/li>
&lt;li>better performance, improved speed, space complexity&lt;/li>
&lt;li>suitable for the organization that requires a separate cloud for there personal use and data security is the first priority.&lt;/li>
&lt;li>Coustomer information protection&lt;/li>
&lt;li>Infrastureture ensuring SLA&lt;/li>
&lt;li>Complience with standard procedures and operations&lt;/li>
&lt;/ul>
&lt;h2 id="hybrid-cloud">Hybrid Cloud&lt;/h2>
&lt;img src="img3.png" alt="Example Image" width="300" height="200" align="right">
&lt;!-- &lt;!- *[IMAGE](https://static.javatpoint.com/cloudpages/images/hybridcloud.png)* --> -->
&lt;ul>
&lt;li>it is a combination of public and private cloud&lt;/li>
&lt;li>Hybrid cloud is partially secure because the services which are running the public cloud can be access by anyone and service running by private cloud can be access by the organization user&amp;rsquo;s.&lt;/li>
&lt;li>Example : Google application gmail, gdrive, office 365&lt;/li>
&lt;/ul></description></item><item><title>Basics of Operating Sys</title><link>https://ukantjadia.github.io/post/basics-of-operating-sys/</link><pubDate>Mon, 21 Mar 2022 22:56:25 +0530</pubDate><guid>https://ukantjadia.github.io/post/basics-of-operating-sys/</guid><description>&lt;h1 id="1--operating-systemos">1. Operating System[OS]&lt;/h1>
&lt;img src="https://www.gatevidyalay.com/wp-content/uploads/2018/11/Translating-Logical-Address-into-Physical-Address-Diagram.png" alt="Example Image" width="300" height="200" align="right">
&lt;ol>
&lt;li>Paging :&amp;ndash;&amp;gt;&lt;/li>
&lt;/ol>
&lt;!-- ![IMAGE](https://www.gatevidyalay.com/wp-content/uploads/2018/11/Translating-Logical-Address-into-Physical-Address-Diagram.png) -->
&lt;ol>
&lt;li>it eleminates the need of contiguos memory allocation&lt;/li>
&lt;li>have two main component and parts&lt;/li>
&lt;li>component -&amp;gt; page number(p) and frame number(d)&lt;/li>
&lt;li>parts
+ Logical address -&amp;gt; addres generated by the CPU {represented in bits}
+ Physical address -&amp;gt; physical location of a required data in a memory&lt;/li>
&lt;li>In the process of accessing any data from memory, that will be done by accessing the memory location twice
to remove this double accessing of the memory we use the TLB{Translation Lockaside Buffer}.&lt;/li>
&lt;li>TLB &amp;ndash;&amp;gt; It contains the page table entries that have been most recently used. &lt;em>&lt;a href="https://media.geeksforgeeks.org/wp-content/uploads/20190225192626/tlb1.jpg" target="_blank" rel="noopener">IMAGE&lt;/a>&lt;/em>&lt;/li>
&lt;li>it is a kind of cache memory resister of memory with there physical address&lt;/li>
&lt;li>TLB stored the frequently used data for high speed accessing&lt;/li>
&lt;li>It consist of two parts
4. key or tag :: like page number
5. value :: like frame number&lt;/li>
&lt;li>It consist of few data that is { frequently/ recently used data}&lt;/li>
&lt;li>If data not found in the TLB table then it will search in the page table for that data {TLB miss}&lt;/li>
&lt;li>Advantages&lt;/li>
&lt;li>Disadvantages&lt;/li>
&lt;li>Terms
9. Hit Ratio{HR} &amp;ndash;&amp;gt; successful search / total searches doen
10. Miss Ratio{MR} &amp;ndash;&amp;gt; HR-total searches done
11. TLBT &amp;ndash;&amp;gt; Time( complete TLB search )
12. MAT &amp;ndash;&amp;gt; TIme( time to acces memory )
13. Effective Access Time
14. formula
EAT = HR*( TLBT + MAT ) + MR*( TLBT + 2*MAT)&lt;/li>
&lt;/ol></description></item></channel></rss>