<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: krantikr</title>
    <description>The latest articles on DEV Community by krantikr (@krantikr).</description>
    <link>https://dev.to/krantikr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F205296%2F61616e25-8ab8-4ae1-b335-60ca2f29ee89.jpeg</url>
      <title>DEV Community: krantikr</title>
      <link>https://dev.to/krantikr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/krantikr"/>
    <language>en</language>
    <item>
      <title>Mastering Prompt Engineering: A Comprehensive Guide</title>
      <dc:creator>krantikr</dc:creator>
      <pubDate>Wed, 13 Nov 2024 15:41:49 +0000</pubDate>
      <link>https://dev.to/krantikr/mastering-prompt-engineering-a-comprehensive-guide-4npb</link>
      <guid>https://dev.to/krantikr/mastering-prompt-engineering-a-comprehensive-guide-4npb</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Are you ready to supercharge your interactions with AI? Today, we're diving into the magic of prompt engineering, the key to making AI tools like ChatGPT do exactly what you want. Mastering the art of prompting effectively will empower you to achieve accurate and contextually relevant AI responses. In this guide, we will start from the basics, exploring what prompts are, why they matter, and how to craft them effectively.&lt;/p&gt;




&lt;h3&gt;
  
  
  What is Prompt Engineering?
&lt;/h3&gt;

&lt;p&gt;Prompt engineering is as much an art as it is a science. It involves creating a detailed set of guidelines or instructions to communicate with language models, such as ChatGPT, to perform specific tasks. The iterative process of developing a task-specific prompt allows the generative model to produce desired outcomes. This means you may need to refine your prompts based on the results to achieve optimal performance.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Elements of Prompt Engineering
&lt;/h3&gt;

&lt;p&gt;Understanding the main elements of prompt engineering is crucial for effective communication with AI. A prompt consists of two major components: parameters and structure.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Parameters:&lt;/strong&gt; These define how the model behaves. Examples include:

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Temperature:&lt;/strong&gt; Controls randomness in responses. Ranges from 0 (no randomness) to 1 (high creativity).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Top P:&lt;/strong&gt; Similar to temperature, it determines the diversity of responses.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Max Length:&lt;/strong&gt; Sets the maximum length of the output, controlling verbosity.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;  &lt;strong&gt;Structure:&lt;/strong&gt; The way the prompt is formulated, including context, instruction, input data, and output indicators.&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  Components of a Good Prompt
&lt;/h3&gt;

&lt;p&gt;A well-crafted prompt includes several essential components to ensure effective communication with the AI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Context:&lt;/strong&gt; Provides background information relevant to the task.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Instruction:&lt;/strong&gt; Clearly states the task you want the model to perform.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Input Data:&lt;/strong&gt; The specific data you want the model to analyze or respond to.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Output Indicator:&lt;/strong&gt; Specifies the format of the expected output (e.g., text, table, JSON).&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Checklist for Designing Effective Prompts
&lt;/h3&gt;

&lt;p&gt;When crafting prompts, consider the following checklist to enhance the quality of your interactions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Define the Goal:&lt;/strong&gt; Clearly articulate what you want to achieve.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Detail the Format:&lt;/strong&gt; Specify how you want the output structured.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Create a Role:&lt;/strong&gt; Assign a role to the model to guide its responses.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Clarify the Audience:&lt;/strong&gt; Indicate the target audience for tailored responses.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Provide Context:&lt;/strong&gt; Include all relevant information to inform the model.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Give Examples:&lt;/strong&gt; Use examples to train the model on expected outputs.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Specify the Style:&lt;/strong&gt; Indicate the desired tone and voice for the output.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Define the Scope:&lt;/strong&gt; Set boundaries for the task, including any restrictions.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Apply Restrictions:&lt;/strong&gt; Limit the output length or complexity as needed.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Common Prompting Errors
&lt;/h3&gt;

&lt;p&gt;Even the best prompt engineers make mistakes. Here are some common errors to avoid:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Vague or Ambiguous Prompts:&lt;/strong&gt; Lack of clarity can lead to poor responses.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Biased Prompts:&lt;/strong&gt; Providing skewed examples can result in biased outputs.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Lack of Context:&lt;/strong&gt; Insufficient background can confuse the model.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Insufficient Examples:&lt;/strong&gt; Not providing examples can limit understanding.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Complex or Confusing Prompts:&lt;/strong&gt; Overly complicated requests can overwhelm the model.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Not Testing Thoroughly:&lt;/strong&gt; Failing to review outputs can lead to missed opportunities for improvement.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Writing Effective Prompts: Examples
&lt;/h3&gt;

&lt;p&gt;Let's look at some examples to understand how to write effective prompts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Basic Inquiry:&lt;/strong&gt; Ask a straightforward question, such as "What is prompt engineering?" This yields a direct definition.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Travel Itinerary:&lt;/strong&gt; "I want to travel for 5 days in India. Please make me an itinerary." This prompt can generate a suggested travel plan.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Text Summarization:&lt;/strong&gt; Provide a passage and request a summary, such as "Summarize this text in one sentence." The AI will condense the information accordingly.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Code Generation:&lt;/strong&gt; "Write a Python program using recursion to check if a string is a palindrome." This guides the AI to generate specific code.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Advanced Prompt Strategies
&lt;/h3&gt;

&lt;p&gt;To refine your interactions further, consider employing advanced strategies such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Zero-Shot Prompting:&lt;/strong&gt; Directly instructing the AI without examples.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Few-Shot Prompting:&lt;/strong&gt; Providing examples to guide the AI's response.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Chain of Thought Prompting:&lt;/strong&gt; Encouraging logical reasoning through structured prompts.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Mastering prompt engineering is essential for unlocking the full potential of AI tools like ChatGPT. By understanding the components of effective prompts, avoiding common errors, and exploring various applications, you can create powerful interactions with AI. Remember, practice makes perfect. Keep experimenting with different prompts, providing feedback, and refining your techniques to become a proficient prompt engineer.&lt;/p&gt;

</description>
      <category>promptengineering</category>
      <category>ai</category>
    </item>
    <item>
      <title>How AI Can Help You Build Apps Faster and Smarter 🚀 with Codeium</title>
      <dc:creator>krantikr</dc:creator>
      <pubDate>Mon, 04 Nov 2024 13:47:38 +0000</pubDate>
      <link>https://dev.to/krantikr/how-ai-can-help-you-build-apps-faster-and-smarter-with-codeium-28ol</link>
      <guid>https://dev.to/krantikr/how-ai-can-help-you-build-apps-faster-and-smarter-with-codeium-28ol</guid>
      <description>&lt;p&gt;As app developers, we’re always looking for ways to speed up workflows and write better code. Codeium, a free AI-powered coding tool, is here to help developers build apps faster, smarter, and more efficiently by integrating cutting-edge AI right into Visual Studio Code. With its autocomplete, chat, and multi-language support, Codeium provides a range of features that streamline development and enhance productivity.&lt;/p&gt;

&lt;p&gt;Let’s explore how Codeium can supercharge your app development process.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Boost Efficiency with Intelligent Autocomplete
&lt;/h4&gt;

&lt;p&gt;Codeium’s autocomplete feature goes beyond basic coding suggestions, delivering single- and multi-line code completions across 70+ languages, including popular options like Python, JavaScript, and Java.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;br&gt;
Imagine you’re writing a function to fetch and display user data. With Codeium, you can type out the start of the function and let it complete repetitive or boilerplate code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def fetch_user_data(user_id):
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Codeium’s Suggestion:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; try:
        response = requests.get(f"https://api.example.com/users/{user_id}")
        response.raise_for_status()
        return response.json()
    except requests.exceptions.HTTPError as err:
        print(f"HTTP error occurred: {err}")
    except Exception as err:
        print(f"An error occurred: {err}")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This saves time and keeps you focused, letting Codeium handle the syntax and formatting details.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Generate Code with Natural Language Prompts
&lt;/h4&gt;

&lt;p&gt;With Codeium, you can code directly from natural language descriptions. Simply write a comment describing what you need, and Codeium will generate the relevant code, letting you focus on app logic instead of syntax.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;br&gt;
Say you’re building an e-commerce app and need a function to calculate discounts. Just type a natural language comment, and let Codeium handle the rest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Function to calculate a discount price based on original price and discount rate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Codeium’s Suggestion:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def calculate_discount(price, discount_rate):
    return price - (price * discount_rate / 100)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ability to “translate” natural language into functional code is invaluable for keeping development fast-paced and organized.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Use AI-Powered Chat for Code Explanations and Refactoring
&lt;/h4&gt;

&lt;p&gt;One standout feature of Codeium is its integrated chat, allowing developers to ask questions about their code, request explanations, and even refactor code in real-time without leaving the VS Code environment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0l0ewp38mfazkxadnc4q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0l0ewp38mfazkxadnc4q.png" alt="Image description" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;br&gt;
Suppose you’re working with a legacy codebase and come across a function that’s hard to understand. You can use Codeium’s chat to ask for an explanation, helping you quickly grasp complex logic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt;&lt;br&gt;
Explain the purpose of this function.&lt;/p&gt;

&lt;p&gt;Codeium provides a summary, saving you time spent deciphering code and allowing you to work confidently with unfamiliar codebases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Refactoring Example&lt;/strong&gt;&lt;br&gt;
If you need to update a function to add new functionality or optimize it, simply ask Codeium’s chat assistant to refactor it for you. This feature helps keep code clean and efficient as requirements evolve.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fis1vr2d24vteenmfy5o3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fis1vr2d24vteenmfy5o3.png" alt="Image description" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  4. Translate Code Across Languages
&lt;/h4&gt;

&lt;p&gt;For multi-platform apps, Codeium’s translation feature allows you to convert code from one language to another in seconds. This is ideal for teams developing both iOS and Android versions of an app, or migrating functions between languages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;br&gt;
If you have a function in JavaScript but need the equivalent in Python, Codeium can make the transition seamless.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JavaScript Function:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function greetUser(name) {
    return `Hello, ${name}!`;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Prompt:&lt;/strong&gt;&lt;br&gt;
Translate this function to Python.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python Result:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def greet_user(name):
    return f"Hello, {name}!"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This cross-language support saves hours in manual translation and reduces errors, enabling you to develop apps across multiple platforms with ease.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Streamline Documentation with Automated Suggestions
&lt;/h4&gt;

&lt;p&gt;Consistent documentation is crucial, especially in collaborative environments. Codeium’s documentation tools auto-generate comments and documentation as you code, keeping everything up-to-date with minimal effort.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;br&gt;
Let’s say you’re writing a utility function. Codeium can suggest relevant documentation comments based on your code structure, ensuring that documentation remains clear and comprehensive as your code evolves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Codeium is more than just an autocomplete tool; it’s an all-in-one assistant that can help you code faster, stay organized, and improve the quality of your applications. From natural language code generation to real-time chat assistance and cross-language translation, Codeium is designed to make app development smarter and more efficient. And best of all, it’s free to install on Visual Studio Code, so you can start experiencing the benefits right away.&lt;/p&gt;

&lt;p&gt;🚀 Have you tried this AI tool in your development? Share your experience and recommendations in the comments! &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Unlocking the Potential of Blockchains: Exploring the Future of Decentralized Technology</title>
      <dc:creator>krantikr</dc:creator>
      <pubDate>Sat, 04 Feb 2023 15:33:35 +0000</pubDate>
      <link>https://dev.to/krantikr/unlocking-the-potential-of-blockchains-exploring-the-future-of-decentralized-technology-jda</link>
      <guid>https://dev.to/krantikr/unlocking-the-potential-of-blockchains-exploring-the-future-of-decentralized-technology-jda</guid>
      <description>&lt;p&gt;Blockchain is a decentralised digital ledger that is used to record transactions across a network of computers in a secure and transparent manner. Each block in the chain contains a unique set of validated transactions that are linked to previous blocks.&lt;/p&gt;

&lt;p&gt;It was first introduced in a white paper in 2008 by the mysterious creator, Satoshi Nakamoto, but it gained fame when it was used as the fundamental technology for cryptocurrency, such as Bitcoin.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Blockchains&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Blockchain brings revolutionizes the way transactions are processed, recorded and stored also it provides a secure, transparent and tamper-proof way to store and manage data. It has the potential to transform various industries including finance, healthcare, and supply chain management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding Blockchain Technology&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Distributed Ledger Technology (DLT)&lt;/strong&gt; refers to a category of technologies that allow for secure, decentralized, and transparent storage and transfer of digital data across multiple nodes. Blockchain is one specific type of DLT that uses cryptographic algorithms to ensure the immutability and consistency of the ledger. It is often used to record transactions in a secure, transparent, and tamper-proof manner in various applications, including cryptocurrencies, digital identity management, supply chain management, and voting systems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cryptographic hashing&lt;/strong&gt; is a fundamental concept in blockchain technology. It is a one-way function that takes an input (or 'message') and returns a fixed-size string of characters, which is a 'hash'. The hash is unique to the input, so even a small change in the input results in a completely different hash.&lt;/p&gt;

&lt;p&gt;In the blockchain, hashes are used to link blocks of transactions together. Each block contains a hash of the previous block, forming a chain of blocks (hence the name 'blockchain'). This creates a secure and tamper-evident record of all transactions, since altering any block in the chain would result in a change of its hash and the subsequent hashes of all following blocks, making the alteration easily detectable.&lt;/p&gt;

&lt;p&gt;Additionally, hashes can be used for digital signatures to verify the authenticity of a transaction, which is important for maintaining the integrity of the blockchain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Smart contracts&lt;/strong&gt; are self-executing computer programs that run on blockchain technology. They contain a set of rules and conditions that are automatically executed and enforced when certain conditions are met. The terms of the agreement between the buyer and seller are directly written into lines of code, and the execution of the code is guaranteed by the decentralized, tamper-proof nature of the blockchain. This allows for transactions to be processed automatically and transparently, without the need for intermediaries, reducing the chances of fraud or errors. Smart contracts can be used for a wide range of applications including financial transactions, supply chain management, digital identity verification, and more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decentralization&lt;/strong&gt; refers to the distribution of authority or power away from a central point to multiple individuals or nodes in a network. In the context of blockchain technology, decentralization is a key feature and refers to the absence of a central authority or intermediaries managing transactions and maintaining the network. Instead, transactions are verified by a network of nodes and recorded on a ledger (blockchain), ensuring transparency and immutability. Decentralization provides for a more secure and trustworthy system, as it eliminates the risk of a single point of failure and reduces the chances of malicious actors compromising the network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of Blockchains&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Public blockchains&lt;/strong&gt;: A public blockchain is a decentralized, distributed ledger technology that allows for a secure, transparent, and tamper-proof record of transactions. It operates on a network of nodes, where each node has a copy of the blockchain and works together to validate and verify transactions. Public blockchains are open to anyone to participate and they do not have a central authority, allowing for equal access and creating a trustless system. Examples of public blockchains include Bitcoin and Ethereum.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Private blockchains&lt;/strong&gt;: Private blockchains are decentralized networks that are designed to be used by a specific group of individuals or organizations, rather than being open to the public. They are usually built using blockchain technology and provide the same benefits as public blockchains such as immutability, transparency, and security. However, they are designed to offer more control over the network, as only authorized participants are allowed to participate in the consensus process, validate transactions and maintain the ledger. They are often used for applications such as supply chain management, financial transactions, and digital identity management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Consortium blockchains&lt;/strong&gt;: A consortium blockchain is a type of blockchain technology that is partially decentralized, meaning it is governed and controlled by a select group of organizations or individuals. It operates as a hybrid between a fully private blockchain, which is controlled by a single entity, and a fully public blockchain, such as Bitcoin or Ethereum, which is open to everyone. &lt;/p&gt;

&lt;p&gt;The purpose of consortium blockchains is to balance the benefits of decentralization with the need for control and privacy in certain applications, such as financial transactions or supply chain management. The members of the consortium are usually trusted entities that have a stake in the network and help to validate transactions and add blocks to the chain.&lt;/p&gt;

&lt;p&gt;Examples of consortium blockchains include R3's Corda and the Enterprise Ethereum Alliance (EEA). These networks allow multiple organizations to securely share information and collaborate on transactions, while still maintaining control over their data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Hybrid Blockchain&lt;/strong&gt;: A Hybrid Blockchain is a combination of two or more blockchains with different features, protocols and consensus mechanisms that work together to provide a more secure, scalable, and customizable blockchain solution. It allows organizations to take advantage of the benefits of both public and private blockchains, making it possible to enjoy the transparency and security of public blockchains while still maintaining the control and privacy of private blockchains. This type of blockchain can be used for various use cases, such as supply chain management, digital identity, and financial services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Cases of Blockchains&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Cryptocurrencies&lt;/strong&gt;: One of the most well-known use cases of blockchains is as the underlying technology for cryptocurrencies like Bitcoin, Ethereum, and others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Supply Chain Management&lt;/strong&gt;: Blockchains can be used to track the movement of goods and materials throughout a supply chain, providing transparency and helping to reduce fraud and errors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Digital Identity Management&lt;/strong&gt;: Blockchains can be used to securely store and manage personal identification information, making it more difficult for unauthorized parties to access sensitive data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Healthcare&lt;/strong&gt;: Blockchains can be used in healthcare to securely store and share patient information, streamline administrative processes, and improve the accuracy of medical records.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Voting&lt;/strong&gt;: Blockchains can be used to develop secure and transparent voting systems, helping to prevent fraud and ensure the accuracy of election results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Financial Services&lt;/strong&gt;: Blockchains can be used to improve the speed and efficiency of financial transactions, reduce costs, and increase transparency in the financial industry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Real Estate&lt;/strong&gt;: Blockchains can be used to securely track ownership and transfer of property, making the process of buying and selling real estate more efficient and less prone to errors and fraud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenges of Blockchains&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;scalability&lt;/strong&gt; is one of the major challenges of blockchain technology. The decentralized nature of blockchains, which is one of its strengths, can lead to slow processing times and high transaction fees when there is high demand. This limits the ability of blockchain networks to handle large volumes of transactions, making it a challenge for them to be widely adopted for mainstream use. Efforts are being made to address this challenge through various scaling solutions, such as sharding and off-chain transactions, but there is still much work to be done in this area.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Regulation and Standardization&lt;/strong&gt; are also big challenges in the blockchain industry. As a relatively new technology, blockchains operate in a largely unregulated space, which can lead to legal and ethical challenges in certain jurisdictions. There is also a lack of standardization across different blockchain platforms, making it difficult for them to communicate with each other and exchange data and assets. This can hinder the growth and adoption of the technology. However, there are ongoing efforts to address these challenges, such as the creation of industry standards and the development of regulatory frameworks, which could help to mitigate these issues in the future.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interoperability&lt;/strong&gt;: Different blockchain platforms use different technologies, which can make it difficult for them to communicate with each other and exchange data and assets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adoption and integration&lt;/strong&gt; of the blockchain are a bit slow for their potential. In the last few years, more organizations and governments recognize its potential, and the number of practical applications for blockchain has expanded rapidly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In summary, blockchain technology offers a secure, transparent, and efficient way of recording and verifying transactions, making it a potentially transformative technology across a wide range of industries.&lt;/p&gt;

&lt;p&gt;The future outlook for blockchain technology is very positive, with many experts predicting that it will have a significant impact on a variety of industries. Some of the potential impact of blockchain technology on various industries are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Financial Services: Blockchain technology has the potential to revolutionize the way financial transactions are processed, by enabling faster and more secure cross-border payments, reducing the need for intermediaries and improving overall efficiency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Supply Chain Management: Blockchain technology can help to increase transparency and traceability in supply chain management, reducing the risk of fraud, improving supply chain visibility, and increasing efficiency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Healthcare: Blockchain technology has the potential to revolutionize the way patient data is stored and shared, improving data privacy and security, and reducing the risk of data breaches.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Government: Blockchain technology has the potential to improve the efficiency of government processes, such as voting systems, land registry, and tax collection, and increase transparency and accountability.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Gaming: Blockchain technology has the potential to disrupt the gaming industry by enabling new business models, creating new revenue streams, and increasing player engagement.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Real Estate: Blockchain technology can improve the efficiency and transparency of real estate transactions, by enabling secure and tamper-proof property records and reducing the risk of fraud.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>devto</category>
      <category>announcement</category>
      <category>community</category>
      <category>devrel</category>
    </item>
    <item>
      <title>React Hooks</title>
      <dc:creator>krantikr</dc:creator>
      <pubDate>Sun, 23 Feb 2020 11:26:24 +0000</pubDate>
      <link>https://dev.to/krantikr/react-hooks-4hma</link>
      <guid>https://dev.to/krantikr/react-hooks-4hma</guid>
      <description>&lt;p&gt;In this article, I am going to share with you my understanding of hooks like why we need hooks? What are hooks? And how we can use hooks?&lt;/p&gt;

&lt;h4&gt;
  
  
  Why we need hooks?
&lt;/h4&gt;

&lt;p&gt;Using react hooks they are trying to resolve three major issues those are &lt;strong&gt;Huge components&lt;/strong&gt;, &lt;strong&gt;Duplicated logic&lt;/strong&gt;, and &lt;strong&gt;Complex pattern&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  What are the hooks?
&lt;/h4&gt;

&lt;p&gt;React Hooks is a new feature that is added to react.js with react 16.8. Previously if you want to use state or life cycle then you should have to write only Class components but with the help of hooks, you can do the same thing with functional components. &lt;br&gt;
Hooks are functions that let you “hook into” React state and lifecycle features from function components. Hooks don’t work inside classes, they let you use React without classes&lt;br&gt;
I think Hooks let us build components with less effort. Each Hook may contain some local state and side effects. You can pass data between multiple Hooks just like you normally do between functions.&lt;br&gt;
React have some built-in hooks like useState and useEffect serve as the basic building blocks. We can use them from our components directly or you can create your own custom Hooks. A custom Hook (we’ll talk about this in a moment) is a JavaScript function whose name starts with ”use”.&lt;/p&gt;
&lt;h4&gt;
  
  
  useState
&lt;/h4&gt;

&lt;p&gt;useState is a Hook. We call it inside a function component to create a local state to it. useState returns a pair of the current state value and a function that lets you update it. You can call this function from an event handler or somewhere else. It’s very much similar to this.setState in a class but it has one big difference with this.setState is, it doesn’t merge the old and new state together it will just replace that. But nothing to worry here because  You can use the State Hook more than once in a single component.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setState&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;initialState&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;//you can give any name for you state and setState function. initialState is the defult value thatever you want to set. &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  useEffect
&lt;/h4&gt;

&lt;p&gt;useEffect, adds the ability to perform side effects from a function component. It serves the same purpose as componentDidMount, componentDidUpdate, and componentWillUnmount in React classes. useEffect will run after the render is committed to the screen. &lt;br&gt;
By default, effects run after every completed render, but you can choose to fire them only when certain values have changed. Effects may also optionally specify how to “clean up” for that you just need to return a function after userEffect function. Just like with useState, you can use more than a single effect in a component. &lt;br&gt;
userEffect takes two arguments first will be the function that will run after every completed render and the second argument is an array of dependency of that function that we can pass. Whatever value we will pass in this array that value change will decide to run that function.&lt;br&gt;&lt;br&gt;
Effects may also optionally return a function where we can do clean up task. This function will run just right before userEffect will run next time.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// it will run after every completed render so it’s very much similar with componentDidUpdate but it will run when component will mount first time also.&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// it will run only once when the component will mount so it’s just like componentDidMount  &lt;/span&gt;
  &lt;span class="p"&gt;},[]);&lt;/span&gt;

&lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// it will run after every completed render  &lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// you can do the clean up here&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  useContext
&lt;/h4&gt;

&lt;p&gt;Accepts a context object (the value returned from React.createContext) and returns the current context value for that context. The current context value is determined by the value prop of the nearest  above the calling component in the tree.&lt;br&gt;
A component calling useContext will always re-render when the context value changes. If re-rendering the component is expensive, you can &lt;a href="https://github.com/facebook/react/issues/15156" rel="noopener noreferrer"&gt;optimize it by using memoization&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;MyContext&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Custom Hook
&lt;/h4&gt;

&lt;p&gt;If you want to build your own hooks for your reusable functions then you can. A custom Hook is a JavaScript function whose name starts with ”use”. it’s just like a normal function so it may take arguments and may return something. Its name should always start with use so that react will treat this as hooks and the &lt;a href="https://reactjs.org/docs/hooks-custom.html" rel="noopener noreferrer"&gt;rules of Hooks&lt;/a&gt; apply to it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;useCustomHook&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Wright your custom hook logic here&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>react</category>
      <category>devops</category>
    </item>
    <item>
      <title>The most useful git commands that every developer should know</title>
      <dc:creator>krantikr</dc:creator>
      <pubDate>Wed, 27 Nov 2019 06:56:37 +0000</pubDate>
      <link>https://dev.to/krantikr/the-most-useful-git-commands-that-every-developer-should-know-49hi</link>
      <guid>https://dev.to/krantikr/the-most-useful-git-commands-that-every-developer-should-know-49hi</guid>
      <description>&lt;p&gt;In this developing and fast-growing technology world, it is very important that how you keep all your code and your changes save so to solve this problem Git came to the picture where you can keep your all code changes version wise safe. Basically, with the help of Git, you can track your code changes. In this blog, we are just going to discuss some of the terminal comments for Git that will always help you in day to day life. You can do the same things with Git Tools UI but I prefer to do these things from the command line because doing things in the command line is cool and faster.&lt;/p&gt;

&lt;h4&gt;
  
  
  what is Git?
&lt;/h4&gt;

&lt;p&gt;Git is a free and open-source distributed version control system. Git’s purpose is to keep track of projects and files as they change over time with manipulations happening from different users. Git stores information about the project’s progress on a repository. A repository has committed to the project or a set of references to the commits called heads. All this information is stored in the same directory as the project in a sub-directory called .git and will mostly be hidden by default in most systems.&lt;/p&gt;

&lt;h4&gt;
  
  
  Table Of Contents
&lt;/h4&gt;

&lt;p&gt;git config&lt;br&gt;
git init&lt;br&gt;
git status&lt;br&gt;
git fetch&lt;br&gt;
git branch&lt;br&gt;
git checkout&lt;br&gt;
git add&lt;br&gt;
git commit&lt;br&gt;
git push&lt;br&gt;
git pull&lt;br&gt;
git diff&lt;br&gt;
git stash&lt;br&gt;
git merge&lt;br&gt;
git reset&lt;br&gt;
git cherry-pick&lt;/p&gt;
&lt;h4&gt;
  
  
  #git config &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;The git config command sets the author's name and email address. Whatever you will set here that will appear with your commits.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nb"&gt;global&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;[name]&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="c1"&gt;// To set author's name&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nb"&gt;global&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;[email]&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="c1"&gt;// To set email address&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #git init &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;The git init command creates a new Git repository. You can use this to convert your existing project to a Git repository or initialize a new repository.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;init&lt;/span&gt; &lt;span class="nx"&gt;repository_name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #git status &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;The git status command displays the state of the working directory. You can check your branch, all your files whichever has changed or added and also you can check how many commits you have to push whatever you have committed but not pushed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;status&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #git fetch &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;The git fetch command basically refers from a remote repository into your local repository.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt; &lt;span class="nx"&gt;remote_name&lt;/span&gt; &lt;span class="nx"&gt;branch_name&lt;/span&gt; &lt;span class="c1"&gt;// will only fetch the changes from that remote branch&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt; &lt;span class="nx"&gt;remote_name&lt;/span&gt; &lt;span class="c1"&gt;// will only fetch the changes from remote origin&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;all&lt;/span&gt; &lt;span class="c1"&gt;// will fetch all branches from all remotes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #git branch &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;The git branch command basically shows you a list of branches.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;branch&lt;/span&gt; &lt;span class="c1"&gt;// list of all your local branch&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;branch&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="c1"&gt;// list of all remote branches&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;branch&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="c1"&gt;// list of all local and remote branches&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #git checkout &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;The git checkout command always allows you to switch into a different branch, create a new branch or reset your file changes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;checkout&lt;/span&gt; &lt;span class="nx"&gt;branch_name&lt;/span&gt; &lt;span class="c1"&gt;// checkout into a different branch&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;checkout&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="nx"&gt;new_branch_name&lt;/span&gt; &lt;span class="c1"&gt;// create a new branch and switch into that&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;checkout&lt;/span&gt; &lt;span class="nx"&gt;file_path&lt;/span&gt; &lt;span class="c1"&gt;// reset all your change from that file&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;checkout&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="c1"&gt;// reset all your file change &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #git add &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;The git adds command is basically used to add your local changes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;add&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="c1"&gt;// add your all local changes&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;add&lt;/span&gt; &lt;span class="nx"&gt;directory_path&lt;/span&gt; &lt;span class="c1"&gt;// add all changes from a particular directory&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;add&lt;/span&gt; &lt;span class="nx"&gt;file_path&lt;/span&gt; &lt;span class="c1"&gt;// add your changes from a particular file&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #git commit &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;The git commit command is basically used to commit our code and log message about it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;commit&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;comment&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #git push &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;The git push command is basically used to push our changes to the remote.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;push&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #git pull &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;The git pull command is basically used to pull out all the remote changes to our local.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;pull&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #git diff &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;The git diff command is basically used to see your local changes line by line.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;diff&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #git stash &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;The git stash command is used to stash all our local changes from the current working directory and adds to the stash list.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;stash&lt;/span&gt; &lt;span class="c1"&gt;// Stash the changes.&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;stash&lt;/span&gt; &lt;span class="nx"&gt;list&lt;/span&gt; &lt;span class="c1"&gt;// list the stash entries that you currently have.&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;stash&lt;/span&gt; &lt;span class="nx"&gt;pop&lt;/span&gt; &lt;span class="c1"&gt;// remove a single stashed state from the stash list and apply it on top of the current working directory&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;stash&lt;/span&gt; &lt;span class="nx"&gt;apply&lt;/span&gt; &lt;span class="c1"&gt;// like pop, but do not remove the state from the stash list.&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;stash&lt;/span&gt; &lt;span class="nx"&gt;clear&lt;/span&gt; &lt;span class="c1"&gt;// remove all the stash entries. &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #git merge &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;The git merge command is used to join branch changes into one. For merge first checkout with your branch where you want to take all the other branch changes then apply merge command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;merge&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;abort&lt;/span&gt; &lt;span class="c1"&gt;// can only be run after the merge results in conflicts. it will abort the merge process and try to reconstruct the pre-merge state. &lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;merge&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;no&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;ff&lt;/span&gt; &lt;span class="nx"&gt;branch_name&lt;/span&gt; &lt;span class="c1"&gt;// create a merge commit in all cases, even when the merge could instead be resolved as a fast-forward.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #git reset &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;The git reset command is used to return the entire working directory to the last committed state.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;reset&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;hard&lt;/span&gt; &lt;span class="c1"&gt;// will remove the last commit from the current branch, and your working directory&lt;/span&gt;
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;reset&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;soft&lt;/span&gt; &lt;span class="c1"&gt;// will remove the last commit from the current branch, but the file changes will stay in your working directory.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #git cherry-pick &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;The git cherry-pick command is used to take out some commits from one branch and add it to another branch.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;cherry&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;pick&lt;/span&gt; &lt;span class="nx"&gt;commit_id&lt;/span&gt; 
&lt;span class="nx"&gt;git&lt;/span&gt; &lt;span class="nx"&gt;cherry&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;pick&lt;/span&gt; &lt;span class="nx"&gt;commit_id&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="c1"&gt;// cherry-pick with all the commits message&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I have written this blog to just remember all the commend that we are using in our day to day life, if I have missed anything then feel free to add that in the comment. I will appreciate all your comments and suggestions.&lt;/p&gt;

</description>
      <category>git</category>
      <category>devops</category>
    </item>
    <item>
      <title>Browser-specific CSS for Internet Explorer, Firefox, Chrome, Safari and Edge</title>
      <dc:creator>krantikr</dc:creator>
      <pubDate>Sat, 02 Nov 2019 14:38:39 +0000</pubDate>
      <link>https://dev.to/krantikr/browser-specific-css-for-internet-explorer-firefox-chrome-safari-and-edge-394p</link>
      <guid>https://dev.to/krantikr/browser-specific-css-for-internet-explorer-firefox-chrome-safari-and-edge-394p</guid>
      <description>&lt;p&gt;If you are working with HTML and CSS then definitely you would have faced lots of browser-specific issues in CSS. I have also faced similar kind of issues at times and sometimes it's really tough to fix these issues. We can fix some of these issues by writing browser-specific CSS. &lt;br&gt;
I would personally recommend avoiding the use of browser-specific CSS because it depends on the browser and their versions, it might fail with the other versions of the same browser. &lt;/p&gt;

&lt;h4&gt;
  
  
  Table Of Contents
&lt;/h4&gt;

&lt;p&gt;Internet Explorer&lt;br&gt;
Microsoft Edge&lt;br&gt;
Chrome&lt;br&gt;
Safari&lt;br&gt;
Firefox&lt;br&gt;
Opera&lt;/p&gt;

&lt;h4&gt;
  
  
  #Internet Explorer &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/* Using conditional comments with stylesheet */&lt;/span&gt;
&lt;span class="c"&gt;&amp;lt;!--&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nx"&gt;IE&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;link&lt;/span&gt; &lt;span class="nx"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;stylesheet&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text/css&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;only-ie.css&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;endif&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;--&amp;gt;&lt;/span&gt;

&lt;span class="cm"&gt;/* Using conditional comments with head section CSS */&lt;/span&gt;
&lt;span class="c"&gt;&amp;lt;!--&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nx"&gt;IE&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text/css&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="cm"&gt;/************ css for all IE browsers ****************/&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/style&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;endif&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;--&amp;gt;&lt;/span&gt;

&lt;span class="cm"&gt;/* Using conditional comments with HTML elements */&lt;/span&gt;
&lt;span class="c"&gt;&amp;lt;!--&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nx"&gt;IE&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ie-only&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="cm"&gt;/*content*/&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt; &amp;lt;!&lt;/span&gt;&lt;span class="se"&gt;[&lt;/span&gt;&lt;span class="sr"&gt;endif&lt;/span&gt;&lt;span class="se"&gt;]&lt;/span&gt;&lt;span class="sr"&gt;--&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;
&lt;span class="nx"&gt;Using&lt;/span&gt; &lt;span class="nx"&gt;media&lt;/span&gt; &lt;span class="nx"&gt;query&lt;/span&gt;
&lt;span class="cm"&gt;/*  IE10+ */&lt;/span&gt;
 &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;media&lt;/span&gt; &lt;span class="nx"&gt;screen&lt;/span&gt; &lt;span class="nf"&gt;and &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;high&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;contrast&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;active&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;high&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;contrast&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;none&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nx"&gt;selector&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/*  IE6,7,9,10  */&lt;/span&gt;
 &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;media&lt;/span&gt; &lt;span class="nx"&gt;screen&lt;/span&gt; &lt;span class="nf"&gt;and &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;640&lt;/span&gt;&lt;span class="nx"&gt;px&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;screen&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="nx"&gt;selector&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/*  IE6,7  */&lt;/span&gt;
 &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;media&lt;/span&gt; &lt;span class="nx"&gt;screen&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;selector&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;

 &lt;span class="cm"&gt;/* IE8  */&lt;/span&gt;
 &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;media&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="nx"&gt;screen&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;selector&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/*  IE6,7,8  */&lt;/span&gt;
 &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;media&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="nx"&gt;screen&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;screen&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;selector&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;

 &lt;span class="cm"&gt;/* IE9,10  */&lt;/span&gt;
 &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;media&lt;/span&gt; &lt;span class="nx"&gt;screen&lt;/span&gt; &lt;span class="nf"&gt;and &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
  &lt;span class="nx"&gt;selector&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #Microsoft Edge &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;supports&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;ime&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;selector&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #Chrome &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="cm"&gt;/* Chrome 29+ */&lt;/span&gt;
&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;media&lt;/span&gt; &lt;span class="nx"&gt;screen&lt;/span&gt; &lt;span class="nf"&gt;and &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;webkit&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;pixel&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;ratio&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nf"&gt;and &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;resolution&lt;/span&gt;&lt;span class="p"&gt;:.&lt;/span&gt;&lt;span class="mi"&gt;001&lt;/span&gt;&lt;span class="nx"&gt;dpcm&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;selector&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/* Chrome 22-28 */&lt;/span&gt;
&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;media&lt;/span&gt; &lt;span class="nx"&gt;screen&lt;/span&gt; &lt;span class="nf"&gt;and&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;webkit&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;pixel&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;ratio&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;selector&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;chrome&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nf"&gt;only &lt;/span&gt;&lt;span class="p"&gt;(;&lt;/span&gt; 
     &lt;span class="nl"&gt;property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;);}&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/* Chrome, Safari, and also the Edge Browser and Firefox */&lt;/span&gt;
&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;media&lt;/span&gt; &lt;span class="nf"&gt;and &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;webkit&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;pixel&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;ratio&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;selector&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #Safari &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="cm"&gt;/* Safari 11+ */&lt;/span&gt;
&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;media&lt;/span&gt; &lt;span class="nx"&gt;not&lt;/span&gt; &lt;span class="nx"&gt;all&lt;/span&gt; &lt;span class="nf"&gt;and &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;resolution&lt;/span&gt;&lt;span class="p"&gt;:.&lt;/span&gt;&lt;span class="mi"&gt;001&lt;/span&gt;&lt;span class="nx"&gt;dpcm&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;supports&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;webkit&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;appearance&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;none&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nf"&gt;and &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;stroke&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;transparent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;selector&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
        &lt;span class="nl"&gt;property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}}&lt;/span&gt;

&lt;span class="cm"&gt;/* Safari 10.1 */&lt;/span&gt;
&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;media&lt;/span&gt; &lt;span class="nx"&gt;not&lt;/span&gt; &lt;span class="nx"&gt;all&lt;/span&gt; &lt;span class="nf"&gt;and &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;resolution&lt;/span&gt;&lt;span class="p"&gt;:.&lt;/span&gt;&lt;span class="mi"&gt;001&lt;/span&gt;&lt;span class="nx"&gt;dpcm&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt; 
&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;supports&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;webkit&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;appearance&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;none&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nf"&gt;and &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;not &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;stroke&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;transparent&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;selector&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
        &lt;span class="nl"&gt;property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}}&lt;/span&gt;

&lt;span class="cm"&gt;/* Safari 6.1-10.0 (not 10.1) */&lt;/span&gt;
&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;media&lt;/span&gt; &lt;span class="nx"&gt;screen&lt;/span&gt; &lt;span class="nf"&gt;and &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nf"&gt;and&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;webkit&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;pixel&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;ratio&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt; 
&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;media&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;selector&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
        &lt;span class="na"&gt;property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #Firefox &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;moz&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nf"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;selector&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;Or&lt;/span&gt;

&lt;span class="cm"&gt;/* By useing @supports */&lt;/span&gt;
 &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;supports&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;moz&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;appearance&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;none&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;selector&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  #Opera &lt;a&gt;&lt;/a&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;media&lt;/span&gt; &lt;span class="nx"&gt;all&lt;/span&gt; &lt;span class="nf"&gt;and &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;webkit&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;pixel&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;ratio&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;not&lt;/span&gt; &lt;span class="nx"&gt;all&lt;/span&gt; &lt;span class="nf"&gt;and &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;webkit&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;device&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;pixel&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;ratio&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="nx"&gt;selector&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;css&lt;/span&gt; &lt;span class="nx"&gt;rule&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>html</category>
      <category>css</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
