<?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[TarkaLabs TIL - Medium]]></title>
        <description><![CDATA[Tarka Labs is a team of passionate hackers, designers and product managers. We believe in experimental methods to identify the best solutions to problems instead of working on technology du jour. (https://tarkalabs.com/) - Medium]]></description>
        <link>https://medium.com/tarkalabs-til?source=rss----df2cb4c81531---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>TarkaLabs TIL - Medium</title>
            <link>https://medium.com/tarkalabs-til?source=rss----df2cb4c81531---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Tue, 19 May 2026 12:22:48 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/tarkalabs-til" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Cropping a Screenshot Captured with a Chrome Extension]]></title>
            <link>https://medium.com/tarkalabs-til/cropping-a-screenshot-captured-with-a-chrome-extension-a52ac9816d10?source=rss----df2cb4c81531---4</link>
            <guid isPermaLink="false">https://medium.com/p/a52ac9816d10</guid>
            <category><![CDATA[screenshots]]></category>
            <category><![CDATA[browser-extension]]></category>
            <dc:creator><![CDATA[Samuel Beaulieu]]></dc:creator>
            <pubDate>Thu, 20 Apr 2023 15:49:40 GMT</pubDate>
            <atom:updated>2023-04-20T15:49:40.334Z</atom:updated>
            <content:encoded><![CDATA[<p>There are many reasons why cropping a screenshot is a valuable feature. You may want to remove unwanted screenshot sections or fit them into a specific format. You can get screenshots through the tabs.captureVisibleTab() method available through browser APIs.</p><p>If you have experience with Firefox extensions, you might know that you can accomplish this task with the following background script and content script:</p><pre>//Background script<br><br>browser.runtime.onMessage.addListener(function (request, sender, sendResponse) {<br>  if (request.msg === &quot;capture_tab&quot;) {<br>    var tabId<br>    chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {<br>      tabId = tabs[0].id<br>    })<br><br>    browser.tabs.captureVisibleTab(<br>      tabId,<br>      { format: &quot;png&quot;, quality: 100, rect: request.rect },<br>      function (dataUrl) {<br>        sendResponse({ imgSrc: dataUrl })<br>      }<br>    )<br>    return true<br>  }<br>})</pre><pre>//Content script<br>//Define a rect based on the desired left, top, width, and height<br>const rect = {x: 0, y: 0, width: 100, height: 100};<br><br>browser.runtime.sendMessage(<br>      {<br>        msg: &quot;capture_tab&quot;<br>        rect: rect<br>      },<br>      function (response) {<br>        //response.imgSrc is your cropped image as a data URL<br>        }<br>      }<br>    )</pre><p>However, unlike Firefox, Chrome’s version of the method does not support passing in a rectangle specifying the area to capture. Therefore, a few more steps are required to achieve the desired result.</p><p>As always, you need your desired rectangle’s width, height, left coordinate, and top coordinate. These variables will likely be obtained in a content script. Since content scripts cannot call captureVisibleTab(), send a message to the background service worker. This time, there is no point in sending the rectangle dimensions to the background script.</p><pre>//Background script<br><br>chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {<br>  if (request.msg === &quot;capture_tab&quot;) {<br>    var tabId<br>    chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {<br>      tabId = tabs[0].id<br>    })<br><br>    chrome.tabs.captureVisibleTab(<br>      tabId,<br>      { format: &quot;png&quot;, quality: 100 },<br>      function (dataUrl) {<br>        sendResponse({ imgSrc: dataUrl })<br>      }<br>    )<br>    return true<br>  }<br>})</pre><p>Once the service worker has captured the screenshot and sent it back to the content script as a data URL, create an Image object and give it said URL as a source. Once the image has loaded, create a canvas, get the canvas context, and use the context method drawImage() to crop the picture with your rectangle’s dimensions and coordinates.</p><pre>//Content script<br>//Define and assign left, top, width, and height<br><br>chrome.runtime.sendMessage(<br>      {<br>        msg: &quot;capture_tab&quot;<br>      },<br>      function (response) {<br>        const image = new Image()<br>        image.src = response.imgSrc<br>        image.onload = function () {<br>          const canvas = document.createElement(&quot;canvas&quot;)<br>          const scale = window.devicePixelRatio<br><br>          canvas.width = width * scale<br>          canvas.height = height * scale<br>          const ctx = canvas.getContext(&quot;2d&quot;)<br><br>          ctx.drawImage(<br>            image,<br>            left * scale,<br>            top * scale,<br>            width * scale,<br>            height * scale,<br>            0,<br>            0,<br>            width * scale,<br>            height * scale<br>          )<br><br>          const croppedImage = canvas.toDataURL()<br>          //Do stuff with your cropped image<br>        }<br>      }<br>    )</pre><p>Note that scaling is applied based on the device’s pixel ratio. captureVisibleTab() will generate a screenshot multiplied by this ratio, so your cropped image may not match your intentions if you do not account for it.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a52ac9816d10" width="1" height="1" alt=""><hr><p><a href="https://medium.com/tarkalabs-til/cropping-a-screenshot-captured-with-a-chrome-extension-a52ac9816d10">Cropping a Screenshot Captured with a Chrome Extension</a> was originally published in <a href="https://medium.com/tarkalabs-til">TarkaLabs TIL</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Quick way to get SLOC]]></title>
            <link>https://medium.com/tarkalabs-til/quick-way-to-get-sloc-232ad86249e4?source=rss----df2cb4c81531---4</link>
            <guid isPermaLink="false">https://medium.com/p/232ad86249e4</guid>
            <category><![CDATA[bash]]></category>
            <category><![CDATA[sloc]]></category>
            <category><![CDATA[shell]]></category>
            <category><![CDATA[zsh]]></category>
            <dc:creator><![CDATA[Dhruva Sagar]]></dc:creator>
            <pubDate>Tue, 24 Jan 2023 14:11:33 GMT</pubDate>
            <atom:updated>2023-01-24T14:15:08.493Z</atom:updated>
            <content:encoded><![CDATA[<blockquote><strong>Source lines of code</strong> (<strong>SLOC</strong>), also known as <strong>lines of code</strong> (<strong>LOC</strong>), is a <a href="https://en.wikipedia.org/wiki/Software_metric">software metric</a> used to measure the size of a <a href="https://en.wikipedia.org/wiki/Computer_program">computer program</a> by counting the number of lines in the text of the program’s <a href="https://en.wikipedia.org/wiki/Source_code">source code</a>. SLOC is typically used to predict the amount of effort that will be required to develop a program, as well as to estimate <a href="https://en.wikipedia.org/wiki/Programming_productivity">programming productivity</a> or <a href="https://en.wikipedia.org/wiki/Maintainability">maintainability</a> once the software is produced.</blockquote><p>Add this function to your favorite shell config file ~/.zshrc or ~/.bashrc</p><pre>sloc () {<br>  git ls-files | grep &quot;$1&quot; | grep -v grep | xargs wc -l<br>}</pre><p>This depends on git , grep, wc and xargs which are pre-installed in most linux distributions as well as mac osx.</p><p>This is what this looks like :</p><pre>h4x0rdud3@h4x0rdud3 in ~/dotfiles/vim/pack/packup/start/vim-zoom on master ✔<br>λ sloc<br>  79 README.md<br>  72 autoload/zoom.vim<br>  94 doc/zoom.txt<br>  16 plugin/zoom.vim<br> 261 total</pre><p>If you wanted to get SLOC for a specific file type, just add the file extension as an argument to sloc, for example sloc vim gives you :</p><pre>h4x0rdud3@h4x0rdud3 in ~/dotfiles/vim/pack/packup/start/vim-zoom on master ✔<br>λ sloc vim<br>  72 autoload/zoom.vim<br>  16 plugin/zoom.vim<br>  88 total</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=232ad86249e4" width="1" height="1" alt=""><hr><p><a href="https://medium.com/tarkalabs-til/quick-way-to-get-sloc-232ad86249e4">Quick way to get SLOC</a> was originally published in <a href="https://medium.com/tarkalabs-til">TarkaLabs TIL</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Deserializing Objects with Unknown Fields in Rust]]></title>
            <link>https://medium.com/tarkalabs-til/deserializing-objects-with-unknown-fields-in-rust-8e27bf80d730?source=rss----df2cb4c81531---4</link>
            <guid isPermaLink="false">https://medium.com/p/8e27bf80d730</guid>
            <category><![CDATA[rust-programming-language]]></category>
            <category><![CDATA[tips-and-tricks]]></category>
            <category><![CDATA[deserialization]]></category>
            <category><![CDATA[rust]]></category>
            <category><![CDATA[objects]]></category>
            <dc:creator><![CDATA[Samuel Beaulieu]]></dc:creator>
            <pubDate>Tue, 09 Aug 2022 14:01:51 GMT</pubDate>
            <atom:updated>2022-08-09T14:01:51.549Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/256/1*RR4aGYvCkj8s_g79Aeul9g.png" /><figcaption>Dall-E mini AI-Generated image from Huggingface.co</figcaption></figure><p>When deserializing objects, there are situations where we may not know the name(s) of one or more fields. For example, the Slack API’s response format is composed of an ok field, optional warning and error fields, and a field containing the requested data. The field for this data could be named after any of the Slack API objects, from profile to view. Here’s some examples of potential responses:<br><br>{&quot;ok&quot;: true, &quot;profile&quot;: {...}}<br>{&quot;ok&quot;: false, &quot;error&quot;: &quot;not_authed&quot;}<br>{&quot;ok&quot;: true, &quot;view&quot;: {...}}</p><h4>Optional Fields</h4><p>Since error only exists when ok is false, we can declare the type of error in our struct as Option&lt;String&gt;. Thus, the deserializer can add the value None to error if the request was successful and deserialize the error field if something went wrong.</p><h4>Distinct Fields</h4><p>For fields where we don’t know the name, but know the set of possibilities, we can use enums. Serde will use a match pattern and attempt each variant until it successfully deserializes the object.</p><pre>#[derive(Serialize, Deserialize)]<br>enum SlackResponse {<br>    ProfileResp { ok: bool, profile: Profile, error: Option&lt;String&gt; },<br>    ViewResp { ok: bool, view: View, error: Option&lt;String&gt; },<br>}</pre><p>If the number of variants expected is too great or the field names are random, HashMaps are another option. We can use the serde_json crate to turn any JSON object or any other object that could be interpreted as JSON into a HashMap&lt;String, Value&gt;. This way, it is possible to deserialize first and iterate through the HashMap to search for fields afterward.</p><pre>let map =  serde_json::from_slice::&lt;HashMap&lt;String, Value&gt;(&amp;bytes)?;<br>let profile = map.get(&quot;profile&quot;).unwrap();</pre><p>Using these methods, deserializing objects in Rust is quick and easy, regardless of the format.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8e27bf80d730" width="1" height="1" alt=""><hr><p><a href="https://medium.com/tarkalabs-til/deserializing-objects-with-unknown-fields-in-rust-8e27bf80d730">Deserializing Objects with Unknown Fields in Rust</a> was originally published in <a href="https://medium.com/tarkalabs-til">TarkaLabs TIL</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Using Large Multi-line Secrets in Github Actions]]></title>
            <link>https://medium.com/tarkalabs-til/using-large-multi-line-secrets-in-github-actions-74289ba4c796?source=rss----df2cb4c81531---4</link>
            <guid isPermaLink="false">https://medium.com/p/74289ba4c796</guid>
            <category><![CDATA[github-actions]]></category>
            <category><![CDATA[devops]]></category>
            <dc:creator><![CDATA[Dhruva Sagar]]></dc:creator>
            <pubDate>Mon, 30 May 2022 10:31:28 GMT</pubDate>
            <atom:updated>2022-05-30T09:22:46.112Z</atom:updated>
            <content:encoded><![CDATA[<blockquote>GitHub Actions makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub. Make code reviews, branch management, and issue triaging work the way you want.</blockquote><p>While working on one of our product’s deployment workflow, I realised maintaining separate secret varaiables for each environment wasn’t going to scale. To solve this issue, it felt natural to move the environment configuration from multiple secrets to a single secret to be used as a large multiline env file.</p><p>However, a large multiline value gave me issues due to github automatically wrapping long lines. Notice how sometimes solving one issue leads you to another ? Well, to solve this issue, I resorted to base64 encoding. We base64 encode the large secret value and within the github action workflow, we decode it before using the encoded value. Here’s how :</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/4da7d5df4f82b8425ff90c097a61b837/href">https://medium.com/media/4da7d5df4f82b8425ff90c097a61b837/href</a></iframe><p>And problem solved!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=74289ba4c796" width="1" height="1" alt=""><hr><p><a href="https://medium.com/tarkalabs-til/using-large-multi-line-secrets-in-github-actions-74289ba4c796">Using Large Multi-line Secrets in Github Actions</a> was originally published in <a href="https://medium.com/tarkalabs-til">TarkaLabs TIL</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Function Composition in Ruby]]></title>
            <link>https://medium.com/tarkalabs-til/function-composition-in-ruby-69e37cdc9b0?source=rss----df2cb4c81531---4</link>
            <guid isPermaLink="false">https://medium.com/p/69e37cdc9b0</guid>
            <category><![CDATA[ruby]]></category>
            <category><![CDATA[coding]]></category>
            <category><![CDATA[today-i-learned]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[functional-programming]]></category>
            <dc:creator><![CDATA[Sreedev Kodichath]]></dc:creator>
            <pubDate>Mon, 07 Feb 2022 05:20:46 GMT</pubDate>
            <atom:updated>2022-02-07T05:20:46.120Z</atom:updated>
            <content:encoded><![CDATA[<p>I was going through some functional programming content &amp; I came across a Wikipedia article on Function Composition. I was surprised to learn that Ruby has special operators for function composition. This is the recommended way to compose procs/functions in Ruby 2.6</p><pre>f = proc{|x| x + 2}<br>g = proc{|x| x * 3}<br>(f &lt;&lt; g).call(3) # -&gt; 11; identical to f(g(3))<br>(f &gt;&gt; g).call(3) # -&gt; 15; identical to g(f(3))</pre><p>I’ve been using Ruby for a long time and to this day, I run into such surprises now &amp; then.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=69e37cdc9b0" width="1" height="1" alt=""><hr><p><a href="https://medium.com/tarkalabs-til/function-composition-in-ruby-69e37cdc9b0">Function Composition in Ruby</a> was originally published in <a href="https://medium.com/tarkalabs-til">TarkaLabs TIL</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Fetching a Single File From Git Stash]]></title>
            <link>https://medium.com/tarkalabs-til/fetching-a-single-file-from-git-stash-db632ed5b7fb?source=rss----df2cb4c81531---4</link>
            <guid isPermaLink="false">https://medium.com/p/db632ed5b7fb</guid>
            <category><![CDATA[git]]></category>
            <category><![CDATA[vc]]></category>
            <category><![CDATA[stash]]></category>
            <category><![CDATA[checkout]]></category>
            <dc:creator><![CDATA[Sreedev Kodichath]]></dc:creator>
            <pubDate>Wed, 03 Jun 2020 05:08:56 GMT</pubDate>
            <atom:updated>2020-06-03T05:08:56.086Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2oCm-9dd7qost2WsPvFyCA.jpeg" /></figure><p>A lot of times when jumping across branches on your Git repository, you’ll come across situations where you need to un-stash a single file from your stashes. Though there is no specific command to achieve this, there are workarounds that can be used to achieve this behavior in Git.</p><h3>Checking Out a Single File From The Stash</h3><p>This method will checkout the file from the stash into your working branch. Ensure that there are no local uncommitted changes on the existing file that you do not wish to lose before using this method as it will restore the version of the file as of the time when the stash was performed.</p><p>git checkout stash@{0} -- &lt;filename&gt;</p><h3>Creating a Copy of a Stashed File Under a Different Filename</h3><p>This is a non-destructive method that will let you recreate the file in the stash into the working branch under a new filename.</p><p>git show stash@{0}:stashed_file.rb &gt; copy_of_stashed_file.rb</p><p>The stash tool can be used in conjunction with other git features to achieve desired outcomes. I would recommend checking out Atlassian’s documentation on Git Stashing: <br><a href="https://www.atlassian.com/git/tutorials/saving-changes/git-stash">https://www.atlassian.com/git/tutorials/saving-changes/git-stash</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=db632ed5b7fb" width="1" height="1" alt=""><hr><p><a href="https://medium.com/tarkalabs-til/fetching-a-single-file-from-git-stash-db632ed5b7fb">Fetching a Single File From Git Stash</a> was originally published in <a href="https://medium.com/tarkalabs-til">TarkaLabs TIL</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Removing Accented Characters From Strings in Rails]]></title>
            <link>https://medium.com/tarkalabs-til/removing-accented-characters-from-strings-in-rails-1be55cd1a739?source=rss----df2cb4c81531---4</link>
            <guid isPermaLink="false">https://medium.com/p/1be55cd1a739</guid>
            <category><![CDATA[diacritics]]></category>
            <category><![CDATA[ascii]]></category>
            <category><![CDATA[ruby-on-rails]]></category>
            <category><![CDATA[utf-8]]></category>
            <category><![CDATA[accented]]></category>
            <dc:creator><![CDATA[Sreedev Kodichath]]></dc:creator>
            <pubDate>Thu, 28 May 2020 14:28:59 GMT</pubDate>
            <atom:updated>2020-05-28T14:28:59.387Z</atom:updated>
            <content:encoded><![CDATA[<h3>Removing Accented (Diacritic) Characters From Strings in Rails</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/492/1*fjvGV_a9kt65AP23C1Uuvg.png" /></figure><p>If you have a huge list of text records with accented characters and want to get rid of the accented (diacritic) characters because you want to keep the data ASCII-only, Rails offers a simple method to get rid of accented characters without having to go through the pain of writing complex Regex matchers.</p><pre>I18n.transliterate &quot;São Paulo&quot;</pre><pre>=&gt; &quot;Sao Paulo&quot;</pre><p>As per the official documentation, the `transliterate` method replaces non-ASCII characters with an ASCII approximation.</p><pre>NOTE: In case, an ASCII Approximation for a non-ASCII character is not found, the character is replaced with a `?`.</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1be55cd1a739" width="1" height="1" alt=""><hr><p><a href="https://medium.com/tarkalabs-til/removing-accented-characters-from-strings-in-rails-1be55cd1a739">Removing Accented Characters From Strings in Rails</a> was originally published in <a href="https://medium.com/tarkalabs-til">TarkaLabs TIL</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Git orphan branches]]></title>
            <link>https://medium.com/tarkalabs-til/git-orphan-branches-450441a0b83e?source=rss----df2cb4c81531---4</link>
            <guid isPermaLink="false">https://medium.com/p/450441a0b83e</guid>
            <category><![CDATA[git]]></category>
            <category><![CDATA[tips-and-tricks]]></category>
            <dc:creator><![CDATA[Vinoth]]></dc:creator>
            <pubDate>Thu, 05 Dec 2019 15:19:35 GMT</pubDate>
            <atom:updated>2019-12-06T08:21:24.448Z</atom:updated>
            <content:encoded><![CDATA[<p>Recently I was looking to change the theme of my Jekyll hosted blog, and in Jekyll changing the theme is essentially pulling the new theme and replacing your existing _posts directory with the theme’s _posts<em> </em>directory.</p><p>For this I needed a way to replace everything in my repository except the _posts folder. Enter orphan branches.</p><p>Orphan branches creates a branch without any of the commit history but just the files from the source branch.</p><pre>git checkout --orphan branch-name</pre><p>Once done, all the existing files will be staged in git. After discarding all the changes and pulling the desired theme’s repo and checking out my existing _posts directory satisfied the requirement.</p><p>Orphan branches can also be used to erase the entire commit history of a git repository, simply checkout orphan and rename it to <em>master</em> (after deleting the original master branch).</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=450441a0b83e" width="1" height="1" alt=""><hr><p><a href="https://medium.com/tarkalabs-til/git-orphan-branches-450441a0b83e">Git orphan branches</a> was originally published in <a href="https://medium.com/tarkalabs-til">TarkaLabs TIL</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Quickly find the docker image startup command]]></title>
            <link>https://medium.com/tarkalabs-til/quickly-find-the-docker-image-startup-command-b2d46d97f29f?source=rss----df2cb4c81531---4</link>
            <guid isPermaLink="false">https://medium.com/p/b2d46d97f29f</guid>
            <category><![CDATA[docker]]></category>
            <dc:creator><![CDATA[Sudhakar Rayavaram]]></dc:creator>
            <pubDate>Sat, 13 Jul 2019 19:17:16 GMT</pubDate>
            <atom:updated>2019-07-13T19:17:16.337Z</atom:updated>
            <content:encoded><![CDATA[<p>If you quickly want to see what command any docker image actually runs when you start it, there is an easy way</p><blockquote>docker history --no-trunc &lt;image-name&gt;</blockquote><p>This will list all the contents of its Dockerfile along with layers information</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b2d46d97f29f" width="1" height="1" alt=""><hr><p><a href="https://medium.com/tarkalabs-til/quickly-find-the-docker-image-startup-command-b2d46d97f29f">Quickly find the docker image startup command</a> was originally published in <a href="https://medium.com/tarkalabs-til">TarkaLabs TIL</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Find the location of postgres data directory]]></title>
            <link>https://medium.com/tarkalabs-til/find-the-location-of-postgres-data-directory-f16825def3ec?source=rss----df2cb4c81531---4</link>
            <guid isPermaLink="false">https://medium.com/p/f16825def3ec</guid>
            <category><![CDATA[postgres]]></category>
            <dc:creator><![CDATA[Sudhakar Rayavaram]]></dc:creator>
            <pubDate>Sat, 01 Jun 2019 07:25:38 GMT</pubDate>
            <atom:updated>2019-06-01T07:25:38.826Z</atom:updated>
            <content:encoded><![CDATA[<h3>Find the location of Postgres data directory</h3><p>In Postgres, it is not easy to find the location of the data folder because it can be overridden in multiple configuration files and also can be passed as a parameter when starting postgres server</p><p>However, there is an easy way to find it out from postgres interactive terminal by running the following command</p><blockquote>show data_directory;</blockquote><blockquote>data_directory<br> — — — — — — — — — — <br> /var/lib/pgsql95/data<br>(1 row)</blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f16825def3ec" width="1" height="1" alt=""><hr><p><a href="https://medium.com/tarkalabs-til/find-the-location-of-postgres-data-directory-f16825def3ec">Find the location of postgres data directory</a> was originally published in <a href="https://medium.com/tarkalabs-til">TarkaLabs TIL</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>