[{"content":"\n\n\u003ch1 id=\"goodbye-vercel-hello-dokploy\"\u003eGoodbye Vercel | Hello Dokploy\u003c/h1\u003e\n\n\u003cp\u003eLike many React developers, I’ve always leaned toward \u003cstrong\u003eNext.js\u003c/strong\u003e as my go-to React-based framework. Thanks to its tight integration with \u003cstrong\u003eVercel\u003c/strong\u003e, deploying a Next.js app was as simple as pushing to Git.\u003c/p\u003e\n\n\u003cp\u003eBut lately, Vercel has introduced several \u003cstrong\u003elimitations\u003c/strong\u003e on their free tier:\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003ePrivate Git repositories now require a \u003cstrong\u003epaid plan\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eThere’s a \u003cstrong\u003etime limit on serverless API routes\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdditional restrictions that make the platform less appealing for indie devs and hobbyists\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003eTo be clear, I don’t blame Vercel — businesses need to make money. But it’s simply \u003cstrong\u003enot the path I want to follow\u003c/strong\u003e.\u003c/p\u003e\n\n\u003cp\u003eSo I began exploring \u003cstrong\u003eopen-source alternatives\u003c/strong\u003e, and that’s when I found \u003cstrong\u003eDokploy\u003c/strong\u003e — a powerful, self-hosted platform that offers nearly all the features of Vercel, and in some cases, even more.\u003c/p\u003e\n\n\u003cp\u003eIn this post, I’ll walk you through:\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003eHow I use Dokploy to deploy my web apps\u003c/li\u003e\n\u003cli\u003eHow I host my databases (MongoDB, SQL, PostgreSQL)\u003c/li\u003e\n\u003cli\u003eHow I self-host services like search engines and RSS readers\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/blogs/dokploy/dokploy-home.png\" alt=\"dockploy home\" /\u003e\u003c/p\u003e\n\n\u003chr /\u003e\n\n\u003ch2 id=\"prerequisites\"\u003e🛠️ Prerequisites\u003c/h2\u003e\n\n\u003cp\u003eTo get started with Dokploy, you’ll need access to a \u003cstrong\u003eVirtual Private Server (VPS)\u003c/strong\u003e. Here are a few providers to choose from:\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://contabo.com\"\u003eContabo\u003c/a\u003e \u003cem\u003e(my personal pick — affordable and reliable)\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.vultr.com\"\u003eVultr\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.hetzner.com\"\u003eHetzner\u003c/a\u003e \u003cem\u003e(I had issues creating an account, but it’s very cost-effective)\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.digitalocean.com\"\u003eDigitalOcean\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003e\u003cstrong\u003eMinimum recommended VPS specs:\u003c/strong\u003e\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003e2GB RAM\u003c/li\u003e\n\u003cli\u003e30GB disk space\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003chr /\u003e\n\n\u003ch2 id=\"installation\"\u003e⚙️ Installation\u003c/h2\u003e\n\n\u003cp\u003eThe installation process is surprisingly simple.\u003c/p\u003e\n\n\u003ch3 id=\"before-you-begin\"\u003e✅ Before you begin:\u003c/h3\u003e\n\n\u003cp\u003eEnsure the following \u003cstrong\u003eports are open\u003c/strong\u003e on your server:\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e80\u003c/code\u003e – HTTP\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e443\u003c/code\u003e – HTTPS\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e3000\u003c/code\u003e – Dokploy Dashboard\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003eThen, install Dokploy using the one-liner script:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode class=\"language-bash\"\u003ecurl -sSL https://dokploy.com/install.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eYou’ll be prompted to \u003cstrong\u003ecreate an admin account\u003c/strong\u003e. Be sure to save your credentials securely — this will be your access to the Dokploy dashboard.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/blogs/dokploy/dokploy-signup.png\" alt=\"dokploy-signup\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"why-i-chose-dokploy\"\u003e🚀 Why I Chose Dokploy\u003c/h2\u003e\n\n\u003cp\u003eDokploy offers a wide range of features, but I primarily use it for:\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDeploying Next.js apps\u003c/strong\u003e easily with Docker containers\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHosting MongoDB, MySQL, and PostgreSQL\u003c/strong\u003e for personal projects\u003c/li\u003e\n\u003cli\u003eRunning \u003cstrong\u003eself-hosted services\u003c/strong\u003e like:\n\n\u003cul\u003e\n\u003cli\u003eMy own search engine\u003c/li\u003e\n\u003cli\u003eCustom RSS reader dashboard\u003c/li\u003e\n\u003c/ul\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003eThere are tons of other features Dokploy provides — like integrated CI/CD, Git deployments, SSL by default — but honestly, I don’t even use all of them yet.\u003c/p\u003e\n\n\u003chr /\u003e\n\n\u003ch2 id=\"official-setup-documentation\"\u003e📚 Official Setup Documentation\u003c/h2\u003e\n\n\u003cp\u003eDokploy supports multiple Linux distributions and popular VPS providers:\u003c/p\u003e\n\n\u003ch3 id=\"supported-distros\"\u003eSupported Distros:\u003c/h3\u003e\n\n\u003cul\u003e\n\u003cli\u003eUbuntu 24.04 / 22.04 / 20.04 / 18.04\u003c/li\u003e\n\u003cli\u003eDebian 12 / 11 / 10\u003c/li\u003e\n\u003cli\u003eFedora 40\u003c/li\u003e\n\u003cli\u003eCentOS 8 / 9\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003chr /\u003e\n\n\u003ch2 id=\"alternative-dokploy-cloud\"\u003e🌐 Alternative: Dokploy Cloud\u003c/h2\u003e\n\n\u003cp\u003eDon’t want to manage your own server? Try \u003ca href=\"https://dokploy.com\"\u003e\u003cstrong\u003eDokploy Cloud\u003c/strong\u003e\u003c/a\u003e — the hosted version of Dokploy, where you don’t need to worry about installation, updates, or security patches.\u003c/p\u003e\n\n\u003chr /\u003e\n\n\u003ch2 id=\"final-thoughts\"\u003e🏁 Final Thoughts\u003c/h2\u003e\n\n\u003cp\u003eDokploy has been a game-changer for me. It gave me full control of my deployments, helped me avoid vendor lock-in, and aligned perfectly with my preference for open-source tooling.\u003c/p\u003e\n\n\u003cp\u003eIf you’re looking to break free from platform limitations and embrace self-hosted devops, \u003cstrong\u003eDokploy is worth a shot\u003c/strong\u003e.\u003c/p\u003e\n","description":"Dokploy is a powerful, self-hosted platform that offers nearly all the features of Vercel, and in some cases, even more.","image":"/images/blogs/dokploy/dokploy.png","permalink":"https://mishalabdullah.com/blogs/dokploy-self-hosting/","title":"Dokploy - Self-Hosted Platform for Web Apps"},{"content":"\n\n\u003cp\u003eIn this we are going to learn how to get data from the url of a NEXTjs application.\nIn this blogs we will be taking a look at the latest version of nextjs which is version 13,\nit would be different for version 12 and so on. I am assuming you got npm installed or something similar to that for managing your packages.\u003c/p\u003e\n\n\u003ch3 id=\"creating-a-nextjs-application\"\u003eCreating a NEXTjs Application\u003c/h3\u003e\n\n\u003cp\u003eIn NEXTjs 13 for creating an application just run.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode class=\"language-shell\"\u003enpx create-next-app@latest app\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003ein this tutorial we will be creating an app called app. By doing this you will get some prompts as for that you can accept and decline the suggestions according to your needs, but do remember to accpet \u003cstrong\u003eAppRouter\u003c/strong\u003e and also decine the use \u003cstrong\u003e/src\u003c/strong\u003e directory, we will be using the new app dir version.\u003c/p\u003e\n\n\u003ch3 id=\"creating-a-link\"\u003eCreating A Link\u003c/h3\u003e\n\n\u003cp\u003eFor getting the data from url, I am going to the the \u003ccode\u003eLink\u003c/code\u003e function from \u003ccode\u003enext/navigation\u003c/code\u003e\nbelow i would be showing an emaple of how to use link you can change how ever you want that to be.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode class=\"language-javascript\"\u003e\u0026lt;Link\n  href=\u0026quot;/hello?color=pink\u0026quot;\n  className=\u0026quot;group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30\u0026quot;\n  target=\u0026quot;_blank\u0026quot;\n  rel=\u0026quot;noopener noreferrer\u0026quot;\n\u0026gt;\n  \u0026lt;h2 className={`mb-3 text-2xl font-semibold`}\u0026gt;\n    Deploy{\u0026quot; \u0026quot;}\n    \u0026lt;span className=\u0026quot;inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none\u0026quot;\u0026gt;\n      -\u0026amp;gt;\n    \u0026lt;/span\u0026gt;\n  \u0026lt;/h2\u0026gt;\n  \u0026lt;p className={`m-0 max-w-[30ch] text-sm opacity-50`}\u0026gt;Pink\u0026lt;/p\u0026gt;\n\u0026lt;/Link\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eI this example do focus on the href part I am giving the value inside the href after the \u003ccode\u003e?\u003c/code\u003e symbol followed by a keyword and the date.\u003c/p\u003e\n\n\u003cp\u003eHere we are giving the page address followed by a question, Now this is the syntax for Link after the question mark you are supposed to use a keyword that you can think of, which is used for accessing the value in an another page then atlast and \u003ccode\u003e=\u003c/code\u003e sign followed by the data which you want to pass\u003c/p\u003e\n\n\u003ch3 id=\"accessing-the-link\"\u003eAccessing The Link\u003c/h3\u003e\n\n\u003cp\u003eNow for accessing the data from another page use need to import \u003ccode\u003esearchParams\u003c/code\u003e from \u003ccode\u003enext/navigation\u003c/code\u003e.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode class=\"language-javascript\"\u003e\u0026quot;use client\u0026quot;;\n\nimport { useSearchParams } from \u0026quot;next/navigation\u0026quot;;\n\nexport default function Hello() {\n  const searchParams = useSearchParams();\n\n  const Color = searchParams.get(\u0026quot;color\u0026quot;);\n\n  return (\n    \u0026lt;div\u0026gt;\n      \u0026lt;div\u0026gt;\n        \u0026lt;h1\u0026gt;{Color}\u0026lt;/h1\u0026gt;\n      \u0026lt;/div\u0026gt;\n    \u0026lt;/div\u0026gt;\n  );\n}\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eNow we get the value passed using the \u003ccode\u003eColor\u003c/code\u003e variable.\u003c/p\u003e\n","description":"In this we are going to learn how to get data from the url of a NEXTjs application.In this blogs we will be taking a look at the latest version of nextjs which is version 13,it would be different for version 12 and so on. I am assuming you got npm installed or something similar to that for managing your packages.","image":"/images/blogs/nextjslink.png","permalink":"https://mishalabdullah.com/blogs/getting-data-from-links-in-nextjs13/","title":"How To Get Data From URL In NEXTJS 13"},{"content":"\n\n\u003cp\u003eI’ve been using Medito, a fantastic meditation software, for the past few weeks, and it’s been excellent. The app includes lessons that teach you how to meditate, and you can download a meditation session to use when you don’t have access to the internet. If you choose, this app also offers background music for your meditation session. However, I like to sit in silence rather than with music playing in the background.It does not request your personal information, nor does it require you to set up an account in order to use the app, like many other Free and Open Source applications do.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/blogs/medito/medito1.png\" alt=\"thumbnail\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eDespite being open source, it is not lacking in features or aesthetics; it has a fantastic material design and attractive colour schemes. Additionally, this app has numerous targeted meditation sessions for emotions like anger, sadness, tension, or overwhelm.You can download the software through f-droid, which is the proper method for installing open source applications, or from the Google Play Store and Apple Store.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/blogs/medito/medito2.png\" alt=\"thumbnail\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"who-s-behind-medito\"\u003eWho’s Behind Medito?\u003c/h2\u003e\n\n\u003cp\u003eThe Medito Foundation is the organisation behind the medito app. Additionally, the Medito Foundation is a non-profit organisation whose goal is to help people live healthier, more fulfilling lives. source. User donations and unpaid volunteer work support the Medito Foundation.\nWhy Should I Meditate?\u003c/p\u003e\n\n\u003cp\u003eIn case you were unaware of this earlier. Numerous mental health advantages of meditation include decreased depressive symptoms, enhanced mood, increased stress-resilience, and improved attentional control. Interventions that promote mindfulness also seem to hold promise for treating young people’s depression. Stress and anxiety management can benefit from mindfulness meditation.\nNot Sure How To Meditate.\u003c/p\u003e\n\n\u003cp\u003eThere are about nine courses/steps inside the app that provide you the guide on how to meditate and the benefits of doing so, so you don’t need to worry if you don’t know how to do it.These are the nine steps:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e1. Learning to Sit\n2. Mindfulness\n3. Deepen Your Practice\n4. Open Awareness\n5. Gratitude\n6. Compassion\n7. 30 Day Challenge\n8. Great Thinkers\n9. Meditate Insights\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch2 id=\"meditations-for-different-situations\"\u003eMeditations For Different Situations\u003c/h2\u003e\n\n\u003cp\u003eFor your various needs, there are many “packs,” as they like to term them, such as Mindfulness, Anger Management, etc. Every pack practices meditation in a unique way, and each one has a particular focus (breathing, environment, or thoughts).I’ve listed a few packs below that I truly like and use frequently.\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/blogs/medito/medito3.png\" alt=\"thumbnail\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"30-day-mindfulness-challenge\"\u003e30 Day Mindfulness Challenge\u003c/h2\u003e\n\n\u003cp\u003eThis is a pack as the name suggest focus on mindfulness over a course of 30 days. At first, there is an introductory read that just gives you a brief understating on how and why and the advantages of meditation. The 30 days Mindfulness Challenge also aims to make meditation a daily a part of your life\nEmergency\u003c/p\u003e\n\n\u003cp\u003eThe emergency pack focuses on controlling your emotions and bring them back to their stable state. This can be very useful if you are feeling any strong negative emotions like anger, stress or fear.\nStudents And Graduates\u003c/p\u003e\n\n\u003cp\u003eThis is the pack that I mostly use, as I am still a student. There are two sections, one section is student and the other one is graduated. In the student section, meditations are tailored to procrastination, dealing with exams and study, moving away from home and much more. On the graduates section you have meditations tailored to Interview Nerves, finding and applying jobs and your friends going on their own paths.\nLow Mood\u003c/p\u003e\n\n\u003cp\u003eThe low mood focuses on the down emotions like sadness, loneliness, self-labeling, low-self-esteem and helps you to deal with them.\nRelationships\u003c/p\u003e\n\n\u003cp\u003eThis pack is focused on maintaining healthy and happy relationships with the people around us and helps you to build more empathy, kindness and accept how others are.\u003c/p\u003e\n\n\u003ch2 id=\"how-to-start\"\u003eHow to start\u003c/h2\u003e\n\n\u003cpre\u003e\u003ccode\u003eDownload The App\nJust Do One Meditation Daily\nThis is the important part when you are starting out, and you will find out what works and what does not along the way.\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch2 id=\"medito-as-a-pomodoro\"\u003eMedito As A Pomodoro\u003c/h2\u003e\n\n\u003cp\u003eI personally use medito as the pomodoro app whenever I am studying. There is pack called Meditative music and I have downloaded the music for 30 min and 60 min and use it. This is not an official feature or the intended way to use medito, and it’s just something I found useful.\u003c/p\u003e\n\n\u003ch3 id=\"support-the-project\"\u003eSupport The Project\u003c/h3\u003e\n\n\u003cp\u003e\u003ca href=\"https://meditofoundation.org/donate\"\u003eDonation Page Of Medito\u003c/a\u003e\u003cbr /\u003e\n\u003ca href=\"https://meditofoundation.org\"\u003eTheir Website\u003c/a\u003e\u003cbr /\u003e\n\u003ca href=\"https://github.com/meditohq/medito-app\"\u003eGithub Page\u003c/a\u003e\u003c/p\u003e\n","description":"I’ve been using Medito, a fantastic meditation software, for the past few weeks, and it’s been excellent. The app includes lessons that teach you how to meditate, and you can download a meditation session to use...","image":"/images/blogs/medito/medito.png","permalink":"https://mishalabdullah.com/blogs/medito/","title":"Medito -A Free And Open Source Meditation App"},{"content":"\n\n\u003cp\u003eThere are three ways of finding HTML elements\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003edocument.getElementById()\u003c/li\u003e\n\u003cli\u003edocument.getElementsByTagName()\u003c/li\u003e\n\u003cli\u003edocument.getElementsByClassName()\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2 id=\"element-by-id\"\u003eElement By ID:-\u003c/h2\u003e\n\n\u003cp\u003eThe document.getElementById() method is the most common way to find HTML elements. You can assign a Tag any id you want and pass the the id as a parameter to the document.getElementByid()\n\u003cstrong\u003eexample\u003c/strong\u003e\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode class=\"language-html\"\u003e\u0026lt;!DOCTYPE html\u0026gt;\n\u0026lt;html\u0026gt;\n  \u0026lt;head\u0026gt; \u0026lt;/head\u0026gt;\n  \u0026lt;body\u0026gt;\n    \u0026lt;h1 id=\u0026quot;intro\u0026quot;\u0026gt;Hello World\u0026lt;/h1\u0026gt;\n  \u0026lt;/body\u0026gt;\n  \u0026lt;script\u0026gt;\n    var value = document.getElementById(\u0026quot;intro\u0026quot;);\n    value.style.color = \u0026quot;red\u0026quot;;\n  \u0026lt;/script\u0026gt;\n\u0026lt;/html\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003e\u003cstrong\u003eOutput\u003c/strong\u003e\n![[Pasted image 20221229153711.png]]\u003c/p\u003e\n\n\u003ch2 id=\"element-by-tag-name\"\u003eElement By Tag Name\u003c/h2\u003e\n\n\u003cp\u003eThe second way is to find elements by the tag name.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode class=\"language-html\"\u003e\u0026lt;!DOCTYPE html\u0026gt;\n\u0026lt;html\u0026gt;\n  \u0026lt;head\u0026gt; \u0026lt;/head\u0026gt;\n  \u0026lt;body\u0026gt;\n    \u0026lt;h1 id=\u0026quot;intro\u0026quot;\u0026gt;Hello World\u0026lt;/h1\u0026gt;\n    \u0026lt;p\u0026gt;\n      Lorem ipsum, dolor sit amet consectetur adipisicing elit. Voluptas at\n      neque aliquid earum repudiandae, repellendus, consequatur atque itaque\n      repellat veniam perferendis veritatis exercitationem nam tempora ab vitae\n      maxime facilis. Nobis.\n    \u0026lt;/p\u0026gt;\n    \u0026lt;p\u0026gt;\n      Lorem ipsum dolor, sit amet consectetur adipisicing elit. Omnis unde\n      possimus libero velit quas dolorum modi, impedit non atque debitis aut\n      maxime doloribus laborum reiciendis alias quis sunt numquam commodi.\n    \u0026lt;/p\u0026gt;\n    \u0026lt;p\u0026gt;\n      Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequatur\n      itaque harum incidunt quibusdam aliquid, consectetur doloribus. Libero\n      necessitatibus ratione nemo repudiandae aliquam dolore ipsam fuga\n      reprehenderit magnam! Repellendus, accusamus minima.\n    \u0026lt;/p\u0026gt;\n  \u0026lt;/body\u0026gt;\n  \u0026lt;script\u0026gt;\n    var value = document.getElementById(\u0026quot;intro\u0026quot;);\n\n    value.style.color = \u0026quot;red\u0026quot;;\n\n    var para = document.getElementsByTagName(\u0026quot;p\u0026quot;);\n\n    console.log(para);\n  \u0026lt;/script\u0026gt;\n\u0026lt;/html\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eHere the function gets elements by their tag,\u003c/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eOutput\u003c/strong\u003e\u003c/p\u003e\n\n\u003ch2 id=\"element-by-class\"\u003eElement By Class\u003c/h2\u003e\n\n\u003cp\u003eSimilar to the document.getElementsByTagName() method, the document.getElementsByClassName() method is also used to find\nmultiple elements. It uses class name to find elements. The return type is an array.\u003c/p\u003e\n","description":null,"image":"/images/blogs/jsimage.png","permalink":"https://mishalabdullah.com/jspart3/","title":"How To Find HTML Elements Using JavaScript"},{"content":"\n\n\u003ch1 id=\"10-basic-linux-commands-that-you-need-to-know\"\u003e10 Basic Linux Commands That You Need To Know\u003c/h1\u003e\n\n\u003ch2 id=\"1-cd\"\u003e1. cd\u003c/h2\u003e\n\n\u003cp\u003eThe cd command is used for changing directories. cd stands for \u0026ldquo;change the working directory\u0026rdquo;. use can to use to change from one folder to another.\n**Changing Your Directory **\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003eYou can use cd then, followed by the folder directory you want to change to\nfor example:-  \u003ccode\u003ecd Downloads\u003c/code\u003e\u003c/p\u003e\u003c/li\u003e\n\n\u003cli\u003e\u003cp\u003eIf you want to go through multiple directories at a time, instead of using \u003ccode\u003ecd Downloads\u003c/code\u003e and then \u003ccode\u003ecd Wallpapers\u003c/code\u003e  you can use cd then followed by the directory name then the next directory name separated by a \u003ccode\u003e/\u003c/code\u003e\nfor example:-  \u003ccode\u003ecd Downloads/wallpapers\u003c/code\u003e\n                        \u003ccode\u003ecd home/prinux/Desktop/Todolist\u003c/code\u003e\u003c/p\u003e\u003c/li\u003e\n\n\u003cli\u003e\u003cp\u003eif you want to change to change to a the present directory to the previous one, you can use cd followed by two dots\nfor example:- \u003ccode\u003ecd ..\u003c/code\u003e\n                        \u003ccode\u003epwd\u003c/code\u003e  (The \u003ccode\u003epwd\u003c/code\u003e  command is used to print the current working directory)\n                        \u003ccode\u003e/home/prinux/Desktop\u003c/code\u003e\u003c/p\u003e\u003c/li\u003e\n\n\u003cli\u003e\u003cp\u003eif you are present is the Documents directory of your system you can use \u003ccode\u003e/\u003c/code\u003e  in the beginning of the folder you wish move\n for example:- \u003ccode\u003ecd /usr/share/applications\u003c/code\u003e\u003c/p\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2 id=\"2-creating-files-folders\"\u003e2. Creating Files \u0026amp; Folders\u003c/h2\u003e\n\n\u003ch4 id=\"touch\"\u003etouch\u003c/h4\u003e\n\n\u003cp\u003eThe touch command is used to make new files in the current working directory. With touch you can create pretty much any file types.\nexample:-  \u003ccode\u003etouch hello.txt hello.csv hello.xcf\u003c/code\u003e\u003c/p\u003e\n\n\u003ch3 id=\"mkdir\"\u003emkdir\u003c/h3\u003e\n\n\u003cp\u003eThe mkdir command is used to create folders in linux.\nexample:-  \u003ccode\u003emkdir foldername\u003c/code\u003e\u003c/p\u003e\n\n\u003ch4 id=\"chmod\"\u003echmod\u003c/h4\u003e\n\n\u003cp\u003eThe chmod command is used to make a script/file executable and non-executable. You can also set file permissions using chmod.\nexample:- \u003ccode\u003echmod +x filename\u003c/code\u003e\u003c/p\u003e\n\n\u003ch3 id=\"ls\"\u003els\u003c/h3\u003e\n\n\u003cp\u003ethe \u0026ldquo;ls\u0026rdquo; command shows the files present in the current working directory.\nyou can use the \u003ccode\u003e-al\u003c/code\u003e flag to display all the hidden files also.\u003c/p\u003e\n\n\u003ch4 id=\"rm\"\u003erm\u003c/h4\u003e\n\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003erm\u003c/code\u003e  command is used to remove files in your system.\nexample:-  \u003ccode\u003erm helloworld.py\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYou can add the \u003ccode\u003e-rf\u003c/code\u003e  flag along with rm to remove folders.\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2 id=\"copying-moving-your-files\"\u003eCopying, Moving Your Files\u003c/h2\u003e\n\n\u003ch4 id=\"cp\"\u003ecp\u003c/h4\u003e\n\n\u003cul\u003e\n\u003cli\u003eThe  \u003ccode\u003ecp\u003c/code\u003e  command is used for copying your files and folders. You must specify the file path to where the file must be copied to.\nexample:- \u003ccode\u003ecp hello.txt /home/prinux/Documents\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eYou can also use cp to copy the file contents of a file and save it by any other name. For that you are not required to give the file path\nexample:- \u003ccode\u003ecp hello.txt helloworld.txt\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch4 id=\"mv\"\u003emv\u003c/h4\u003e\n\n\u003cul\u003e\n\u003cli\u003eThe mv command is used to move your files and folders. As cp your are also required to give the file path to where the file is to be saved.\nexample:-  \u003ccode\u003emv hello.txt /home/prinux/Downloads\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe mv command can also be used to rename your files, as same as cp, your are not required to give the file path.\nexample:- \u003ccode\u003emv hello.txt namaste.txt\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2 id=\"echoing-contents-into-your-terminal\"\u003eEchoing Contents Into Your Terminal\u003c/h2\u003e\n\n\u003ch4 id=\"cat\"\u003eCat\u003c/h4\u003e\n\n\u003cp\u003eThe  \u003ccode\u003ecat\u003c/code\u003e   command is used to print contents of a file into  your terminal . This is suitable for small files as, after running it you will see the end of the file.\nexample:- \u003ccode\u003ecat helloworld.py\u003c/code\u003e\u003c/p\u003e\n\n\u003ch4 id=\"less\"\u003eLess\u003c/h4\u003e\n\n\u003cp\u003eThe suitable for large files as it starts in the top part of the file and is required to scroll down for viewing the rest of the file\nexample:- \u003ccode\u003eless\u003c/code\u003e\u003c/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003eIf you like this blog , please don’t forget to give a clap . if you want to learn more about privacy,security,technology and Linux, consider following me. Plus, whatever I find interesting and valuable.\u003c/p\u003e\n\u003c/blockquote\u003e\n","description":null,"image":"/images/blogs/terminal.png","permalink":"https://mishalabdullah.com/commandline/","title":"10 Basic Linux Commands That You Need To Know"},{"content":"\n\n\u003ch2 id=\"why-foss\"\u003eWhy FOSS\u003c/h2\u003e\n\n\u003cp\u003eFOSS stands for \u0026ldquo;Free and Open Source Software\u0026rdquo; (free as in freedom), The Foss application are \u003cstrong\u003egenerally\u003c/strong\u003e more privacy-friendly and secure. The good thing about foss is that you will discover creativity of developers as their are projects which great, weird, stupid, and cool.\u003c/p\u003e\n\n\u003ch2 id=\"linux-command-library\"\u003eLinux Command Library\u003c/h2\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/blogs/foss-5/commandlib1.png\" alt=\"thumbnail\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eThe Linux Command Library is a FOSS app that shows you all the commands that you need. This Includes Key-bindings for - Vim - Emacs - Nano - Pico\nThis an amazing app as if you forget any specific you can just search in this app and it will provide you with all the results. It Includes almost all the commands which you require to run your Linux System From the basics to the Advanced.\nThe app currently has \u003cstrong\u003e4638\u003c/strong\u003e manual pages, \u003cstrong\u003e21\u003c/strong\u003e basic categories and a bunch of general terminal tips. It works 100% offline, doesn\u0026rsquo;t need an internet connection and has no tracking software.\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SimonSchubert/LinuxCommandLibrary\"\u003eGithub\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://f-droid.org/en/packages/com.inspiredandroid.linuxcommandbibliotheca/\"\u003eFdroid\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://linuxcommandlibrary.com/\"\u003eWebsite\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/blogs/foss-5/commandlib2.png\" alt=\"thumbnail\" /\u003e \u003cimg src=\"/images/blogs/foss-5/commandlib3.png\" alt=\"thumbnail\" /\u003e\u003c/p\u003e\n\n\u003ch2 id=\"shelter\"\u003eShelter\u003c/h2\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/blogs/foss-5/shelter1.png\" alt=\"thumbnail\" /\u003e\nShelter is a FOSS app that uses \u0026ldquo;Work Profile\u0026rdquo; feature of Android to provide an isolated space where you install or clone your apps.\nThis is very useful when you have multiple accounts in same profile and want to separate them, or used to compartmentalise apps that does not respect privacy and user data. When you isolate app it cannot access data outside the profile\n\u003cimg src=\"/images/blogs/foss-5/shelterlast.png\" alt=\"thumbnail\" /\u003e\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PeterCxy/Shelter\"\u003eGithub\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://f-droid.org/en/packages/net.typeblog.shelter/\"\u003eFdriod\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2 id=\"newpipe\"\u003eNewpipe\u003c/h2\u003e\n\n\u003cp\u003eYou can say Newpipe is a youtube client, but there\u0026rsquo;s more to it. Newpipe doed not use any Google framework libraries, or the YouTube API. It only parses the website in order to gain the information it needs. Hence you can use it without Google Services installed. Also, you don\u0026rsquo;t need a YouTube account to use NewPipe.\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003eIn Newpipe there is a subscriton page, which is similar to youtube\u0026rsquo;s subscription page\u003c/li\u003e\n\u003cli\u003eTrending page based on your location\u003c/li\u003e\n\u003cli\u003eYou can Download Videos\u003c/li\u003e\n\u003cli\u003eYou can also view your history and create playlists\nThere is no data collection form youtube and no algorithm base content which designed to take all your time, plus no youtube shorts the main reason why changed from youtube to newpipe. You can also view contents form Sound-Cloud and Peer-Tube.\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003e\u003cimg src=\"/images/blogs/foss-5/newpipehome.png\" alt=\"thumbnail\" /\u003e\n  \u003cimg src=\"/images/blogs/foss-5/newpipe.png\" alt=\"thumbnail\" /\u003e\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/TeamNewPipe/NewPipe\"\u003eGithub\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://f-droid.org/en/packages/org.schabi.newpipe/\"\u003eFdroid\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2 id=\"feeder\"\u003eFeeder\u003c/h2\u003e\n\n\u003cp\u003eFreeder is an Free and Open Source RSS Feed Reader. Nowadays we don\u0026rsquo;t require a rss feed reader as compared to old days. But I personally find it very useful as don\u0026rsquo;t like to disturbed by notifications or waste time on watching algorithmic curated content. With help of feeder you add youtube channels, podcasts, blogs to it and you can set it refresh whenever you want or you can set that to manual, where it will search for new content and show you.\n\u003cimg src=\"/images/blogs/foss-5/rss1.png\" alt=\"thumbnail\" /\u003e\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/spacecowboy/Feeder\"\u003eGithub\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://f-droid.org/en/packages/com.nononsenseapps.feeder/\"\u003eFdroid\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2 id=\"spotiflyer\"\u003eSpotiflyer\u003c/h2\u003e\n\n\u003cp\u003eWith help of spotiflyer you can download songs, albums and playlists from Spotify, Gaana, Jio Saavn, Youtube Music, SoundCloud. This does not allow the companies to collect data and serve ads to us. This is very useful if you don\u0026rsquo;t want to be online or have to keep also music locally available.\nSpotiflyer is available for Sndroid,Windows, Linux and MacOs.\n\u003cimg src=\"/images/blogs/foss-5/spotify.png\" alt=\"thumbnail\" /\u003e\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Shabinder/SpotiFlyer\"\u003eGithub\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://f-droid.org/en/packages/com.shabinder.spotiflyer/\"\u003eFdroid\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003eIf you like this blog , please don\u0026rsquo;t forget to give a clap . if you want to learn more about privacy,security,technology and Linux, consider following me. Plus, whatever I find interesting and valuable.\u003c/p\u003e\n\u003c/blockquote\u003e\n","description":null,"image":"/images/blogs/foss-5/commandlib1.png","permalink":"https://mishalabdullah.com/android-foss-apps/","title":"5 Foss That Will  Change Your Life (Android)"},{"content":"\n\n\u003ch3 id=\"how-to-find-hidden-directories-in-web-pages\"\u003eHow To Find Hidden Directories In Web Pages.\u003c/h3\u003e\n\n\u003ch3 id=\"what-is-gobuster\"\u003eWhat is Gobuster ?\u003c/h3\u003e\n\n\u003cp\u003eGobuster is a tool and helps us to find directories and files present in a website or a web app.It helps hackers to find the files and directories that are not linked any where is the website. Gobuster is also open-source and it works by sending HTTP requests to the website and enumerating the directory and file names.\u003c/p\u003e\n\n\u003cp\u003eGo buster is written in which makes it fast.Gobuster also has support for extensions with which we can amplify its capabilities. Gobuster also can scale using multiple threads and perform parallel scans to speed up results.\u003c/p\u003e\n\n\u003ch3 id=\"how-to-install-gobuster\"\u003eHow to install Gobuster ?\u003c/h3\u003e\n\n\u003cp\u003eIf you are using Ubuntu or Debian-based OS, you can use \u003ccode\u003eapt\u003c/code\u003e to install Gobuster.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e$ apt install gobuster\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eTo install Gobuster on Mac, you can use Homebrew.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e$ brew install gobuster\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eTo install Gobuster on Windows and other versions of Linux, you can find the \u003ca href=\"https://github.com/OJ/gobuster\"\u003einstallation instructions here\u003c/a\u003e.\u003c/p\u003e\n\n\u003cp\u003eFor checking the installlation run the command:-\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e$ gobuster --version\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch3 id=\"how-to-run-gobuster\"\u003eHow to run Gobuster ?\u003c/h3\u003e\n\n\u003cp\u003eIn this guide we will only dicuss about the 2 main flags that are required to run gobuster.\u003c/p\u003e\n\n\u003col\u003e\n\u003cli\u003e-u\u003c/li\u003e\n\u003c/ol\u003e\n\n\u003cp\u003eThe -u flag is used to specify the url that gobuster need to send HTTP request.\u003c/p\u003e\n\n\u003col\u003e\n\u003cli\u003e-w\u003c/li\u003e\n\u003c/ol\u003e\n\n\u003cp\u003eThe -w flag is used for specifying the the word-list path.In case if you don’t know what wordlist is, its a test document whihc contains a lot of words.\u003c/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eEXAMPLE :-\u003c/strong\u003e\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode class=\"language-bash\"\u003egobuster dir -u https://google.com   -w /usr/share/wordlists/dirb/big.txt\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eIf your are using kali linux the wordlists are present in the “usr/share/wordlists” directory. If you want to know the simplest way to install kali linux which is through docker you can find the guide HERE.\u003c/p\u003e\n\n\u003cp\u003eOUTPUT:-\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"https://cdn-images-1.medium.com/max/800/1*mFeSTixB1-zuHSJbl5KJrA.png\" alt=\"\" /\u003e\u003c/p\u003e\n\n\u003cp\u003eHere you can see all the directories of google.com.\u003c/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003eIf you like this blog , please don’t forget to give a clap . if you want to learn more about privacy,security,technology and Linux, consider following me. Plus, whatever I find interesting and valuable.\u003c/p\u003e\n\u003c/blockquote\u003e\n","description":null,"image":"/images/blogs/gobuster.png","permalink":"https://mishalabdullah.com/gobuster/","title":"Gobuster - Finding Hideden Directories"},{"content":"\n\n\u003cp\u003eIn this guide, we will be learning on how to make your phone a less distractive, and also how to reduce the time that you spend on your phone. You only need to follow a few steps, and it can take less than twenty minutes to make your phone a \u0026ldquo;minimalist\u0026rdquo; one. I came up with the name \u0026ldquo;minimalist phone\u0026rdquo; based on the minimalism philosophy, \u0026ldquo;\u003cstrong\u003esaying no to things we don’t like,\u003c/strong\u003e\u0026rdquo;.\u003c/p\u003e\n\n\u003ch2 id=\"step-1-why-do-you-use-phone\"\u003eStep 1 :- Why do you use phone ?\u003c/h2\u003e\n\n\u003cp\u003eThis is the most important and hardest step, figuring out what you want your phone to do. For me personally, I use my phone three things\u003c/p\u003e\n\n\u003col\u003e\n\u003cli\u003eSending and Receiving WhatsApp\u003c/li\u003e\n\u003cli\u003eListening to music\u003c/li\u003e\n\u003cli\u003eReading E-Books\u003c/li\u003e\n\u003c/ol\u003e\n\n\u003cp\u003eThis is what is important for me at this time, these can change as per your needs and requirements. You can add your calendar, to-do app, even mails if you want.\u003c/p\u003e\n\n\u003ch2 id=\"step-2-saying-no-to-things-we-don-t-like\"\u003eStep 2:- Saying no to things we don’t like\u003c/h2\u003e\n\n\u003cp\u003eNow you have decided your phone use case and all the apps that you require, now you need to delete the apps that does not meet the criteria. Personally, I have deleted most of my apps on my phone, including the browsers, YouTube and search engines. If I need to search anything on the internet, will have to use my laptop and also for watching YouTube too and not my phone.\u003c/p\u003e\n\n\u003cp\u003eIf you are using android phone then you can use this tool called \u0026ldquo;\u003ca href=\"https://github.com/0x192/universal-android-debloater\"\u003eUniversal Android Debloater\u003c/a\u003e\u0026rdquo; that allows you to uninstall every application that cannot be uninstalled using your phone default way. If you don\u0026rsquo;t want to install the tool, you can also use ADB tools to uninstall the unwanted apps, such as your browser.\u003c/p\u003e\n\n\u003cp\u003eDon\u0026rsquo;t worry if you are using an iPhone, you can still logout from the services if you are not able to uninstall it completely. If not, you could always use your phone on focus mode that your phone provides and select the apps that you require.\u003c/p\u003e\n\n\u003ch2 id=\"step-3-minimizing-distractions\"\u003eStep 3:- Minimizing Distractions\u003c/h2\u003e\n\n\u003cp\u003eEven though your phone is minimal by deleting all the apps the you don\u0026rsquo;t need and only sticking with essentials. These essential apps can also distract you, when you are working. This is just the basics things like managing your notifications.\u003c/p\u003e\n\n\u003cp\u003eOne step head of this is \u003cstrong\u003ecompartmentalization\u003c/strong\u003e, where you use certain devices/profiles for specific tasks. For example nowdays both android and I guess iPhone\u0026rsquo;s do provide the feature of using different user profiles. So its best in practice to create three profiles.\u003c/p\u003e\n\n\u003col\u003e\n\u003cli\u003ework\u003c/li\u003e\n\u003cli\u003eFamily\u003c/li\u003e\n\u003cli\u003ePlay\u003c/li\u003e\n\u003c/ol\u003e\n\n\u003cp\u003eYou can increase or decrease the number of profiles as per your need, but I\u0026rsquo;ll suggest that the minimum is two user profiles. Each profile only contains the apps the related to the profile. For example you don\u0026rsquo;t need your work email in your family user profile likewise not having family groups inside your work profile.\u003c/p\u003e\n\n\u003cp\u003eThis helps you to maintain and organise everything and not get rumpled up and use work profile while you are at work so that your family groups can\u0026rsquo;t disturb you while working and vice-versa.\u003c/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003eIf you like this blog , please don’t forget to give a clap . if you want to learn more about privacy,security,technology and Linux, consider following me. Plus, whatever I find interesting and valuable.\u003c/p\u003e\n\u003c/blockquote\u003e\n","description":null,"image":"/images/blogs/phone.png","permalink":"https://mishalabdullah.com/minimalist-phone/","title":"The Minimalist Phone - Guide"},{"content":"\n\n\u003ch1 id=\"what-is-a-curl-command\"\u003eWhat is a curl command\u003c/h1\u003e\n\n\u003cp\u003eCurl is a command line tool used to transfer data to and from the servers, using the supported protocols (HTTP, FTP, IMAP, POP3, SCP, SFTP, SMTP, TFTP, TELNET, LDAP, or FILE).It is available on windows , MacOs and Linux.\nUses of curl\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003efor downloading web images\nfor downloading web pages\nfor authentication\nSSL connections\nFTP uplaods\nTo test the output of an API\nand more\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch2 id=\"syntax\"\u003eSyntax\u003c/h2\u003e\n\n\u003cp\u003ecurl [options][URL..]\u003c/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eCommon Options\u003c/strong\u003e\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e-o for saving the data in specific file\n-c for resuming interrupted Downloads\n-O for downloading multiple url’s (seperated with space)\n-l for viewing the HTTP header’s information\n-I for fetching only the header information\n-v for viewing the entire TLS handshake\n-k for ignoring invalid or self-signed certificates\n-C for resuming the file transfer\n-f for failing silently\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eWarning\u003c/p\u003e\n\n\u003cp\u003eAlways mention the protocol before running the command\nExamples\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003eRequesting A Page:\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eFor viewing the source code of a web page , similar to page source option in a browser. If no protocols are mention it defaults to HTTP\u003c/p\u003e\n\n\u003cp\u003ecurl google.com\u003c/p\u003e\n\n\u003ch2 id=\"2-for-downloading-contents-of-a-web-page\"\u003e2. For Downloading Contents Of A Web Page:\u003c/h2\u003e\n\n\u003cp\u003eThere are two options available to download and save a file\u003c/p\u003e\n\n\u003cp\u003ecurl -o google.txt \u003ca href=\"https://google.com\"\u003ehttps://google.com\u003c/a\u003e\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e# -o is the option used for saving the output, filename is\n# google.txt (file extension can be changed)curl https://google.com \u0026gt; google.txt\n# \u0026gt; is used for saving the output in a file\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch2 id=\"3-ignore-invalid-or-self-signed-certificates\"\u003e3. Ignore invalid or self-signed certificates:\u003c/h2\u003e\n\n\u003cp\u003eWhen we are testing API endpoints, it is running on your testing instance, hence you might have a self-signed certificate or an invalid one. By using -k, we don’t allow curl to verify the validity of the certificate and establish an insecure connection for testing.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003ecurl -k https://localhost/my_apitest\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch2 id=\"4-api-authentication\"\u003e4. API Authentication\u003c/h2\u003e\n\n\u003cp\u003eMost of the API does require user authentication. For authentication we can use -u for specifying the username and curl prompts for password.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003ecurl -u \u0026lt;user:password\u0026gt; https://my-test-api.com/endpoint\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch2 id=\"5-for-resuming-the-file-transfer\"\u003e5. For Resuming The File Transfer\u003c/h2\u003e\n\n\u003cp\u003eUsing -C for telling the curl to automatically find out where and how to\nresume the file transfer. It then uses the given output or input files\nto figure that out.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003ecurl -C - https://example.com\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch2 id=\"6-failing-silently\"\u003e6. Failing Silently\u003c/h2\u003e\n\n\u003cp\u003ef, is used for failing silently(no output) on server errors, this is mostly done on scripts to better deal with failed attempts. In normal cases when an HTTP server fails to deliver adocument, it returns an HTML document stating so (which often also describes why and more). This flag will prevent curl from outputting that and return error 22.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003ecurl --fail https://example.com\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch2 id=\"7-fetching-the-headers\"\u003e7. Fetching The Headers\u003c/h2\u003e\n\n\u003cp\u003eWe use -I for fetching the headers of HTTP servers . When used on an FTP or FILE file, curl displays the file size and last modification time only.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003ecurl -I https://example.com\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch2 id=\"bonus-tip\"\u003eBonus Tip:\u003c/h2\u003e\n\n\u003cp\u003eSharing Files via curl:- open your terminal type the first command below and after few seconds you will receive a link . share the link to the person you wish to send the file, they can open it in their browser and download it.\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003ecurl -F \u0026quot;file=@Lava.jpg\u0026quot; 0x0.st\n#Lava.jpg file name, must be in the current directory\nhttp://0x0.st/oZ2_.jpg\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eFor learning more about curl run these commands in the shell\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003ecurl --help\nman curl\nvisit:https://curl.se/\n\u003c/code\u003e\u003c/pre\u003e\n","description":null,"image":"/images/blogs/curl.png","permalink":"https://mishalabdullah.com/curl/","title":"7 Curl Commands That Every Developer Should Know!"},{"content":"\u003cp\u003eTesting Hello World\u003c/p\u003e\n","description":null,"image":null,"permalink":"https://mishalabdullah.com/blogs/hello-world/","title":""},{"content":"","description":null,"image":null,"permalink":"https://mishalabdullah.com/gallery/","title":"Gallery"}]