<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: nitiwit</title>
    <description>The latest articles on DEV Community by nitiwit (@nitwit).</description>
    <link>https://dev.to/nitwit</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F192825%2F1d832dec-856c-4ef7-896e-d807a79f8290.png</url>
      <title>DEV Community: nitiwit</title>
      <link>https://dev.to/nitwit</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nitwit"/>
    <language>en</language>
    <item>
      <title>making nano usable</title>
      <dc:creator>nitiwit</dc:creator>
      <pubDate>Wed, 31 Jul 2024 09:40:24 +0000</pubDate>
      <link>https://dev.to/nitwit/making-nano-usable-kio</link>
      <guid>https://dev.to/nitwit/making-nano-usable-kio</guid>
      <description>&lt;p&gt;&lt;code&gt;nano&lt;/code&gt; has always been my favorite. it's not too fancy to be annoying and huge, so you can comfortably run it on servers. it's not too low-level so there's not a very steep learning curve (comparing to &lt;code&gt;vi/m&lt;/code&gt;).&lt;br&gt;
it's often pre-installed on servers too so it doesn't need installation, just write &lt;code&gt;nano&lt;/code&gt; into the command line and there you go.&lt;/p&gt;

&lt;p&gt;However, it's still kind of hard to work with, and get around, since it's a cli program nonetheless. some of the troubles I find myself struggling with when working with &lt;code&gt;nano&lt;/code&gt; are (could be terminal related, or nano related):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;word-wrap: I paste a long line and I see 4 characters and it takes me several seconds to have an idea about what's happened &lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fno8j0f6sbfa7ipd7h0kd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fno8j0f6sbfa7ipd7h0kd.png" alt="Image description" width="251" height="72"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;no line numbers: a disadvantage for obvious reasons&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;weird shortcuts: &lt;code&gt;ctrl+k&lt;/code&gt; cuts a line, &lt;code&gt;ctrl+u&lt;/code&gt; pastes it, &lt;code&gt;alt+delete&lt;/code&gt; removes the line. not very common shortcuts, for me at least.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;does not ask for password on save: you need to remember and &lt;code&gt;sudo nano&lt;/code&gt; the file when opening it. if you only &lt;code&gt;nano&lt;/code&gt;, it won't ask you for a password before writing. it simply prompts that it's a protected file and you can't save your edits. in these cases, I just copy what I've written, paste it elsewhere, &lt;code&gt;sudo nano&lt;/code&gt;, paste and then save. pretty annoying.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;On the other hand, as mentioned before, it's very handy, versatile and fun to work with as well. so it's worth to take the extra mile and modify it based on my daily use.&lt;/p&gt;

&lt;p&gt;two of the most useful "fixes" that I use are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;/&lt;/code&gt; and enter a number: go to line&lt;/li&gt;
&lt;li&gt;easy to use text replace (&lt;code&gt;ctrl+h&lt;/code&gt; in vscode/etc.): &lt;code&gt;ctrl+/&lt;/code&gt; and enter a text to replace. enter the replacement text, and nano shows you the occurrences and confirm whichever you like to replace.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;esc+shift+4&lt;/code&gt; toggles soft-wrapping (google if you don't what it is. nano supports two types of wrapping.)
3.1. toggle hard-wrap with &lt;code&gt;esc+l&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;alt+shit+3&lt;/code&gt; to toggle line numbers&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;you can also start &lt;code&gt;nano&lt;/code&gt; with various options to have features on or off. for example &lt;code&gt;nano -Y&lt;/code&gt; enables syntax highlighting or &lt;code&gt;nano -T&lt;/code&gt; sets the tab size. read more &lt;a href="https://ioflood.com/blog/nano-linux-command/" rel="noopener noreferrer"&gt;here&lt;/a&gt; or just &lt;code&gt;man nano&lt;/code&gt; to check them out.&lt;/p&gt;

&lt;p&gt;finally you can write you own &lt;code&gt;~/.nanorc&lt;/code&gt; and write you desired customizations there. options like &lt;code&gt;set linenumbers&lt;/code&gt; and &lt;code&gt;set autoindent&lt;/code&gt; are available. check out &lt;a href="https://timnash.co.uk/customising-nano-productivity-friday/" rel="noopener noreferrer"&gt;this article&lt;/a&gt; for more&lt;/p&gt;

&lt;p&gt;reminds one of &lt;code&gt;vi&lt;/code&gt;'s command-mode, huh...&lt;/p&gt;

</description>
      <category>ubuntu</category>
      <category>cli</category>
    </item>
    <item>
      <title>[linux] list processes using a file</title>
      <dc:creator>nitiwit</dc:creator>
      <pubDate>Wed, 31 Jul 2024 07:59:14 +0000</pubDate>
      <link>https://dev.to/nitwit/linux-list-processes-using-a-file-18dl</link>
      <guid>https://dev.to/nitwit/linux-list-processes-using-a-file-18dl</guid>
      <description>&lt;p&gt;processes use files and directories. you might need to know which process is using a file because it's locked the file/dir and you can't modify it, so you'll have to kill the process and edit your file. at least this was my case.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;lsof +D &amp;lt;path&amp;gt;&lt;/code&gt;&lt;br&gt;
e.g.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;lsof +D /var/log
COMMAND      PID   USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
systemd-j    539   root  mem    REG  253,0  8388608 3672301 /var/log/journal/ed214fcf933346b68d6hh6f76a18d552/user-1000.journal
systemd-j    539   root  mem    REG  253,0 58720256 3670236 /var/log/journal/ed214fcf933346b68d6hh6f76a18d552/system.journal
systemd-j    539   root  mem    REG  253,0  8388608 3670937 /var/log/journal/ed214fcf933346b68d6hh6f76a18d552/user-1000@4f8a576fe5f642e1a7f84f8f18d31870-0000000000000d26-00061de5aff72efd.journal
systemd-j    539   root   32u   REG  253,0 58720256 3670236 /var/log/journal/ed214fcf933346b68d6hh6f76a18d552/system.journal
systemd-j    539   root   38u   REG  253,0  8388608 3672301 /var/log/journal/ed214fcf933346b68d6hh6f76a18d552/user-1000.journal
vmtoolsd     818   root    3w   REG  253,0     1969 3670068 /var/log/vmware-vmsvc-root.log
rsyslogd     868 syslog    7w   REG  253,0 15700152 3671420 /var/log/syslog
rsyslogd     868 syslog    8w   REG  253,0  3626629 3671459 /var/log/kern.log
rsyslogd     868 syslog    9w   REG  253,0   253306 3671524 /var/log/auth.log
unattende    944   root    3w   REG  253,0        0 3692387 /var/log/unattended-upgrades/unattended-upgrades-shutdown.log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you can see the file name, process command and PID, and the user that has started the process. from here you can use &lt;code&gt;top&lt;/code&gt; (or alternatives, &lt;code&gt;htop&lt;/code&gt; etc.) to move on and inspect what's going on.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
      <category>permissions</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>[linux] list files that contain a word</title>
      <dc:creator>nitiwit</dc:creator>
      <pubDate>Tue, 30 Jul 2024 10:56:01 +0000</pubDate>
      <link>https://dev.to/nitwit/list-files-that-contain-a-word-pk5</link>
      <guid>https://dev.to/nitwit/list-files-that-contain-a-word-pk5</guid>
      <description>&lt;p&gt;TL;DR use &lt;code&gt;grep -rG &amp;lt;word&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;searches for all files recursively in the current directory for files that include &lt;code&gt;&amp;lt;word&amp;gt;&lt;/code&gt; inside them&lt;/p&gt;




&lt;p&gt;example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Use Markdown to write and format posts."&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; tmp.txt
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;tmp.txt 
Use Markdown to write and format posts.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-rH&lt;/span&gt; &lt;span class="s2"&gt;"Markdown"&lt;/span&gt;
tmp.txt:Use Markdown to write and format posts.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;this is naturally case-sensitive. to ignore cases, add the &lt;code&gt;-i&lt;/code&gt; option:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-riH&lt;/span&gt; &lt;span class="s2"&gt;"markdown"&lt;/span&gt;
tmp.txt:Use Markdown to write and format posts.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;⚠ Beware&lt;br&gt;&lt;br&gt;
when using this command is large directories (with numerous files and sub-directories), beware of getting text-walled. you might see too many results.&lt;br&gt;&lt;br&gt;
therefore it's recommended to limit your search queries to smaller range of directories/words.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>linux</category>
      <category>grep</category>
      <category>todayisearched</category>
    </item>
    <item>
      <title>[firefox] show tabs in full-screen mode</title>
      <dc:creator>nitiwit</dc:creator>
      <pubDate>Tue, 30 Jul 2024 07:57:35 +0000</pubDate>
      <link>https://dev.to/nitwit/firefox-show-tabs-in-full-screen-mode-jo6</link>
      <guid>https://dev.to/nitwit/firefox-show-tabs-in-full-screen-mode-jo6</guid>
      <description>&lt;p&gt;I often use my apps on full-screen mode, since there are many distraction that I don't "often" use or need to click on (including taskbar, time, search-bar, icons, etc.)&lt;/p&gt;

&lt;p&gt;However in Firefox I usually have several (if not more) tabs open, and I find myself needing to transit among them too. right now I have 8 + 6 pinned tab :) )&lt;br&gt;
the default behavior is a smooth animation where you move the cursor to the top of the screen and the tabs(-bar?) collapses down. this is rather slow and requires an extra gesture or two for me, making it annoying to get around&lt;/p&gt;

&lt;p&gt;To always show the tabs in full-screen mode, open &lt;code&gt;about:config&lt;/code&gt; in Firefox, search for &lt;code&gt;browser.fullscreen.autohide&lt;/code&gt;, and set it to false. there, now you can press &lt;code&gt;F11&lt;/code&gt; to enter full-screen mode while having your tabs visible.&lt;/p&gt;




&lt;p&gt;credits to &lt;code&gt;Happy112&lt;/code&gt; from Mozilla forums | &lt;a href="https://support.mozilla.org/en-US/questions/1168777" rel="noopener noreferrer"&gt;link&lt;/a&gt;&lt;/p&gt;

</description>
      <category>desktop</category>
      <category>firefox</category>
      <category>productivity</category>
    </item>
    <item>
      <title>[python] defaultdict</title>
      <dc:creator>nitiwit</dc:creator>
      <pubDate>Sun, 21 Jul 2024 07:05:57 +0000</pubDate>
      <link>https://dev.to/nitwit/python-defaultdict-1ndg</link>
      <guid>https://dev.to/nitwit/python-defaultdict-1ndg</guid>
      <description>&lt;p&gt;normal &lt;code&gt;dict&lt;/code&gt; raises &lt;code&gt;Keyerror&lt;/code&gt; after querying keys that don't exist&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;collections&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;defaultdict&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;my_dict&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;one&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;two&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;my_dict&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;three&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="nc"&gt;Traceback &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;most&lt;/span&gt; &lt;span class="n"&gt;recent&lt;/span&gt; &lt;span class="n"&gt;call&lt;/span&gt; &lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  &lt;span class="n"&gt;File&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;stdin&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nb"&gt;KeyError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;three&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;but by using a &lt;code&gt;lamda&lt;/code&gt; in a &lt;code&gt;deafultdict&lt;/code&gt; we can set default values for undefined keys&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# create a default dict, from a dict
&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;my_def_dict&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;defaultdict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;my_dict&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;my_def_dict&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;zero&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="c1"&gt;# create an empty default dict
&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;empty_def_dict&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;defaultdict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# add key-value pairs here
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>python</category>
    </item>
    <item>
      <title>[python] count words in a text</title>
      <dc:creator>nitiwit</dc:creator>
      <pubDate>Sun, 21 Jul 2024 06:59:47 +0000</pubDate>
      <link>https://dev.to/nitwit/python-count-words-in-a-text-3k8d</link>
      <guid>https://dev.to/nitwit/python-count-words-in-a-text-3k8d</guid>
      <description>&lt;p&gt;I recently discovered a one-liner to count the words from a text in python:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Tags help people find your post - think of them as the topics or categories that best describe your post.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;collections&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Counter&lt;/span&gt;

&lt;span class="n"&gt;words&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Counter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;#19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to put it more accurately, this counts the number of spaces (&lt;code&gt;" "&lt;/code&gt;) in a text.&lt;/p&gt;

&lt;p&gt;moreover, &lt;code&gt;Counter&lt;/code&gt; is a python &lt;code&gt;mapping&lt;/code&gt; that creates a &lt;code&gt;dict&lt;/code&gt; in which keys are every unique letter from a text, and the corresponding values are the number of occurrences of that letter.&lt;/p&gt;

&lt;p&gt;a &lt;code&gt;mapping&lt;/code&gt; is an iterable container with a fixed length. this means three things (accordingly):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;you can loop through its items&lt;/li&gt;
&lt;li&gt;you can check existence of an item using &lt;code&gt;in&lt;/code&gt; keyword (e.g., &lt;code&gt;"x" in words&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;len(words)&lt;/code&gt; returns an integer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;in other words, it comes with these dunder methods (again, accordingly):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;__getitem__()&lt;/code&gt;: can access item using &lt;code&gt;dct["key"]&lt;/code&gt; notation&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;__iter__()&lt;/code&gt;: return an iterator object to be used in a &lt;code&gt;for&lt;/code&gt; loop&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;__len__()&lt;/code&gt;: defines the behavior of &lt;code&gt;len()&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>python</category>
    </item>
  </channel>
</rss>
