<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Vikas Yadav on Medium]]></title>
        <description><![CDATA[Stories by Vikas Yadav on Medium]]></description>
        <link>https://medium.com/@ctrlaltvikas?source=rss-c21fff2ab233------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*2IJd95qE5MlNnHMZbShK6Q.jpeg</url>
            <title>Stories by Vikas Yadav on Medium</title>
            <link>https://medium.com/@ctrlaltvikas?source=rss-c21fff2ab233------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Thu, 12 Nov 2026 08:27:49 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@ctrlaltvikas/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Top Linux Commands You should know]]></title>
            <link>https://codeburst.io/top-linux-commands-you-should-know-bd30aba6a39b?source=rss-c21fff2ab233------2</link>
            <guid isPermaLink="false">https://medium.com/p/bd30aba6a39b</guid>
            <category><![CDATA[computer-science]]></category>
            <category><![CDATA[bash]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[linux]]></category>
            <category><![CDATA[developer]]></category>
            <dc:creator><![CDATA[Vikas Yadav]]></dc:creator>
            <pubDate>Mon, 02 Jul 2018 14:08:28 GMT</pubDate>
            <atom:updated>2018-07-02T14:08:28.550Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/964/1*8evI--0ak3XhrwX9LjMM-A.png" /></figure><p>This article contains a curated collection of questions related to Linux which everyone should know. These questions are also among the most asked questions in company interviews, especially in devops profile/system engineer profile/Network engineer profile or Linux/Unix administrator profile.</p><p>Note: This article is targeted for beginners. I would recommend all the interested people to not to just read rather try on your system or your friend’s system 😅.</p><blockquote>How will you tell which version of kernel a system is currently running?<br>The answer is<strong> uname .</strong><br>uname is used for printing certain system information.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*079uTf2RfnBfgthQRMQg3Q.png" /><figcaption>Getting system information</figcaption></figure><blockquote>2. How will you get the IP address of a machine ?<br> The answer is <strong>ifconfig.</strong></blockquote><p>ifconfig is used to configure the kernel-resident network interfaces. It is used at boot time to set up interfaces as necessary. After that, it is usually<br> only needed when debugging or when system tuning is needed.</p><p>If no arguments are given, ifconfig displays the status of the currently active interfaces. If a single interface argument is given, it displays the status<br> of the given interface only; if a single -a argument is given, it displays the status of all interfaces, even those that are down. Otherwise, it configures<br> an interface.<br> Another utility command to get the IP address of a machine is ip addr show</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3h00v4QAvIQxhcopOcTpXw.png" /><figcaption>Using ifonfig to get the IP address</figcaption></figure><blockquote>3. Check for free disk space<br>The answer is <strong>df</strong> -ah</blockquote><p><strong>df</strong> displays the amount of disk space available on the file system containing each file name argument. The a flag depicts all files(pseudo, inaccessible or duplicate) and h flag is used for viewing results in human readable format.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lIxS8DfudedAmI5Gwx4Vdw.png" /><figcaption>Checking for free disk space</figcaption></figure><blockquote>4. How will you check the status of a service in a system?<br>The answer is using service or systemctl.</blockquote><p><strong><em>service udev status<br>systemctl status service</em></strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rCgt00aFlTQ30BBOAk2PuA.png" /><figcaption>Checking a service status using service utility command</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Z8jRXBr8lAaujlC9VqHOdg.png" /><figcaption>Checking a service status using systemctl utility command</figcaption></figure><blockquote>5. How to check the size of a directory’s contents on the disk?<br><strong>du -sh directoryName/</strong></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/648/1*hOAZY0KNYU-957yzC6Q70A.png" /></figure><blockquote>6. How to check for open ports on a Linux Machine?<br>The answer is using netstat.</blockquote><p>This is really an amazing utility. Netstat prints information about the Linux networking subsystem.</p><p><strong><em>netstat -tulpn</em></strong></p><p>The above command uses different flags. Without going in much detail, the t flag is for TCP sockets, u for UDP sockets, l for only listening sockets, p to show the PID and name of the program to which each socket belongs and n is to show numerical addresses instead of trying to determine symbolic host, port or user names.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*eKOY2aEWmoNg7MyHDD7tvg.png" /></figure><blockquote>7. How can you check CPU usage for a process?<br>ps aux | grep name_of_process<br>alt: top, htop</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cK0WJ2B-wEfr2kfCTYgUvA.png" /><figcaption>Checking CPU usage for a process</figcaption></figure><p>8. How to check for network connectivity from command line?</p><p>Ping utility is a useful diagnostic tool. It allows you to quickly test if you’re connected to your router or the Internet, and gives some indication of the quality of that connection.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fg9MtgKND-x1CDU_FKLnAQ.png" /><figcaption>Checking network connectivity using ping command</figcaption></figure><p>I hope you by this time you must have went across all the commands I wrote above. I would again request you to try it on your own so that you get comfortable using these commands.</p><p>Happy Programming!</p><blockquote>If you liked this article, please do give a clap 👏 and share ▶️ it with your friends 🙌.<br>You can reach me out on <a href="http://www.twitter.com/donvikas">Twitter,</a> <a href="http://www.github.com/vikaskyadav">Github</a> or <a href="https://www.linkedin.com/in/vikasuperman/">Linkedin</a>.</blockquote><figure><a href="http://bit.ly/codeburst"><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*i3hPOj27LTt0ZPn5TQuhZg.png" /></a></figure><blockquote>✉️ <em>Subscribe to </em>CodeBurst’s<em> once-weekly </em><a href="http://bit.ly/codeburst-email"><strong><em>Email Blast</em></strong></a><strong><em>, </em></strong>🐦 <em>Follow </em>CodeBurst<em> on</em><a href="http://bit.ly/codeburst-twitter"><strong><em>Twitter</em></strong></a><em>, view </em>🗺️ <a href="http://bit.ly/2018-web-dev-roadmap"><strong><em>The 2018 Web Developer Roadmap</em></strong></a><em>, and </em>🕸️ <a href="http://bit.ly/learn-web-dev-codeburst"><strong><em>Learn Full Stack Web Development</em></strong></a><em>.</em></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bd30aba6a39b" width="1" height="1" alt=""><hr><p><a href="https://codeburst.io/top-linux-commands-you-should-know-bd30aba6a39b">Top Linux Commands You should know</a> was originally published in <a href="https://codeburst.io/">codeburst</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Learning the OSI Model]]></title>
            <link>https://codeburst.io/learning-the-osi-model-32b48cc55bdd?source=rss-c21fff2ab233------2</link>
            <guid isPermaLink="false">https://medium.com/p/32b48cc55bdd</guid>
            <category><![CDATA[software]]></category>
            <category><![CDATA[computer-science]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[networking]]></category>
            <category><![CDATA[internet]]></category>
            <dc:creator><![CDATA[Vikas Yadav]]></dc:creator>
            <pubDate>Sun, 18 Mar 2018 18:40:31 GMT</pubDate>
            <atom:updated>2018-03-21T05:52:17.611Z</atom:updated>
            <content:encoded><![CDATA[<h3><strong>Introduction</strong></h3><p>This is the continuation of the previous article in which we discussed the TCP/IP protocol suite. If you haven’t gone through my <a href="https://codeburst.io/learning-tcp-ip-protocol-suite-6947b601ea11">previous article</a>, I would recommend you to have a look at it as I have already explained some basic terminologies in it that we will be discussing here again. Although, the whole post is a little long but I request you to read till the last. I can guarantee you will get to know so many in depth details just by reading this article. :)</p><p>In this article, we will try to get answers to the following questions:</p><ul><li>What actually the OSI Model is ?</li><li>What is the need of OSI model ?</li><li>What constitutes OSI model? ( Hint: Some bunch of layers similar to that in TCP/IP)</li><li>Where we can see the practical implementation of this model ?</li></ul><p>Let’s get started!</p><h3>History</h3><p>In the early days, when the network communication systems were in nascent stages, the architecture designers and engineers faced the frequently occurring issue of debugging where in the whole system, some error occurred. Further, it was a need to bring all the manufacturers of various hardware equipments to follow some references and benchmarks for manufacturing so as to standardize everything under the hood.</p><h3>The OSI Model</h3><p>The Open System Interconnection (OSI) is a <strong>reference model</strong> for how various applications communicate over any network.</p><blockquote>Reference Model : A reference model is a conceptual model for understanding basic relationships between various basic elements.( Computer systems in terms of networking).</blockquote><h3>Need for this model</h3><p>As already discussed in the introduction, the purpose behind this model was to provide developers, programmers, engineers, vendors and all the associated people a standard that can serve as a guide for them using which they would be able to create communication equipments and softwares <strong>inter operable</strong>.</p><h3>Constituents of the OSI Model</h3><p>The concept of the OSI model is pretty easy to understand. The process of communication between any two systems will involve flow of data between them. Both the systems must have some programs which can enable them to send and receive data properly.</p><p>To solve specific type of problems, the committee grouped similar type of problems together and divided the architecture of the model in layers which was minimized to seven layers. Different problems are solved by numerous protocols that have evolved with time. Let’s discuss all the seven layers one by one in the next section.</p><h3>Layers of OSI Model</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/361/1*kPhF1HKTXMg7MGNAW8k04A.jpeg" /><figcaption>Seven Layers of the OSI Model</figcaption></figure><h4><strong>1. Application Layer</strong></h4><p>In simple words, this is the layer which enables the user to access the Internet. This user might be a human and might not be! <br>Guess what, it could be a bot, script or any other software.</p><p>The function of this layer is to provide:</p><ul><li>User interfaces (UI)</li><li>Compatible support for various services such as Electronic mail, remote file transfer and access, shared database or any other type of distribution services.</li></ul><h4>2. Presentation Layer</h4><p>This layer is concerned with the semantics and syntax of the information exchanged between the systems.</p><p>Some of the specific responsibilities of this layer are:</p><ul><li><strong>Encryption/Decryption of data</strong>: In simple words, encryption is the method of transforming the original message and sending it so as to ensure the privacy of data being transmitted. The decryption reverses the original process to transform the message back to its original form.</li><li><strong>Compression</strong>: It is the reducing the number of bits contained in the information to be sent. This plays vital role in the transmission of information in form of audio, video, images, etc.</li><li><strong>Translation: </strong>The information exchanged between two systems happens in form of bit streams (many bits at once), but since different computers use different encoding systems( <a href="https://en.wikipedia.org/wiki/ASCII">ASCII</a>, <a href="https://en.wikipedia.org/wiki/UTF-8">Unicode</a> or may be some other), it is the responsibility of this layer to ensure interoperability between these different encoding methods.</li></ul><h4>3. Session Layer</h4><blockquote>As per <a href="https://en.wikipedia.org/wiki/Behrouz_A._Forouzan">Forouzan</a>, the session layer is the network dialog controller, i.e. It establishes, maintains and synchronizes the interaction between communicating systems.</blockquote><p>The responsibilities of this layer will make us understand about it’s existence.</p><ul><li><strong>Dialog Control: </strong>This layer allows two communicating systems to enter into a dialog. It allows the communication between two processes to take place in half duplex (one way at a time) or in full duplex mode ( both ways at a time).</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/401/1*uWJ5jPj9Mks9zqd8Uo-URg.jpeg" /><figcaption>Transmission Modes</figcaption></figure><ul><li><strong>Synchronization: </strong>This layer allows a process to add some <strong>checkpoints </strong>into a stream of data. Why so?</li></ul><p>Consider a system sending a file of 100 pages with a checkpoint of say 10 pages. Thus after 10 pages being sent, the process will verify whether those 10 pages have been sent and received correctly or not.</p><p>If we wouldn’t have used checkpoint mechanism and some error would have arrived either while receiving or during transmission, it would be very hard to troubleshoot where the error occurred and the process would have to send all the 100 pages again. So, is the utility of using the checkpoints that if some error occurs during the transmission, the sender doesn’t have to send unnecessary frames again.</p><h4>4. Transport Layer</h4><p>The basic function of this layer is to accept data from session layer, split up in smaller chunks(referred to as segments), pass these segments to network layer while ensuring that all the pieces <strong>arrive correctly</strong> at the other end.</p><p><strong>Very Important Point: </strong>The transport layer is responsible for the <strong>process to process</strong> delivery of the <strong>entire message</strong>.</p><blockquote>A <strong>process</strong> is an application program running on a system.</blockquote><p>The transport layer ensures that the whole message arrives at the receiver intact and in order. This is not done by the network layer<em>(discussed below) </em>as it only oversees the source to destination delivery and the network layer <strong>doesn’t</strong> identify any relationship between the packets of same message.</p><p>Some other responsibilities of the transport layer are:</p><ul><li><strong>Service Point Addressing:</strong> There are two users (A and B) on different systems in a network running same program say Skype. Let us assume they are already added as contacts to each other. Now user A sends a message to user B. So, the task of transmitting the message from User A and delivering it to user B will involve all the layers in the protocol suite, but ensuring that the message from User A’s Skype comes on User B’s skype is ensured by the Transport Layer at <strong>both sides</strong>. Think of the consequences in terms of Security if Skype’s message appears on some other random process!</li><li><strong>Flow Control:</strong> Both Transport layer and Data Link Layer (DLL) implements flow control mechanism. We will discuss this in detail in DLL. The only thing worth noting here is that flow control at this layer is performed <strong>end to end</strong> rather than across a <strong>single link</strong>.</li><li><strong>Error Control: </strong>Again, both transport layer and DLL have error control mechanism. However, at this layer error control is performed <strong>end to end</strong> rather than across a single link. <br>The transport layer on sender side ensures that the message arrives correctly on the transport layer on the other side.</li></ul><p>What will happen if some error occurred in this process?<br>The answer is Retransmission. The error correction is usually done by this.</p><h4>5. Network Layer</h4><p>This layer is responsible for ensuring the <strong>source to destination</strong> delivery of a packet.</p><p>Is network layer needed always? <br>The answer is <strong>No</strong>.<br>If two systems are connected to the <strong>same link</strong>, there is usually no need for network layer. But, if two systems are attached to different networks with connecting devices between the networks, there is often a need for the network layer to accomplish packet delivery from the source to the destination.</p><p>Some of the responsibilities of the network layer are:</p><ul><li><strong>Logical Addressing:</strong> The logical addressing of nodes in the network is required to clearly identify among source, intermediate and destination nodes. This layer add in its headers, the logical addresses of the sender and the receiver before passing down to DLL.</li><li><strong>Routing:</strong> It is the mechanism of identifying <strong>suitable routes</strong> for sending data packets in the fastest possible and efficient way. In a large network, the connecting devices route the packets to their final destination starting from the source destination following particular route.</li></ul><h4>6. Data Link Layer (DLL)</h4><blockquote><strong>Data link</strong> is the means of <a href="https://en.wikipedia.org/wiki/Telecommunications_link">connecting one location to another</a> for the purpose of transmitting and receiving digital information. It can also refer to a set of electronics assemblies consisting of transmitter and receiver.</blockquote><p>This layer makes the physical layer(discussed below) appear error-free to the upper layer. It provides <strong>end-to-end</strong> validity of the data being transmitted. It forms data frames from the packets of data received by the network layer and performs some operations and send those frames to the physical layer.<br>The other responsibilities of DLL are :</p><ul><li><strong>Flow Control: </strong>The DLL imposes a flow control mechanism, this is done so as to avoid the condition of <strong>receiver overwhelming</strong> at the receiver’s side. We can consider this in analogy of a traffic jam at <strong>receiver side</strong>.<br>i.e. when the speed with which sender is transmitting the data is much higher than the speed with which the receiver is receiving the data.</li><li><strong>Error control: </strong>The DLL provides mechanism to detect and retransmit damaged or lost frames. This is done by adding a trailer at the end of the frame.</li><li><strong>Access Control: </strong>When two or more devices are connected to the same link, the DLL determines which device will have control over the link at any given time. This mechanism of providing control to some device is called as access control mechanism.</li></ul><p><strong>Extra Point</strong>: The DLL is further divided into two sub-layers:</p><ul><li><strong>Media Access Control (MAC) : </strong>This sublayer determines the physical addressing of the host systems. <br>Have you ever heard of the word <strong>MAC address/ Physical Address/ Hardware address</strong>? <br>Let me tell you that the <strong>Physical</strong>/<strong>Hardware</strong> address of your computer system is technically known as <strong>MAC address</strong>. This is the address which gives unique identity to your computer system. This address is nothing but a <strong>48 bit</strong> number given to Network Interface Card(NIC) of your system.</li><li><strong>Logical Link Control</strong> <strong>(LLC)</strong>: This sublayer is responsible for frame synchronization, flow control and error checking mechanisms.</li></ul><h4>7. Physical Layer</h4><p>We already discussed that the data flows in the network in form of bit stream. It is the responsibility of the physical layer to:</p><ul><li>coordinate between all the functions required to carry a bit stream over a physical medium.</li><li>deal with the mechanical and electrical specifications of the interfaces and transmission media (cables, air, etc.)</li><li>define the functions and procedures that <strong>physical devices and interfaces</strong> have to perform for transmission to occur.</li></ul><p>The physical layer is also concerned with :</p><ul><li><strong>Representations of bits : </strong>You might be wondering how bits ( 0 and 1) are actually sent from one place to another. Isn’t it?<br>To transmit the data over some transmission medium, the data in the form of bits must be transformed into some other form.</li></ul><p>Could you guess what it could be?<br> The answer is <strong>signals. </strong>These signals could be electrical or optical. Thus, this layer transforms bits into signals which in practicality travel over the transmission medium.</p><ul><li><strong>Physical Topology:</strong> It defines how devices are connected with each other to form a network. Have a look at some of the topologies in the following illustration. Every purple circle is a node(system) in the network. <br> <br>Note: <br>In <strong>Ring</strong> topology, nodes are connected in the form of a ring. In <strong>Star, </strong>each node is connected via a central node. In <strong>Fully Connected</strong>, every node is connected to each other node, while <strong>line</strong> and <strong>bus</strong> have end points. If at any point in the system, the connection breaks, the Line and bus will stop working.<br> Think what will happen when the central node in the Star topology stops working?<br>Obviously, <strong>all</strong> the nodes <strong>won’t be able</strong> to communicate if the central node stops working. Thus, every topology has its own pros and cons.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/791/1*KVRZYGL0lu7F2IcR3l5OrQ.jpeg" /><figcaption>Various Networking Topologies</figcaption></figure><ul><li><strong>Synchronization of bits:</strong> The speed with which sender is sending the bits might not be the same as the speed with which receiver is receiving. Thus, they both need to be synchronized which is taken care by physical layer.</li><li><strong>Transmission Mode:</strong> In simple words, the physical layer also defines the direction of transmission between two devices: simplex, half-duplex and full-duplex. The only thing to note is that in simplex mode, only one side could be the sender unlike the other two modes.</li></ul><p>In this article, we discussed in detail about the OSI Model. Why it was created. What constitutes this model and what are the different layers and their functionalities.</p><blockquote><strong>To Sum Up: </strong>The OSI Model is said to be prescriptive model as opposite to the descriptive TCP/IP model. It was a reference model but heavily bloated and referred to as everything to everybody model. Being heavily complex, it was very difficult to implement its specifications completely and hence TCP/IP was brought in which was effective in practicality and the cost involved in designing TCP/IP protocol suite(which was inspired from OSI Model and incorporated many features and designs in it) was very less as compared to implementing the unrealistic OSI Model. <br>Thus, even today while using the TCP/IP suite, most of the implementation is somewhat similar to what we have discussed and surely gives us in depth details of basics of computer networking.</blockquote><p><em>If you liked this article, please show your support by clapping and sharing it among other people. <br>If you would like to support my writing. You can help me out </em><a href="https://www.paypal.me/vikaskyadav"><em>here</em></a><em>. It will keep me motivated to share more knowledge with people. :)<br>For any queries, reach out to me </em><a href="https://twitter.com/donvikas"><em>@donvikas</em></a></p><figure><a href="http://bit.ly/codeburst"><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*i3hPOj27LTt0ZPn5TQuhZg.png" /></a></figure><blockquote>✉️ <em>Subscribe to </em>CodeBurst’s<em> once-weekly </em><a href="http://bit.ly/codeburst-email"><strong><em>Email Blast</em></strong></a><strong><em>, </em></strong>🐦 <em>Follow </em>CodeBurst<em> on </em><a href="http://bit.ly/codeburst-twitter"><strong><em>Twitter</em></strong></a><em>, view </em>🗺️ <a href="http://bit.ly/2018-web-dev-roadmap"><strong><em>The 2018 Web Developer Roadmap</em></strong></a><em>, and </em>🕸️ <a href="http://bit.ly/learn-web-dev-codeburst"><strong><em>Learn Full Stack Web Development</em></strong></a><em>.</em></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=32b48cc55bdd" width="1" height="1" alt=""><hr><p><a href="https://codeburst.io/learning-the-osi-model-32b48cc55bdd">Learning the OSI Model</a> was originally published in <a href="https://codeburst.io/">codeburst</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Learning the TCP/IP Protocol Suite]]></title>
            <link>https://codeburst.io/learning-tcp-ip-protocol-suite-6947b601ea11?source=rss-c21fff2ab233------2</link>
            <guid isPermaLink="false">https://medium.com/p/6947b601ea11</guid>
            <category><![CDATA[networking]]></category>
            <category><![CDATA[computer-science]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[software]]></category>
            <category><![CDATA[internet]]></category>
            <dc:creator><![CDATA[Vikas Yadav]]></dc:creator>
            <pubDate>Sun, 11 Mar 2018 17:20:10 GMT</pubDate>
            <atom:updated>2018-03-21T05:51:25.074Z</atom:updated>
            <content:encoded><![CDATA[<h3>Before We Start</h3><p>We need to know what actually is a <strong>protocol</strong>.</p><blockquote>In terms of networking, a <strong>Protocol</strong> corresponds to a set of rules which govern how system communicate with each other.</blockquote><p>Then we need to know what a<strong> Protocol suite </strong>is.</p><blockquote>A protocol suite is simply a collection of protocols that are designed to work together.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/441/1*WW15_75zxpNbA8zuWsO0mA.jpeg" /><figcaption>TCP/ IP Protocol Suite</figcaption></figure><h3>What is TCP/IP Model?</h3><p>The TCP/IP (Transmission Control Protocol / Internet Protocol) was created in the 1970s by <a href="https://en.wikipedia.org/wiki/DARPA">DARPA</a>. The model came from <a href="https://en.wikipedia.org/wiki/ARPANET">ARPANET</a> and is also known as the “Internet Model”. It has four abstraction layer which describe a general set of design guidelines and implementations of specific protocols for network communication. We will be discussing all these four layers in brief with some popular protocols of each layer.</p><h3>1. Application Layer</h3><p>This layer provides applications the ability to access the services of the other layers and defines the protocols that applications use to exchange data. This layer adds it’s own header and sends down to the Transport layer.</p><p>Some of the popular protocols of this layer are :<br><a href="https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol">HTTP</a>, <a href="https://en.wikipedia.org/wiki/File_Transfer_Protocol">FTP</a>, <a href="https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol">SMTP</a>, <a href="https://en.wikipedia.org/wiki/Telnet">Telnet</a>, <a href="https://en.wikipedia.org/wiki/Secure_Shell">NFS</a>, <a href="https://en.wikipedia.org/wiki/Routing_Information_Protocol">RIP</a>, etc.</p><h3>2. Transport Layer</h3><p>It is mainly responsible for providing the application layer with session and datagram communication services. It accepts data from application layer, splits it up into smaller units and pass these to the network layer. This layer adds it’s own headers and sends down to the Internet layer.</p><p>It is the responsibility of this layer to ensure that all the split pieces arrive correctly at the other end. It is concerned with end-to-end transportation of data and setups up a logical connection between the hosts.</p><p>There are two protocols available in this layer:<br><a href="https://en.wikipedia.org/wiki/Transmission_Control_Protocol">TCP</a> and <a href="https://en.wikipedia.org/wiki/User_Datagram_Protocol">UDP</a></p><h3>3. Internet Layer</h3><p>The segments sent by the above layers are received here. Now, we need to send this segment of data to a destination host which could be anywhere ( in the same network or may be external network). This layer ensures that the segment is moved across the networks to the destination network. It provides logical addressing, path determination for the segments to be sent and forwarding .</p><p>This layer also adds it’s own headers and convert and send the received segments in form of packets.</p><p>Some of the popular protocols of this layer are :<br><a href="https://en.wikipedia.org/wiki/Internet_Protocol">Internet Protocol (IP)</a>, <a href="https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol">ICMP</a>, etc.</p><h3>4. Network Access Layer ( Data Link + Physical Layer)</h3><p>This layer defines the protocols and hardware required to connect a host to a physical network and to deliver data across it. For delivery within a given physical network, packets are sent from the above layer to this layer.</p><p>The destination can be another host in the network, itself, or a router for further forwarding. So the Internet layer has a view of the entire Internetwork whereas the Network Access layer is limited to the physical layer boundary that is often defined by a layer 3 device such as a router.</p><p>The protocols in this layer depends upon which physical network is being used. When the physical network is LAN, <a href="https://en.wikipedia.org/wiki/Ethernet"><strong>Ethernet(802.3)</strong></a><strong> </strong>and it’s many variants are used while if the physical network is a WAN, protocols such as <a href="https://en.wikipedia.org/wiki/Point-to-Point_Protocol"><strong>Point to Point Protocol (PPP)</strong></a> and Frame relay are common.</p><blockquote><strong>To Sum up</strong> : This article helps us understand the foundation behind everything happening in the computer networking. Every layer has its own functions and responsibilities. The data flow from one layer to another with some modifications and reach from the source to the destination.TCP/IP is said to be descriptive model as it brings practicality to the OSI Model which we will discuss in the <a href="https://codeburst.io/learning-the-osi-model-32b48cc55bdd">upcoming article</a> in detail.</blockquote><p><em>Edit 1: I have added the new article, you can visit it </em><a href="https://codeburst.io/learning-the-osi-model-32b48cc55bdd"><em>here</em></a><em>.</em></p><p><em>If you liked this article, please like it and share this with other people. <br>You can reach me out @</em><a href="https://twitter.com/donvikas">donvikas</a></p><figure><a href="http://bit.ly/codeburst"><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*i3hPOj27LTt0ZPn5TQuhZg.png" /></a></figure><blockquote>✉️ <em>Subscribe to </em>CodeBurst’s<em> once-weekly </em><a href="http://bit.ly/codeburst-email"><strong><em>Email Blast</em></strong></a><strong><em>, </em></strong>🐦 <em>Follow </em>CodeBurst<em> on </em><a href="http://bit.ly/codeburst-twitter"><strong><em>Twitter</em></strong></a><em>, view </em>🗺️ <a href="http://bit.ly/2018-web-dev-roadmap"><strong><em>The 2018 Web Developer Roadmap</em></strong></a><em>, and </em>🕸️ <a href="http://bit.ly/learn-web-dev-codeburst"><strong><em>Learn Full Stack Web Development</em></strong></a><em>.</em></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6947b601ea11" width="1" height="1" alt=""><hr><p><a href="https://codeburst.io/learning-tcp-ip-protocol-suite-6947b601ea11">Learning the TCP/IP Protocol Suite</a> was originally published in <a href="https://codeburst.io/">codeburst</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[WTH are torrents!? Explained in Layman’s terms.]]></title>
            <link>https://codeburst.io/wth-are-torrents-explained-in-laymans-terms-4ba8d414d57e?source=rss-c21fff2ab233------2</link>
            <guid isPermaLink="false">https://medium.com/p/4ba8d414d57e</guid>
            <category><![CDATA[download]]></category>
            <category><![CDATA[file-sharing]]></category>
            <category><![CDATA[bittorrent]]></category>
            <category><![CDATA[torrent]]></category>
            <category><![CDATA[peer-to-peer]]></category>
            <dc:creator><![CDATA[Vikas Yadav]]></dc:creator>
            <pubDate>Sun, 15 Oct 2017 20:35:46 GMT</pubDate>
            <atom:updated>2019-07-30T17:02:49.667Z</atom:updated>
            <content:encoded><![CDATA[<p>What are torrents?<br><strong>Torrents</strong> are simply a way to distribute files.</p><p>Now to understand WTH is <strong>seeders</strong> and <strong>leechers</strong> , first let’s take a look at a simpler method of sharing files — <strong>Hyper Text Transfer Protocol</strong> i.e. HTTP.</p><p>HTTP is used when you download files from a website using your web browser, or something like Internet Download Manager. (For example, when you download some Software, or drivers from manufacturer’s website, it’s usually done via HTTP).</p><p>How HTTP works is pretty simple. <br>Let’s say Jetbrains wants to distribute a 30-day latest trial version of WebStorm. They buy a computer, connect it to the Internet, place a copy of the WebStorm image on its hard drive, and configure some software (like Apache web server) to allow people to download the image.</p><p>When a user wants to download the image, he sends a request to Jetbrains’ web server. The web server starts replying with the WebStorm’s image data as fast as the Internet link between the two of you permits.</p><p>When the image is being transferred between the two (server and user), two things are happening simultaneously — upload of the image from the server, and download of image to the user’s device. (You can think of upload process as a person speaking on the phone, and download process as a person on the other end taking notes).</p><p>This is a pretty simple and convenient method of file sharing. But it has some drawbacks as:</p><p>— Someone needs to set up a server and buy a very fast Internet connection. If the server’s Internet connection is 500 kb/s — either one client can download at 500 kb/s, or if two clients are downloading, the speed will be divided among them — and each of them will get 250 kb/s.</p><p>- If one of the clients has a slow Internet— let’s say capped at 50 kb/s, the other client can download at 450 kb/s.</p><p>- On the other hand, if 15 clients with fast Internet connections are downloading, none of them will get a speed of more than 33 kb/s (500/15). Suffice it to say, Jetbrains’ servers have a very fast Internet connection.</p><p>It’s vulnerable and easy to block. If you don’t want your users to download Webstorm images, you just have to block Jetbrains’ sites. I can’t think of why non-programmers would want to block Webstorm’s image downloads, but in case of censored content (like Government crimes), or illegal content (like pirated movies), or both (NSA leaks), we can see why the government would want to block it.</p><p>Now let’s see how torrents solve these problems:</p><p>Let’s say you are a person with access to the proof of government crime (1GB of files). You tried to host it on a website, but the government blocked it. You now want to share it with the rest of the world.</p><p>What you do is — <strong>you create a torrent of the file</strong>!</p><p>A <strong>torrent</strong> is basically a very small file containing details of the files (names, file sizes, MD5 hashes etc.) that are shared using that torrent file. You can create it easily using your torrent client (uTorrent, Azureus, Transmission etc). You also have to add tracker details to the torrent file. A <strong>tracker</strong> is a server whose job is to distribute peer lists to new peers ).</p><p>You host this very small torrent file on some torrent sharing website. People who want to download your government crime proofs can go to the torrent website and download the torrent for it.</p><p>They then tell their torrent client to download the files described in the torrent. Since there is no server (like Jetbrains’ server for Webstorm’s image) to download the torrent, from their torrent, client talks to the tracker explained as:</p><p>Client — “Bro, any idea where I can get these govt. crime videos?”<br>Tracker — “I don’t know man, try these people” (gives client a list of other people interested in downloading the file).<br>Client — “By the way, add me to your list. Just in case anyone’s interested” (gives him his IP address)<br>Tracker — “Cool”</p><p>Your torrent client goes to each of the people in the list so obtained, and asks them if they are interested in sharing the files. Let’s say out of the 48 people in the list, 4 say they have File 1, 3 say they have File 2, and 6 say they have both the files. 9 say that they don’t have any files, but would like to download any files you have. The rest may or may not respond.</p><p>So you start downloading File 1 from all of those 4 + 6 people who have it, and File 2 from all of those 3 + 6 people who have it. Since you’re downloading the file, they are uploading it on the other end of the internet connection. Now since you downloaded it and used other people’s internet (in addition to your own), it is your moral responsibility to allow other people to download it from you.</p><p>Thus a torrent is a group of (100s or 1000s or more) people collaborating and giving each other pieces of the file until everyone has a copy of the entire file. It starts with the person who created the torrent simply uploading it until many people download, and then they upload it in turn and the torrent spreads.</p><p>So if the file is 1GB in size, the creator has to upload at least 1GB for it to spread. Ideally, he’d upload about 3–4GB, and that would give him 3–4 more friends, who’ll help spread it further.</p><p>This is why your <strong>torrent client is both downloading and uploading the torrent file</strong>. Downloading it — so that you can use, and uploading it so that others can also access the file.</p><p>Important Points to note:</p><p>1) All people engaged in the activity of sharing the torrent are called <strong>peers</strong>.</p><p>2) The people who are uploading are called <strong>seeders</strong>.</p><p>3) The people who are downloading are called <strong>leechers</strong>.</p><p>4) A lot of people, however are both downloading and uploading at the same time and can be called both (downloading parts they don’t have and uploading the ones they do).</p><p>5) If the number of seeders is more, you are likely to download the file faster.</p><p>6) If the number of leechers is more, the download is likely to be slow.</p><p><strong>Advantages of torrents</strong>:</p><ul><li>Central servers (i.e. the website where you upload the torrent, and the tracker) don’t have to share a lot of data. Both torrent files and peer lists are very small in size, hence these servers don’t cost that much to set up and maintain.</li><li>Difficult to block — since no central server is involved in the actual distribution and sharing of the files, it is difficult to block given its distributed nature.</li></ul><p>Thus you may realize why uploading (seeding) is so important to the concept of torrents. You are able to download only because someone else was uploading it for you. A torrent dies quickly if people refuse to upload. It may also happen that no one wants to download the torrent any more, and people who are willing to upload don’t find any takers, and after some time they give up and stop uploading that particular torrent.</p><p>Happy Torrenting!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4ba8d414d57e" width="1" height="1" alt=""><hr><p><a href="https://codeburst.io/wth-are-torrents-explained-in-laymans-terms-4ba8d414d57e">WTH are torrents!? Explained in Layman’s terms.</a> was originally published in <a href="https://codeburst.io/">codeburst</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Art of Searching something on the Internet.]]></title>
            <link>https://medium.com/hackernoon/the-art-of-searching-something-on-the-internet-20225127955c?source=rss-c21fff2ab233------2</link>
            <guid isPermaLink="false">https://medium.com/p/20225127955c</guid>
            <category><![CDATA[search]]></category>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[internet]]></category>
            <category><![CDATA[seo]]></category>
            <category><![CDATA[google]]></category>
            <dc:creator><![CDATA[Vikas Yadav]]></dc:creator>
            <pubDate>Wed, 05 Jul 2017 07:51:40 GMT</pubDate>
            <atom:updated>2017-07-05T07:51:40.999Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/751/1*Xoqmz6bmZ7TQ7ZREmdomeA.png" /></figure><p>Mostly referred as “The art of Googling”. Many times it happens that we wish to search on the Internet for some topic and we end up getting unsatisfactory results. Here is a list of hacks experts like <a href="https://www.quora.com/profile/Quincy-Larson">Quincy Larson</a> have recommended which you may consider whenever you are conducting a search for any topic.</p><ul><li>You can <strong>search within a particular URL</strong> by including the operator site:example.com<strong> </strong>before or after your keywords. Extremely helpful to search on programming websites that do not have a search functionality.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/0*XBltzOaDFJ20bC3T." /></figure><ul><li>If you’re looking <strong>for an exact phrase</strong>, use quotation marks around the keywords to view results containing that exact phrase.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/0*jRNs9A5BZwYVj5ar." /></figure><ul><li>If your search terms contain a keyword with several meanings, you can <strong>exclude one of the meanings</strong> by adding a hyphen (-) before the keyword.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/0*IR1eQC3yNiDAqBBo." /></figure><ul><li>Google omits most non-alphanumeric characters from its queries. Symbols that programmers use all the time like !@#$%^&amp; and * aren’t searched. Neither are (){}[]. Fortunately, <a href="https://duckduckgo.com/">DuckDuckGo</a> recently started supporting all characters in searches. So consider using <a href="https://duckduckgo.com/">DuckDuckGo</a> for your more sophisticated searches. They really are the most programmer-friendly search engine.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/0*usnKr13F73vhyEm-." /></figure><ul><li>To generate content <strong>similar to those found on a URL</strong> you already know, use the related: operator before adding the URL.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/0*6_gE1OFMWY6-dhwa." /></figure><ul><li>You can retrieve <strong>pages whose titles contain the keywords</strong> you’re searching for, by using the allintitle: operator.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/0*onksfwR51ikVXvQM." /></figure><ul><li>To retrieve pages where all the<strong> keywords appear in the body of the page</strong>, use the allintext: operator before the search terms.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/0*tnNH-Ijq3Hdb7_ym." /></figure><ul><li>You can enter more than one query into <a href="http://www.ebay.com/sch/i.html?_nkw=google">Google</a> at a time to view pages with one of the specified keywords. Just use a <strong>capitalised “OR”</strong> to separate the terms.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/0*FE_VrlS9qLSNvoKl." /></figure><ul><li>To look for news items emerging from a particular location, use the location: operator, then add the city name.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/0*Rjj6oFBHw4PUjRWm." /></figure><ul><li>An asterisk acts as a wildcard to help you find the missing word in a phrase.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/0*CgAlrnLsQiJqBGsx." /></figure><ul><li>Using the link: operator, you can <strong>find pages that link to another url</strong>. This is probably more useful for SEOs who are searching for backlinks to a specific page.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/0*--N6ADe4ooLgjGAb." /></figure><ul><li>If you’re looking <strong>for a specific file on the Web</strong>, you can use the filetype: operator to specify the particular document type you’re searching for, and <a href="http://www.ebay.com/sch/i.html?_nkw=google">Google</a> will restrict results to pages containing those document types.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/602/0*Jt2oqho_YYeZSnXP." /></figure><ul><li><strong>Use words that websites would use</strong></li></ul><p>When people use Google search to hunt the web, they generally search for things using the same language that they would use for speaking. Unfortunately, websites don’t say things the way people do; instead, they try to use language that sounds professional. Let’s look at some examples.</p><ul><li>“I have a flat tire” could be replaced by “repair a flat tire.”</li><li>“My head hurts” could be replaced by “headache relief.”</li></ul><p>The list goes on and on. When searching, try to use terminology you would find on a professional website. This will help you get more reliable results.</p><ul><li><strong>Use important words only</strong></li></ul><p>The way Google search works is to take what you search for and match it with keywords in online content. When you search for too many words, it may limit your results. That means it may actually take you longer to find what you’re looking for. Thus, it is apropos to use only the important words when searching for something. Let’s see an example.</p><ul><li>Don’t use: Where can I find a Chinese restaurant that delivers.</li><li>Instead try: Chinese restaurants nearby.</li><li>Or: Chinese restaurants near me.</li></ul><p>Doing this can help Google find what you need without all the clutter. So remember, keep it simple and use important words only.</p><ul><li><strong>Google Advance Book Search or Google Scholar</strong><br>Use <a href="https://books.google.co.in/advanced_book_search">Google Advance Book Search</a> or <a href="https://scholar.google.co.in/">Google Scholar</a> when your looking for technical publications. It also gives you an ability to easily cite the source.</li></ul><p>Happy Searching !</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=20225127955c" width="1" height="1" alt=""><hr><p><a href="https://medium.com/hackernoon/the-art-of-searching-something-on-the-internet-20225127955c">The Art of Searching something on the Internet.</a> was originally published in <a href="https://medium.com/hackernoon">HackerNoon.com</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Everyday you flutter]]></title>
            <link>https://medium.com/@ctrlaltvikas/everyday-you-flutter-85768469736c?source=rss-c21fff2ab233------2</link>
            <guid isPermaLink="false">https://medium.com/p/85768469736c</guid>
            <category><![CDATA[poetry]]></category>
            <category><![CDATA[rivers]]></category>
            <category><![CDATA[poem]]></category>
            <category><![CDATA[poetry-on-medium]]></category>
            <dc:creator><![CDATA[Vikas Yadav]]></dc:creator>
            <pubDate>Sun, 12 Feb 2017 13:01:42 GMT</pubDate>
            <atom:updated>2017-02-12T13:01:42.288Z</atom:updated>
            <content:encoded><![CDATA[<p>Come with me to the bridge of railroad tracks<br> went developed in form?<br> The uncle smiles at the daughter<br> but the fisherman does not smile<br> when he looks at the iguana son<br> and the promising ocean<br> amid the responding lemons.</p><p>It’s a reflecting eddy of leaves<br> A river bank fluttering will entertain<br> the self-assured<br> mud.<br> Of a planet,<br> indicates the book’s attracting brow.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=85768469736c" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[React Setup on local computer]]></title>
            <link>https://medium.com/@ctrlaltvikas/react-setup-on-local-computer-912f9a551af3?source=rss-c21fff2ab233------2</link>
            <guid isPermaLink="false">https://medium.com/p/912f9a551af3</guid>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[webpack]]></category>
            <category><![CDATA[babeljs]]></category>
            <category><![CDATA[react]]></category>
            <dc:creator><![CDATA[Vikas Yadav]]></dc:creator>
            <pubDate>Thu, 09 Feb 2017 19:08:47 GMT</pubDate>
            <atom:updated>2017-02-09T19:08:47.705Z</atom:updated>
            <content:encoded><![CDATA[<p>Credits: Codeacademy.</p><p><strong>Part : I</strong></p><p>This guide will teach you:</p><ol><li>How to install Node.js and npm</li><li>How npm is different than what you may be used to.</li><li>How to create a package.json file, and what that means.</li><li>How to install the React and ReactDOM libraries.</li></ol><h3>Installing Node and npm</h3><p>Getting React up and running is not as simple as downloading one large piece of software. You will need to install many, smaller software packages.</p><p>The first thing to install is a good installer! You need a way to download and install software packages easily, without having to worry about dependencies.</p><p>In other words, you need a good <a href="https://en.wikipedia.org/wiki/Package_manager">package manager</a>. We’ll be using a popular package manager named <a href="https://www.npmjs.com/">npm</a>. npm is a great way to download, install, and keep track of JavaScript software.</p><p>You can install npm by installing Node.js. Node.js is an environment for developing server-side applications. When you install Node.js, npm will install automatically.</p><ol><li><a href="https://nodejs.org/en/">Ctrl-click here</a> to navigate to the Node.js homepage in a new tab.</li><li>You should see links to download Node.js. Click on the download link of your choice. Follow the subsequent instructions to install Node.js and npm. If you&#39;ve already installed Node.js, that&#39;s okay, do it anyway.</li></ol><p>Congratulations! You’ve just installed some incredibly powerful software!</p><h3>How npm is Different</h3><p>When you install software, you may be used to something like this: you install what you need, it sits there on your computer, and you can use it whenever you want.</p><p>You can do that with npm! But there&#39;s a different, better way: install what you need, over and over again, every time that you need it. Download and install React every time that you make a React app.</p><p>That sounds much worse! Here’s why it’s actually better:</p><p>First, npm makes installation extremely easy. Installing software over and over sounds like a headache, but it really isn&#39;t. We&#39;ll walk through how soon!</p><p>Second, npm modules (&quot;modules&quot; are another name for software that you download via npm) are usually small. There are countless modules for different specific purposes. Instead of starting your app with a giant framework that includes tons of code you don&#39;t need, you can install only modules that you will actually use! This helps keep your code quick, easy to navigate, and not vulnerable to dependencies that you don&#39;t understand.</p><p>IN CONCLUSION: Starting now, every step in this article series will be a step that you have to take <strong><em>every time you make a new React app</em></strong>. You don’t have to install Node.js and npm anymore, but you should start from here for every new React project that you make.</p><h3>npm init</h3><p>Alright, let’s make a React app on your home computer! Where do you start?</p><p>To begin, decide where you want to save your app, and what you want to name it. In the terminal, cd to wherever you want to save your app. Use mkdir to make a new directory with your app&#39;s name. cd into your new directory.</p><p>Once you’ve done all that, type this command into your terminal:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/0*cRCy_fFPnlslUqYf.png" /></figure><p>You will get a lot of prompts! You can answer them, but it’s also safe to just keep hitting return and not worry about it.</p><p>Once the prompts are done, use your favorite text editor to open all of the files in your project’s root directory. You could do this with a terminal command such as atom . or subl .. You will see that a new file named package.json has been created!</p><p>What just happened?</p><p>The command npm init automatically creates a new file named package.json. package.json contains metadata about your new project.</p><p>Soon, you will install more npm modules. package.json keeps track of the modules that you install. Other developers can look at your package.json file, easily install the same modules that you&#39;ve installed, and run their own local versions of your project! This is fantastic for collaborating.</p><h3>Install React</h3><p>Alright! You’ve made a project folder, navigated into it, and used npm init to create a package.json file. Now you&#39;re ready to install some modules!</p><p>To install a <em>module</em> using npm, you need to know that module&#39;s <em>name</em>. If you want to install a module and you aren&#39;t sure of its exact name, you can search for it <a href="https://www.npmjs.com/">here</a>. Our first module is named react.</p><p>To install the react module, type this command in the terminal:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/299/0*Mv9rug4HtWfuu6o4.png" /></figure><p>install can be abbreviated as i, and --save can be abbreviated as -S, if you like to abbreviate:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/0*AXYreYNAmJroNGcH.png" /></figure><p>You just installed React! Now you can access it in your files with the code var React = require(&#39;react&#39;).</p><h3>Install ReactDOM</h3><p>If you look at package.json, you can see that there&#39;s an object named dependencies that now has react listed as a dependency. This indicates that your project is &quot;dependent&quot; on having react installed. If someone tries to run your project, it probably won&#39;t work unless they install react first.</p><p>You can also see something else new in your directory: a folder named node_modules.</p><p>node_modules is where npm modules are saved. If you open node_modules, you should see a folder named react, which contains the code that makes React run.</p><p>The next thing that you want to install is react-dom. Once you install react-dom, you will be able access it in your files with the code var ReactDOM = require(&#39;react-dom&#39;).</p><p>To install react-dom, type one of these two commands in the terminal:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/0*sdGSZay2lB7-Fs3A.png" /></figure><p><strong>Part:II</strong></p><h3>Background</h3><p>Before React code can run in the browser, it must be changed in certain ways. One necessary transformation is compiling JSX into vanilla JavaScript.</p><h3>Install Babel</h3><p><a href="https://babeljs.io/">Babel</a> is a JavaScript compiler that includes the ability to compile JSX into regular JavaScript. Babel can also do many other powerful things. It&#39;s worth exploring outside of the context of this course!</p><p>Babel&#39;s npm module&#39;s name is babel-core. You&#39;re going to install babel-core slightly differently than you installed react and react-dom. Instead of npm install --save babel-core, you will use the command npm install --save-dev babel-core.</p><p>This is because you will only be using Babel in <em>development mode</em>. When a React app is shipped into production, it no longer needs to make transformations: the transformations will be hard-coded in place. The --save-dev flag saves an npm module for development version only.</p><p>Just as --save can be shortened to -S, --save-dev can be shortened to -D.</p><p>You’re also going to install two other babel-related modules, named babel-loader and babel-preset-react, respectively. We&#39;ll explain those soon!</p><p>Use one of these terminal commands to install babel-core, babel-loader, and babel-preset-react:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/450/0*fxgVNX7nZq8LQkxJ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/350/0*YZTIww9yoBTPhF5o.png" /></figure><h3>Configure Babel</h3><p>In order to make Babel work, you need to write a babel <em>configuration file</em>.</p><p>In your root directory, create a new file named <strong>.babelrc</strong>. If you get prompted about starting a filename with a period, go ahead and say that it’s okay.</p><p>Save the following code inside of <strong>.babelrc</strong>:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/352/0*YkGopWKY2mHK935Y.png" /></figure><p>That’s it! Babel is now ready to go.</p><p><strong>Part:III</strong></p><p>em in which your React app will automatically run through Babel and compile your JSX, before reaching the browser.</p><p>Also, JSX to JavaScript is just one of many transformations that will need to happen to your React code. You need to set up a “transformation manager” that will take your code and run it through all of the transformations that you need, in the right order. How do you make that happen?</p><p>There are a lot of different software packages that can make this happen. The most popular as of this writing is a program called webpack.</p><h3>Install webpack</h3><p>webpack is a module that can be installed with npm, just like react and react-dom. You&#39;ll also be installing two webpack-related modules named webpack-dev-server and html-webpack-plugin, respectively. We&#39;ll explain these a little more soon.</p><p>webpack should be saved in development mode, just like babel.</p><p>Install webpack, webpack-dev-server, and html-webpack-plugin with one of these two terminal commands:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/475/0*ooVWPUOkAI6NcpU3.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/0*fX_gSrZd4NqdEoHL.png" /></figure><h3>webpack.config.js</h3><p>Alright! Webpack has been installed!</p><p>Webpack’s job is to run your React code through various <em>transformations</em>. Webpack needs to know exactly what transformations it should use!</p><p>You can set that information by making a special webpack configuration file. This file must be located in the outermost layer of your root directory, and must be named <strong>webpack.config.js</strong>. It is where you will put all of the details required to make webpack operate.</p><p>In your root directory, create a new file named <strong>webpack.config.js</strong>.</p><h3>Configure webpack</h3><p>Webpack is going to take your JavaScript, run it through some transformations, and create a new, transformed JavaScript file. <em>This</em> file will be the ones that the browser actually reads.</p><p>In order to do this, Webpack needs to know three things:</p><ol><li>What JavaScript file it should transform.</li><li>Which transformations it should use on that file.</li><li>Where the new, transformed file should go.</li></ol><p>Let’s walk through those three steps!</p><p>First, in <strong>webpack.config.js</strong>, write:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/353/0*D68M4a2fSbNhPlsB.png" /></figure><p>All of webpack’s configuration will go inside of that object literal!.</p><h3>What JavaScript File Should Webpack Transform?</h3><p>The first thing that webpack needs to know is an <em>entry point</em>. The <em>entry point</em> is the file that Webpack will transform.</p><p>Your entry point should be the outermost component class of your React project. It might look something like this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/351/0*FwmoMleI72CcLAj3.png" /></figure><p>In this example, webpack will transform the result of &lt;App /&gt;. If &lt;App /&gt;&#39;s render function contains components from other files, then those components will be transformed as well. If you make your <em>entry point</em> the outermost component class of your app, then webpack will transform your entire app!</p><p>To specify an <em>entry point</em>, give module.exports a property named entry. entry&#39;s <em>value</em> can be a filepath, or an array of filepaths if you would like to have more than one entry point. For this project, you will only need one.</p><p>In <strong>webpack.config.js</strong>, update module.exports to look like this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/350/0*Rp5ux3et-eaUv_OV.png" /></figure><p>In Node.js, __dirname refers to the currently executing file. __dirname + /app/index.js will create a filepath pointing to the currently executing file, down into a folder named app, and landing on a file named index.js.</p><h3>What Transformations Should Webpack Perform?</h3><p>Webpack can now successfully grab your outermost component class file, and therefore grab your entire React app. Now that webpack can grab all of this code, you need to explain what webpack should <em>do</em> with it once it’s been grabbed.</p><p>You can tell webpack what to do with the code that it’s grabbed by adding a second property to module.exports. This property should have a <em>name</em> of module and a <em>value</em> of an object literal containing a loaders array:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/352/0*UftnIrt_44bopqIo.png" /></figure><p>Each “loader” that you add to the <em>loaders</em> array will represent a transformation that your code will go through before reaching the browser.</p><h3>Write a Loader</h3><p>Each <em>loader</em> transformation should be written as an object literal. Here’s your first loader, empty for now:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/351/0*7wgREylMgOEinefk.png" /></figure><p>Each loader object needs a property called test. The test property specifies which files will be affected by the loader:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/350/0*-nTZ9vI72_GTIlmo.png" /></figure><p>The <a href="http://eloquentjavascript.net/09_regexp.html">regular expression</a> /\.js$/ represents all strings that end with the pattern, &quot;.js&quot;. That means that this <em>loader</em> will perform a transformation on all &quot;.js&quot; files.</p><p>In addition to “test”, each <em>loader</em> transformation can have a property named include or exclude. You can use &quot;exclude&quot; to specify files that match the &quot;test&quot; criteria, that you <em>don&#39;t</em> want to be transformed. Similarly you can use &quot;include&quot; to specify files that <em>don&#39;t</em> fit the &quot;test&quot; criteria, that you <em>do</em> want to be transformed:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/351/0*dWgOiL7zlgrJSlUe.png" /></figure><p>The node_modules folder contains lots of JavaScript files that will be caught by your /\.js$/ test. However, you <em>don&#39;t</em> want anything in the node_modules folder to be transformed. node_modules holds the code for React itself, along with the other modules that you&#39;ve downloaded. You don&#39;t want to transform that!</p><p>The final property of each <em>loader</em> is what transformation that loader should perform! You specify a particular transformation with a property named loader:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/351/0*XJr9Mu74CgoakW36.png" /></figure><p>In this example, you have a <em>loader</em> with three properties: test, exclude, and loader. Your <em>loader</em> will search for all files ending in &quot;.js&quot;, excluding files in the node_modules folder. Whatever files it finds, it will run through the &#39;babel-loader&#39; transformation.</p><p>Where does the string &#39;babel-loader&#39; come from? When you ran the command npm install --save-dev babel-core babel-loader babel-preset-react, you installed babel-loader into your node_modules folder. Your loader property will automatically be able to find it there. The magic of npm!</p><p>Add babel-loader to <strong>webpack.config.js</strong>.</p><h3>What Should Webpack Do With The Transformed JavaScript?</h3><p>Alright! Now you have told webpack which files to grab, and how to transform those files. Webpack will grab your React app and run it through babel-loader, translating all of your JSX into JavaScript.</p><p>The final question is, where should the transformed JavaScript go?</p><p>Answer this by adding another property to module.exports. This property should have a name of output, and a value of an object:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/353/0*MGZbJp2MFqJZF0uG.png" /></figure><p>The output object should have two properties: filename and path. filename will be the name of the new, transformed JavaScript file. path will be the filepath to where that transformed JavaScript file ends up:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/349/0*db08cEpKxDI8TMGT.png" /></figure><p>This will save your transformed JavaScript into a new file named <strong><em>build/transformed.js</em></strong>.</p><p><strong>Part:IV</strong></p><h3>HTMLWebpackPlugin</h3><p>Good work! The hardest part is over. There is, however, still one issue.</p><p>Your app’s main HTML file is named <strong>app/index.html</strong>. Your app’s outermost JavaScript file, which is also your <em>entry</em> point for webpack, is named <strong>app/index.js</strong>. These two files are neighbors, both living in the app folder.</p><p>Before webpack performs its transformations, your <em>entry</em> file (<strong>app/index.js</strong>) and your HTML file (<strong>app/index.html</strong>) are located in the same directory. The HTML file contains a link to the entry file, looking something like this: &lt;script src=&quot;./index.js&quot;&gt;&lt;/script&gt;.</p><p><em>After</em> webpack performs its transformations, your new entry file will be located in <strong>build/transformed.js</strong>, and that link won’t work anymore!</p><p>When webpack makes a new JavaScript file, it needs to make a new HTML file as well. There is a tool for this, and you’ve already installed it: html-webpack-plugin.</p><h3>Configure HTMLWebpackPlugin</h3><p>At the top of <strong>webpack.config.js</strong>, add this line of code:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/352/0*GeyqjbiPBoeM8x39.png" /></figure><p>When you call require(&#39;html-webpack-plugin&#39;), the returned value is a <em>constructor function</em>. Most of the work of configuring HTMLWebpackPlugin should be done on an <em>instance</em> of that constructor function.</p><p>Add this new declaration, underneath the previous one:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/350/0*4683dOFTV0vq_fof.png" /></figure><h3>The HTMLWebpackPlugin Configuration Object</h3><p>That empty configuration object is where you will tell HTMLWebpackPlugin what it needs to know.</p><p>The object’s first property should be named template. template&#39;s <em>value</em> should be a filepath to the current HTML file, the one that you&#39;re trying to copy and move:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/352/0*atgX0i5Efbe2ukG8.png" /></figure><p>The object’s second property should be named filename. filename&#39;s <em>value</em> should be the name of the newly created HTML file. It&#39;s fine to name it index.html. Since the new HTML file will be located in the <strong>build</strong> folder, there won&#39;t be any naming conflicts:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/352/0*Y6OUYYwhpeuSCG6K.png" /></figure><p>The object’s final property should be named inject. inject <em>value</em> should be be a string: either &#39;head&#39; or &#39;body&#39;.</p><p>When HTMLWebpackPlugin creates a new HTML file, that new HTML file will contain a &lt;script&gt; tag linking to webpack&#39;s new JavaScript file. This &lt;script&gt; tag can appear in either the HTML file&#39;s &lt;head&gt; or &lt;body&gt;. You choose which one via the inject property.</p><p>Here’s an full example:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/351/0*_f5ECsJPSavAF4OX.png" /></figure><h3>The Plugins Property</h3><p>You have fully configured your HTMLWebpackPlugin instance! Now all that&#39;s left is to add that instance to module.exports.</p><p>You can do this by creating a new module.exports property named plugins. plugins <em>value</em> should be an array, containing your configured HTMLWebpackPlugin instance!</p><p>Find the plugins property at the bottom of module.exports:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/350/0*DOA5aRntoLGW7rf0.png" /></figure><p><strong>Part:V</strong></p><h3>npm scripts</h3><p>Great work! You’ve installed and configured Node, npm, React, ReactDOM, Babel, and Webpack. That’s all of the installation that you need!</p><p>To make these installed parts actually <em>run</em>, you will be using npm command-line scripts. You’ve already used some of these, such as npm init and npm install --save react.</p><p>You will find that as your applications become more complex, you will need to use more and more verbose command-line scripts. This can become a serious pain!</p><p>Fortunately, npm scripts are here to help.</p><p>Inside of your <strong>package.json</strong> file, find the scripts object. This object lets you give your command-line scripts easier names, and look them up whenever you forget them!</p><p>Let’s say that you need to use the script npm run build &amp;&amp; npm run git-commit &amp;&amp; npm run git-push. That&#39;s way too much to remember. In <strong>package.json</strong>, you could add:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/351/0*wnkpUizH1BND9mz1.png" /></figure><p>After that, you only need to type npm run deploy, and it will execute the command saved as deploy&#39;s value. And even better, you can look up the command in <strong>package.json</strong> if you forget.</p><p>In <strong>package.json</strong>, replace the scripts object with this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/296/0*YYXW4Ab1cSJfa_Tq.png" /></figure><p>npm run build will make webpack perform its transformations.</p><p>npm run start will start a local server! npm run start will also give you the ability to change your app and see the changes automatically, without having to restart the server for each new change.</p><h3>Run a Local React App</h3><p>Inside of your root directory, create a new directory named app. Create two new files inside of app: <strong>app/index.js</strong> and <strong>app/index.html</strong>.</p><p>In <strong>app/index.html</strong>, copy the following code:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/297/0*iPiUdmgY7B6WnGJb.png" /></figure><p>In <strong>app/index.js</strong>, copy the following code:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/296/0*IRtXlo0gT4ofJZJN.png" /></figure><p>Inside of the app folder, create a new folder named components. Create a new file inside of app/components named <strong>app/components/App.js</strong>.</p><p>In <strong>app/components/App.js</strong>, write a component class. This component class can render whatever you want. Don’t forget to require React at the top of the file, and to set module.exports equal to your component class at the bottom of the file.</p><p>In the terminal, type:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/0*lbnjQEy5r8RqnpVN.png" /></figure><p>Check for a newly created build folder inside of your root directory. The build folder should contain new <em>html</em> and <em>js</em> files: <strong>build/index.html</strong> and <strong>build/transformed.js</strong>.</p><p>In the terminal, type:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/0*FNaxsWFtLZnIhqpZ.png" /></figure><p>Open a new browser tab and navigate to http://localhost:8080. See your React component shining gloriously in the sun.</p><p>In <strong>app/components/App.js</strong>, make a change to your component class’s render function. Refresh the browser tab and see your change appear on the screen!</p><h3>The Condensed Version</h3><p>That seems like an enormous amount of work to get a simple app up and running!</p><p>Perhaps it was, but that was in large part due to the fact that we slowly explained every step. Executing the steps by rote is much faster.</p><p>Here’s a condensed version of how to get a React app up and running:</p><p>In the terminal, create a new directory. cd into that directory.</p><p>Type the following command-line scripts:</p><ul><li>npm init</li><li>npm i -S {react,react-dom}</li><li>npm i -D babel-{core,loader} babel-preset-react</li><li>npm i -D webpack webpack-dev-server html-webpack-plugin</li></ul><p>In your root directory, create a file named <strong>.babelrc</strong>. Write this inside:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/352/0*vIb1i--KILeHxqZy.png" /></figure><p>In your root directory, create another file named <strong>webpack.config.js</strong>. Write (or copy) this inside:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/350/0*6kg4xFYXuS1ozjdJ.png" /></figure><p>In <strong>package.json</strong>, replace the scripts object with this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/296/0*gBdSMhptDK1D5wDu.png" /></figure><p>Create a directory inside of your root directory named app, and another directory inside of app named app/components.</p><p>Create three new files: <strong>app/index.js</strong>, <strong>app/index.html</strong>, and <strong>app/components/App.js</strong>.</p><p>Copy the code from “Run a Local React App” into <strong>app/index.js</strong> and <strong>app/index.html</strong>. Make <strong>app/components/App.js</strong> the outermost component class of your new app.</p><p>In the terminal, type these two commands:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/0*bRq4z5IadRHvqxgZ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/0*WVO1e6hdW-rfzstf.png" /></figure><p>Enjoy programming in React!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=912f9a551af3" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[A profound substance]]></title>
            <link>https://medium.com/@ctrlaltvikas/a-profound-substance-f0d86bc44f57?source=rss-c21fff2ab233------2</link>
            <guid isPermaLink="false">https://medium.com/p/f0d86bc44f57</guid>
            <dc:creator><![CDATA[Vikas Yadav]]></dc:creator>
            <pubDate>Thu, 09 Feb 2017 18:55:58 GMT</pubDate>
            <atom:updated>2017-02-09T18:55:58.708Z</atom:updated>
            <content:encoded><![CDATA[<p>You are going to ask where are the banana?<br> And the angellic stars in the sky<br> And the drizzle aquatic splattering its smooth stones and prosecuting them full of!<br> sunburst orange seams above a difficult moon<br> We open the halves of a curiosities and the?<br> Congealing of stains grows into the parenthetical vicinity!<br> I saw how cathedrals are entertained<br> by the incredulous nature<br> from her shoulder and her eyelids flow<br> bird feathers of the earth<br> nothing but that movie of alcoves<br> a finger and a hips<br> divulging the area<br> like the shaken aluminum of acrobats.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f0d86bc44f57" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Everyday you begin]]></title>
            <link>https://medium.com/@ctrlaltvikas/everyday-you-begin-6b27b3e05e38?source=rss-c21fff2ab233------2</link>
            <guid isPermaLink="false">https://medium.com/p/6b27b3e05e38</guid>
            <category><![CDATA[love]]></category>
            <category><![CDATA[optimism]]></category>
            <category><![CDATA[poem]]></category>
            <category><![CDATA[poetry-on-medium]]></category>
            <dc:creator><![CDATA[Vikas Yadav]]></dc:creator>
            <pubDate>Thu, 09 Feb 2017 13:44:18 GMT</pubDate>
            <atom:updated>2017-02-09T13:44:18.710Z</atom:updated>
            <content:encoded><![CDATA[<p>Be guided by the somber perfume’s time<br>and so that its wounded soldiers will abduct your brain<br>I do not penetrate in the region of banal oblivion<br>as if to filter or enchant or faint<br>of a red daughter that dedicates trees<br>my heart is filled with love like a paper-mache law.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6b27b3e05e38" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The funny things of the moonlight evening]]></title>
            <link>https://medium.com/@ctrlaltvikas/the-funny-things-of-the-moonlight-evening-3835453ca9a2?source=rss-c21fff2ab233------2</link>
            <guid isPermaLink="false">https://medium.com/p/3835453ca9a2</guid>
            <category><![CDATA[poem]]></category>
            <category><![CDATA[poetry-on-medium]]></category>
            <category><![CDATA[the-poetry-section]]></category>
            <category><![CDATA[poetry]]></category>
            <dc:creator><![CDATA[Vikas Yadav]]></dc:creator>
            <pubDate>Thu, 09 Feb 2017 09:09:31 GMT</pubDate>
            <atom:updated>2017-02-09T09:09:31.561Z</atom:updated>
            <content:encoded><![CDATA[<p>It was the night of the bird<br> of your silvery ripple when you hold out your finger<br> It was the twilight of the iguana<br> went protected in fountain<br> my heart moves from being fluidic to being warm.</p><p>I was without doubt the mother pheasant<br> there in the infinite night<br> when it looked me with its infinite ship eyes:<br> it had neither nose nor feet<br> but silk candles on its sides<br> the verdure film that forms in your salt<br> around the aquatic poppy, many fleeting flower heads<br> all hooves become keys?<br> With its incredulous promise,<br> and you rustled in the felicity<br> and enchanted a lighting angel.</p><p>Enjoy the many self-assured<br> attempts to stand?<br> Of a crimson giant that grows grapes<br> and rivers and waves.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3835453ca9a2" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>