Jekyll2024-01-26T00:22:12+00:00https://babakks.github.io/feed.xmlBabak K. Shandiz’s Blog✍️ Welcome! This is my professional blog on software development. Here, I'll put things I find interesting or good to know.
babakksOptimize Postgres Containers for Testing [RE#15]2024-01-26T00:00:00+00:002024-01-26T00:00:00+00:00https://babakks.github.io/article/2024/01/26/re#015-optimize-postgres-containers-for-testing<p>Recently, I had this task of transferring our tests from using in-memory SQLite instances to Postgres containers. It seemed a like a pretty straightforward set of changes, until I realized it’s not. I had to fix some random unexpected issues down the road. But the biggest (and to be fair, the most expected) one was the poor performance of the tests after fully migrating to Postgres.</p>
<p>Long story short, after some Internet search and reading documentations, I ended up getting a good performance (very close to what we had with SQLite) using the <code class="language-plaintext highlighter-rouge">docker-compose.yaml</code> configuration below:</p>
<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">services</span><span class="pi">:</span>
<span class="na">postgres</span><span class="pi">:</span>
<span class="na">image</span><span class="pi">:</span> <span class="s">postgres</span>
<span class="na">restart</span><span class="pi">:</span> <span class="s">always</span>
<span class="na">ports</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">5432:5432</span>
<span class="c1"># Remove the `tmpfs` key below, either:</span>
<span class="c1"># - If you don't want to lose the data after the container stops/restarts.</span>
<span class="c1"># - If the data can be too large for the memory.</span>
<span class="na">tmpfs</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">/var/lib/postgresql/data</span>
<span class="c1"># Since it's mainly used for testing purposes, it's okay to set fsync=off for</span>
<span class="c1"># improved performance.</span>
<span class="na">command</span><span class="pi">:</span> <span class="s">-c fsync=off -c full_page_writes=off</span>
</code></pre></div></div>
<p>The key points here are:</p>
<ul>
<li><strong>Using <code class="language-plaintext highlighter-rouge">tmpfs</code></strong>: With <a href="https://docs.docker.com/storage/tmpfs"><code class="language-plaintext highlighter-rouge">tmpfs</code> mounts</a>, you can utilize memory (RAM) as the underlying filesystem storage for specific paths. Here I’ve used it to store Postgres data. This, of course, means there’s no real persistence in-place, therefore you will lose the data if the container stops/restarts. Also, you have to be careful with the size of the data, in case it could get close to your memory limits.</li>
</ul>
<ul>
<li><strong>Applying <code class="language-plaintext highlighter-rouge">-c fsync=off -c full_page_writes=off</code></strong>: If you don’t disable the <a href="https://www.postgresql.org/docs/current/runtime-config-wal.html"><code class="language-plaintext highlighter-rouge">fsync</code> option</a>, Postgres makes sure that updates are physically written to disk, which could be a great performance hit. As of official documentations, if you turn <code class="language-plaintext highlighter-rouge">fsync</code> off, you should also consider disabling <code class="language-plaintext highlighter-rouge">full_page_writes</code>.</li>
</ul>
<hr />
<p><strong><em>About Regular Encounters</em></strong><br />
<em>I’ve decided to record my daily encounters with professional issues on a somewhat regular basis. Not all of them are equally important/unique/intricate, but are indeed practical, real, and of course,</em> <strong><em>textually minimal.</em></strong></p>babakksIf you're using Postgres containers for testing, you might already be annoyed by the performance, specially if you have a lot of tests that need to communicate with a real database. Here are some small tips to get a good performance.The Old Exhaustive List of Emojis and Contextual Keywords2023-02-02T11:00:00+00:002023-02-02T11:00:00+00:00https://babakks.github.io/article/2023/02/02/old-exhaustive-list-of-contextual-git-emojis<h2 id="history">History</h2>
<p>Prior to creating <a href="https://github.com/git-emoji">git-emoji</a> and the contextual emoji dataset, I have had curated and published this exhaustive list of emojis and contextual keywords. Now that the emoji dataset is more accurate and sound, I think it’s time to retire the old list, in favor of the new <a href="https://github.com/git-emoji/dataset-js"><code class="language-plaintext highlighter-rouge">ContextV2</code> dataset</a>. So, I have removed it from the <a href="/article/2020/07/03/emojis-in-git-commit-messages.html">main article</a> and keep it here for the record and possible references. If you haven’t seen the main article, I suggest you to have a look at it. 😉</p>
<p>Developers can still access this data through the <code class="language-plaintext highlighter-rouge">ContextV1</code> dataset within the <a href="https://github.com/git-emoji/dataset-js"><code class="language-plaintext highlighter-rouge">git-emoji/dataset-js</code></a>.</p>
<h2 id="emoji-rock-stars">Emoji rock stars</h2>
<p>🙏 Inspired by the curated <a href="https://gist.github.com/parmentf/035de27d6ed1dce0b36a">list</a> of <em>parmentf</em> on Github Gists.</p>
<table>
<thead>
<tr>
<th>Emojis</th>
<th>Example commit message(s)</th>
</tr>
</thead>
<tbody>
<tr>
<td>🎉 <code class="language-plaintext highlighter-rouge">:tada:</code></td>
<td><em>First commit</em></td>
</tr>
<tr>
<td>🔨 <code class="language-plaintext highlighter-rouge">:hammer:</code></td>
<td><em>Update code</em> <br /> <em>Improve code</em></td>
</tr>
<tr>
<td>📜 <code class="language-plaintext highlighter-rouge">:scroll:</code> <br /> ✏️ <code class="language-plaintext highlighter-rouge">:pencil:</code> <br /> 📚 <code class="language-plaintext highlighter-rouge">:books:</code> <br /> 📝 <code class="language-plaintext highlighter-rouge">:memo:</code> <br /> 📖 <code class="language-plaintext highlighter-rouge">:book:</code></td>
<td><em>Update README.md</em> <br /> <em>Add docs</em></td>
</tr>
<tr>
<td>👕 <code class="language-plaintext highlighter-rouge">:tshirt:</code> <br /> 👔 <code class="language-plaintext highlighter-rouge">:necktie:</code></td>
<td><em>Apply linter</em> <br /> <em>Format code</em></td>
</tr>
<tr>
<td>⚗️ <code class="language-plaintext highlighter-rouge">:alembic:</code> <br /> 🧪 <code class="language-plaintext highlighter-rouge">:test_tube:</code></td>
<td><em>Add tests</em> <br /> <em>Update unit tests</em></td>
</tr>
<tr>
<td>👶 <code class="language-plaintext highlighter-rouge">:baby:</code></td>
<td><em>Add basic implementation</em> <br /> <em>Add partial impl.</em></td>
</tr>
<tr>
<td>🏅 <code class="language-plaintext highlighter-rouge">:medal_sports:</code></td>
<td><em>Finish implementation</em></td>
</tr>
<tr>
<td>⤴️ <code class="language-plaintext highlighter-rouge">:arrow_heading_up:</code></td>
<td><em>Upgrade dependency</em> <br /> <em>Upgrade version</em></td>
</tr>
<tr>
<td>⤵️ <code class="language-plaintext highlighter-rouge">:arrow_heading_down:</code></td>
<td><em>Downgrade dependency</em> <br /> <em>Downgrade version</em></td>
</tr>
<tr>
<td>🎨 <code class="language-plaintext highlighter-rouge">:art:</code> <br /> 💅 <code class="language-plaintext highlighter-rouge">:nail_care:</code> <br /> 💄 <code class="language-plaintext highlighter-rouge">:lipstick:</code></td>
<td><em>Improve visuals</em> <br /> <em>Enhance UI/UX</em></td>
</tr>
<tr>
<td>♿️ <code class="language-plaintext highlighter-rouge">:wheelchair:</code></td>
<td><em>Improve accessibility features</em></td>
</tr>
<tr>
<td>✨ <code class="language-plaintext highlighter-rouge">:sparkles:</code> <br /> 🚿 <code class="language-plaintext highlighter-rouge">:shower:</code></td>
<td><em>Clean code</em></td>
</tr>
<tr>
<td>🔥 <code class="language-plaintext highlighter-rouge">:fire:</code> <br /> 🔫 <code class="language-plaintext highlighter-rouge">:gun:</code> <br /> ✂️ <code class="language-plaintext highlighter-rouge">:scissors:</code></td>
<td><em>Delete directory</em> <br /> <em>Remove unnecessary files</em></td>
</tr>
<tr>
<td>💩 <code class="language-plaintext highlighter-rouge">:poop:</code> <br /> 🍝 <code class="language-plaintext highlighter-rouge">:spaghetti:</code></td>
<td><em>Mess up legacy code</em> <br /> <em>Apply dirty patch</em></td>
</tr>
<tr>
<td>⚡️ <code class="language-plaintext highlighter-rouge">:zap:</code></td>
<td><em>Introduce breaking changes</em></td>
</tr>
<tr>
<td>🐛 <code class="language-plaintext highlighter-rouge">:bug:</code> <br /> 🐞 <code class="language-plaintext highlighter-rouge">:beetle:</code></td>
<td><em>Fix bug</em></td>
</tr>
<tr>
<td>🚧 <code class="language-plaintext highlighter-rouge">:construction:</code></td>
<td><em>Apply temporary patch</em> <br /> <em>Improve work in progress</em></td>
</tr>
<tr>
<td>🚑 <code class="language-plaintext highlighter-rouge">:ambulance:</code></td>
<td><em>Apply urgent fix</em> <br /> <em>Fix critical bug</em></td>
</tr>
<tr>
<td>🌙 <code class="language-plaintext highlighter-rouge">:crescent_moon:</code></td>
<td><em>Update nightly builds config</em> <br /> <em>Create background jobs</em></td>
</tr>
<tr>
<td>🐰 <code class="language-plaintext highlighter-rouge">:rabbit:</code></td>
<td><em>Add RabbitMQ requirements</em></td>
</tr>
<tr>
<td>🐋 <code class="language-plaintext highlighter-rouge">:whale:</code></td>
<td><em>Add Dockerfile</em> <br /> <em>Update docker-compose</em></td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">:octocat:</code></td>
<td><em>Add .github dir</em> (only on <code class="language-plaintext highlighter-rouge">github.com</code>)</td>
</tr>
<tr>
<td>🦊 <code class="language-plaintext highlighter-rouge">:fox_face:</code></td>
<td><em>Add .gitlab dir</em> <br /> <em>Update .gitlab-ci.yml</em></td>
</tr>
<tr>
<td>🎁 <code class="language-plaintext highlighter-rouge">:gift:</code> <br /> 📦 <code class="language-plaintext highlighter-rouge">:package:</code></td>
<td><em>Add new dependencies</em> <br /> <em>Add new feature</em></td>
</tr>
<tr>
<td>🔔 <code class="language-plaintext highlighter-rouge">:bell:</code></td>
<td><em>Add alarm/warning</em></td>
</tr>
<tr>
<td>🔕 <code class="language-plaintext highlighter-rouge">:no_bell:</code> <br /> 🔇 <code class="language-plaintext highlighter-rouge">:mute:</code></td>
<td><em>Silence alarms/warnings</em></td>
</tr>
<tr>
<td>🔐 <code class="language-plaintext highlighter-rouge">:closed_lock_with_key:</code> <br /> 🔒 <code class="language-plaintext highlighter-rouge">:lock:</code> <br /> 🛡 <code class="language-plaintext highlighter-rouge">:shield:</code></td>
<td><em>Improve security</em> <br /> <em>Set more permissions</em></td>
</tr>
<tr>
<td>🔓 <code class="language-plaintext highlighter-rouge">:unlock:</code> <br /> 🔑 <code class="language-plaintext highlighter-rouge">:key:</code></td>
<td><em>Lift permissions</em> <br /> <em>Remove restrictions</em></td>
</tr>
<tr>
<td>📁 <code class="language-plaintext highlighter-rouge">:file_folder:</code></td>
<td><em>Change dir structure</em></td>
</tr>
<tr>
<td>⌚️ <code class="language-plaintext highlighter-rouge">:watch:</code> <br /> ⏱ <code class="language-plaintext highlighter-rouge">:stopwatch:</code></td>
<td><em>Add profiler</em> <br /> <em>Add performance measurements</em></td>
</tr>
<tr>
<td>📊 <code class="language-plaintext highlighter-rouge">:bar_chart:</code></td>
<td><em>Improve performance</em></td>
</tr>
<tr>
<td>🔖 <code class="language-plaintext highlighter-rouge">:bookmark:</code></td>
<td><em>Update version</em></td>
</tr>
<tr>
<td>🎒 <code class="language-plaintext highlighter-rouge">:school_satchel:</code> <br /> 🚀 <code class="language-plaintext highlighter-rouge">:rocket:</code></td>
<td><em>Build and pack</em> <br /> <em>Make ready for deployment/launch</em></td>
</tr>
<tr>
<td>📈 <code class="language-plaintext highlighter-rouge">:chart_with_upwards_trend:</code></td>
<td><em>Improve performance</em></td>
</tr>
<tr>
<td>📉 <code class="language-plaintext highlighter-rouge">:chart_with_downwards_trend:</code></td>
<td><em>Minimize resource usage</em></td>
</tr>
<tr>
<td>📎 <code class="language-plaintext highlighter-rouge">:paperclip:</code></td>
<td><em>Attach doc/file</em></td>
</tr>
<tr>
<td>✈️ <code class="language-plaintext highlighter-rouge">:airplane:</code></td>
<td><em>Migrate to new interface</em> <br /> <em>Create data migration</em></td>
</tr>
<tr>
<td>🏁 <code class="language-plaintext highlighter-rouge">:checkered_flag:</code></td>
<td><em>Finish impl</em> <br /> <em>Meet roadmap checkpoint</em></td>
</tr>
<tr>
<td>🎭 <code class="language-plaintext highlighter-rouge">:performing_arts:</code></td>
<td><em>Merge branches</em> <br /> <em>Merge two modules</em></td>
</tr>
<tr>
<td>⚓️ <code class="language-plaintext highlighter-rouge">:anchor:</code></td>
<td><em>Put TODO anchors</em></td>
</tr>
<tr>
<td>🚩 <code class="language-plaintext highlighter-rouge">:triangular_flag_on_post:</code></td>
<td><em>Meet roadmap checkpoint</em></td>
</tr>
<tr>
<td>©️ <code class="language-plaintext highlighter-rouge">:copyright:</code> <br /> ®️ <code class="language-plaintext highlighter-rouge">:registered:</code></td>
<td><em>Add LICENSE file</em> <br /> <em>Update LICENSE</em></td>
</tr>
</tbody>
</table>
<h2 id="old-exhastive-list-of-emojis-by-context-aka-contextv1">Old Exhastive List of emojis by context (a.k.a, <code class="language-plaintext highlighter-rouge">ContextV1</code>)</h2>
<table>
<thead>
<tr>
<th>Emojis</th>
<th>Context (verb/noun/adjective)</th>
</tr>
</thead>
<tbody>
<tr>
<td>🐛 <code class="language-plaintext highlighter-rouge">:bug:</code> <br /> 🐞 <code class="language-plaintext highlighter-rouge">:beetle:</code> <br /> 🔨 <code class="language-plaintext highlighter-rouge">:hammer:</code> <br /> 🔧 <code class="language-plaintext highlighter-rouge">:wrench:</code> <br /> 🗜 <code class="language-plaintext highlighter-rouge">:clamp:</code> <br /></td>
<td>correct <br /> fix <br /> bugfix</td>
</tr>
<tr>
<td>🐚 <code class="language-plaintext highlighter-rouge">:shell:</code> <br /> 👐 <code class="language-plaintext highlighter-rouge">:open_hands:</code> <br /> 📦 <code class="language-plaintext highlighter-rouge">:package:</code> <br /> 🎁 <code class="language-plaintext highlighter-rouge">:gift:</code> <br /> 🗳 <code class="language-plaintext highlighter-rouge">:ballot_box:</code> <br /> 🗃 <code class="language-plaintext highlighter-rouge">:card_file_box:</code> <br /> 📥 <code class="language-plaintext highlighter-rouge">:inbox_tray:</code> <br /> 📤 <code class="language-plaintext highlighter-rouge">:outbox_tray:</code> <br /></td>
<td>wrap <br /> hold <br /> cover <br /> shell <br /> safe <br /> box <br /> contain</td>
</tr>
<tr>
<td>🎭 <code class="language-plaintext highlighter-rouge">:performing_arts:</code> <br /> 🤝 <code class="language-plaintext highlighter-rouge">:handshake:</code> <br /> 🗜 <code class="language-plaintext highlighter-rouge">:clamp:</code> <br /> 📎 <code class="language-plaintext highlighter-rouge">:paperclip:</code> <br /> 🖇 <code class="language-plaintext highlighter-rouge">:paperclips:</code> <br /> 🔗 <code class="language-plaintext highlighter-rouge">:link:</code> <br /> 🔀 <code class="language-plaintext highlighter-rouge">:twisted_rightwards_arrows:</code> <br /> 🔃 <code class="language-plaintext highlighter-rouge">:arrows_clockwise:</code> <br /> 🔄 <code class="language-plaintext highlighter-rouge">:arrows_counterclockwise:</code> <br /> 👥 <code class="language-plaintext highlighter-rouge">:busts_in_silhouette:</code> <br /></td>
<td>merge <br /> mix <br /> attach <br /> convolve <br /> append <br /> prepend <br /> unify <br /> combine <br /> distill <br /> handshake</td>
</tr>
<tr>
<td>🔥 <code class="language-plaintext highlighter-rouge">:fire:</code> <br /> 🔫 <code class="language-plaintext highlighter-rouge">:gun:</code> <br /> 💣 <code class="language-plaintext highlighter-rouge">:bomb:</code> <br /> 🗑 <code class="language-plaintext highlighter-rouge">:wastebasket:</code> <br /> 🚮 <code class="language-plaintext highlighter-rouge">:put_litter_in_its_place:</code> <br /> ⚰️ <code class="language-plaintext highlighter-rouge">:coffin:</code> <br /> ☠️ <code class="language-plaintext highlighter-rouge">:skull_and_crossbones:</code> <br /> 💀 <code class="language-plaintext highlighter-rouge">:skull:</code> <br /> ✝️ <code class="language-plaintext highlighter-rouge">:latin_cross:</code> <br /> ❌ <code class="language-plaintext highlighter-rouge">:x:</code> <br /> ❎ <code class="language-plaintext highlighter-rouge">:negative_squared_cross_mark:</code> <br /> ✖️ <code class="language-plaintext highlighter-rouge">:heavy_multiplication_x:</code> <br /> 📤 <code class="language-plaintext highlighter-rouge">:outbox_tray:</code> <br /> ✂️ <code class="language-plaintext highlighter-rouge">:scissors:</code> <br /> 🔪 <code class="language-plaintext highlighter-rouge">:knife:</code> <br /> ⚔️ <code class="language-plaintext highlighter-rouge">:crossed_swords:</code> <br /> 🗃 <code class="language-plaintext highlighter-rouge">:card_file_box:</code> <br /> 🗄 <code class="language-plaintext highlighter-rouge">:file_cabinet:</code> <br /></td>
<td>remove <br /> delete <br /> drop <br /> cancel <br /> exclude <br /> archive</td>
</tr>
<tr>
<td>📶 <code class="language-plaintext highlighter-rouge">:signal_strength:</code> <br /> 📈 <code class="language-plaintext highlighter-rouge">:chart_with_upwards_trend:</code> <br /> 📉 <code class="language-plaintext highlighter-rouge">:chart_with_downwards_trend:</code> <br /> ↕️ <code class="language-plaintext highlighter-rouge">:arrow_up_down:</code> <br /> ⬆️ <code class="language-plaintext highlighter-rouge">:arrow_up:</code> <br /> ⬇️ <code class="language-plaintext highlighter-rouge">:arrow_down:</code> <br /> 🍽 <code class="language-plaintext highlighter-rouge">:plate_with_cutlery:</code> <br /> 🔢 <code class="language-plaintext highlighter-rouge">:1234:</code> <br /></td>
<td>order <br /> sort <br /> arrange <br /> reorder</td>
</tr>
<tr>
<td>🔨 <code class="language-plaintext highlighter-rouge">:hammer:</code> <br /> 🔧 <code class="language-plaintext highlighter-rouge">:wrench:</code> <br /> 🎖 <code class="language-plaintext highlighter-rouge">:medal_military:</code> <br /> ✨ <code class="language-plaintext highlighter-rouge">:sparkles:</code> <br /> 🥇 <code class="language-plaintext highlighter-rouge">:1st_place_medal:</code> <br /> 🎨 <code class="language-plaintext highlighter-rouge">:art:</code> <br /> 🖌 <code class="language-plaintext highlighter-rouge">:paintbrush:</code> <br /> 💄 <code class="language-plaintext highlighter-rouge">:lipstick:</code> <br /> 💅 <code class="language-plaintext highlighter-rouge">:nail_care:</code> <br /> 👠 <code class="language-plaintext highlighter-rouge">:high_heel:</code> <br /> 🌈 <code class="language-plaintext highlighter-rouge">:rainbow:</code> <br /> 🐦 <code class="language-plaintext highlighter-rouge">:bird:</code> <br /></td>
<td>improve <br /> enhance <br /> upgrade <br /> refresh <br /> beauty <br /> embellish <br /> cosmetics</td>
</tr>
<tr>
<td>💉 <code class="language-plaintext highlighter-rouge">:syringe:</code> <br /> 🔨 <code class="language-plaintext highlighter-rouge">:hammer:</code> <br /> 🔧 <code class="language-plaintext highlighter-rouge">:wrench:</code> <br /> ✔️ <code class="language-plaintext highlighter-rouge">:heavy_check_mark:</code> <br /> ✅ <code class="language-plaintext highlighter-rouge">:white_check_mark:</code> <br /> ☑️ <code class="language-plaintext highlighter-rouge">:ballot_box_with_check:</code> <br /> 🖊 <code class="language-plaintext highlighter-rouge">:pen:</code> <br /></td>
<td>apply <br /> set <br /> put <br /> commit <br /> register <br /> confirm</td>
</tr>
<tr>
<td>➕ <code class="language-plaintext highlighter-rouge">:heavy_plus_sign:</code> <br /> 📎 <code class="language-plaintext highlighter-rouge">:paperclip:</code> <br /> 🖇 <code class="language-plaintext highlighter-rouge">:paperclips:</code> <br /> 📦 <code class="language-plaintext highlighter-rouge">:package:</code> <br /> 🎁 <code class="language-plaintext highlighter-rouge">:gift:</code> <br /> 🏁 <code class="language-plaintext highlighter-rouge">:checkered_flag:</code> <br /> ⬆️ <code class="language-plaintext highlighter-rouge">:arrow_up:</code> <br /> 🌱 <code class="language-plaintext highlighter-rouge">:seedling:</code> <br /> ⏫ <code class="language-plaintext highlighter-rouge">:arrow_double_up:</code> <br /> 📥 <code class="language-plaintext highlighter-rouge">:inbox_tray:</code> <br /> 👶 <code class="language-plaintext highlighter-rouge">:baby:</code> <br /> 🐤 <code class="language-plaintext highlighter-rouge">:baby_chick:</code> <br /> 🚼 <code class="language-plaintext highlighter-rouge">:baby_symbol:</code> <br /> 🆕 <code class="language-plaintext highlighter-rouge">:new:</code> <br /> 🌼 <code class="language-plaintext highlighter-rouge">:blossom:</code> <br /> ✨ <code class="language-plaintext highlighter-rouge">:sparkles:</code> <br /> ❇️ <code class="language-plaintext highlighter-rouge">:sparkle:</code> <br /> 🔌 <code class="language-plaintext highlighter-rouge">:electric_plug:</code> <br /></td>
<td>add <br /> insert <br /> update <br /> upgrade <br /> increase <br /> register <br /> append <br /> prepend <br /> feature</td>
</tr>
<tr>
<td>👕 <code class="language-plaintext highlighter-rouge">:shirt:</code> <br />/ <code class="language-plaintext highlighter-rouge">:tshirt:</code> <br /> 🎖 <code class="language-plaintext highlighter-rouge">:medal_military:</code> <br /> 📏 <code class="language-plaintext highlighter-rouge">:straight_ruler:</code> <br /> 📐 <code class="language-plaintext highlighter-rouge">:triangular_ruler:</code> <br /> 🚿 <code class="language-plaintext highlighter-rouge">:shower:</code> <br /> 💊 <code class="language-plaintext highlighter-rouge">:pill:</code> <br /> 🎨 <code class="language-plaintext highlighter-rouge">:art:</code> <br /> 🖌 <code class="language-plaintext highlighter-rouge">:paintbrush:</code> <br /> 💄 <code class="language-plaintext highlighter-rouge">:lipstick:</code> <br /> 💅 <code class="language-plaintext highlighter-rouge">:nail_care:</code> <br /> 👠 <code class="language-plaintext highlighter-rouge">:high_heel:</code> <br /> 🌈 <code class="language-plaintext highlighter-rouge">:rainbow:</code> <br /></td>
<td>lint <br /> clean <br /> format <br /> style <br /> refactor</td>
</tr>
<tr>
<td>🏗 <code class="language-plaintext highlighter-rouge">:building_construction:</code> <br /> 🔨 <code class="language-plaintext highlighter-rouge">:hammer:</code> <br /> 🔧 <code class="language-plaintext highlighter-rouge">:wrench:</code> <br /> 🛠 <code class="language-plaintext highlighter-rouge">:hammer_and_wrench:</code> <br /> ♻️ <code class="language-plaintext highlighter-rouge">:recycle:</code> <br /></td>
<td>refactor <br /> rewrite <br /> reestablish <br /> reimplement <br /> rethink <br /> recycle</td>
</tr>
<tr>
<td>⚗️ <code class="language-plaintext highlighter-rouge">:alembic:</code> <br /> ⏱ <code class="language-plaintext highlighter-rouge">:stopwatch:</code> <br /> 🔍 <code class="language-plaintext highlighter-rouge">:mag:</code> <br /> 🔎 <code class="language-plaintext highlighter-rouge">:mag_right:</code> <br /> 🕵 <code class="language-plaintext highlighter-rouge">:detective:</code> <br /> 🔭 <code class="language-plaintext highlighter-rouge">:telescope:</code> <br /> 🔬 <code class="language-plaintext highlighter-rouge">:microscope:</code> <br /> 🗜 <code class="language-plaintext highlighter-rouge">:clamp:</code> <br /></td>
<td>test <br /> assess <br /> exam <br /> check <br /> review <br /> rethink <br /> supervise <br /> fixture</td>
</tr>
<tr>
<td>✉️ <code class="language-plaintext highlighter-rouge">:envelope:</code> <br /> 📤 <code class="language-plaintext highlighter-rouge">:outbox_tray:</code> <br /> 📡 <code class="language-plaintext highlighter-rouge">:satellite:</code> <br /> 🚀 <code class="language-plaintext highlighter-rouge">:rocket:</code> <br /> ✈️ <code class="language-plaintext highlighter-rouge">:airplane:</code> <br /> 🛩 <code class="language-plaintext highlighter-rouge">:small_airplane:</code> <br /> 🚁 <code class="language-plaintext highlighter-rouge">:helicopter:</code> <br /> 🏹 <code class="language-plaintext highlighter-rouge">:bow_and_arrow:</code> <br /> 📰 <code class="language-plaintext highlighter-rouge">:newspaper:</code> <br /> 🗞 <code class="language-plaintext highlighter-rouge">:newspaper_roll:</code> <br /> 📺 <code class="language-plaintext highlighter-rouge">:tv:</code> <br /> 📻 <code class="language-plaintext highlighter-rouge">:radio:</code> <br /> 🎤 <code class="language-plaintext highlighter-rouge">:microphone:</code> <br /> 📢 <code class="language-plaintext highlighter-rouge">:loudspeaker:</code> <br /> 🔈 <code class="language-plaintext highlighter-rouge">:speaker:</code> <br /></td>
<td>send <br /> move <br /> out <br /> publish <br /> transform <br /> give <br /> produce</td>
</tr>
<tr>
<td>❓ <code class="language-plaintext highlighter-rouge">:question:</code> <br /> ❔ <code class="language-plaintext highlighter-rouge">:grey_question:</code> <br /> 🍴 <code class="language-plaintext highlighter-rouge">:fork_and_knife:</code> <br /> 📥 <code class="language-plaintext highlighter-rouge">:inbox_tray:</code> <br /></td>
<td>ask <br /> request <br /> inquiry <br /> query <br /> fetch <br /> receive <br /> take</td>
</tr>
<tr>
<td>👂 <code class="language-plaintext highlighter-rouge">:ear:</code> <br /> 🎧 <code class="language-plaintext highlighter-rouge">:headphone:</code> <br /> ⏳ <code class="language-plaintext highlighter-rouge">:hourglass_flowing_sand:</code> <br /> ⏸ <code class="language-plaintext highlighter-rouge">:pause_button:</code> <br /> 📨 <code class="language-plaintext highlighter-rouge">:incoming_envelope:</code> <br /> ✉️ <code class="language-plaintext highlighter-rouge">:envelope:</code> <br /> ☎️ <code class="language-plaintext highlighter-rouge">:phone:</code> <br /> 📲 <code class="language-plaintext highlighter-rouge">:calling:</code> <br /></td>
<td>consume <br /> listen <br /> subscribe <br /> register <br /> await <br /> callback <br /> standby</td>
</tr>
<tr>
<td>⏱ <code class="language-plaintext highlighter-rouge">:stopwatch:</code> <br /> ⏲ <code class="language-plaintext highlighter-rouge">:timer:</code> <br /> ⏰ <code class="language-plaintext highlighter-rouge">:alarm_clock:</code> <br /> 📆 <code class="language-plaintext highlighter-rouge">:calendar:</code> <br /> 🗓 <code class="language-plaintext highlighter-rouge">:spiral_calendar:</code> <br /> 🏃 <code class="language-plaintext highlighter-rouge">:runner:</code> <br /></td>
<td>job <br /> cron <br /> schedule <br /> time <br /> period <br /> repeat <br /> repetitive</td>
</tr>
<tr>
<td>🔍 <code class="language-plaintext highlighter-rouge">:mag:</code> <br /> 🔎 <code class="language-plaintext highlighter-rouge">:mag_right:</code> <br /> 🔦 <code class="language-plaintext highlighter-rouge">:flashlight:</code> <br /> 🕵 <code class="language-plaintext highlighter-rouge">:detective:</code> <br /> 🔭 <code class="language-plaintext highlighter-rouge">:telescope:</code> <br /> 🔬 <code class="language-plaintext highlighter-rouge">:microscope:</code> <br /> 🐶 <code class="language-plaintext highlighter-rouge">:dog:</code> <br /> 🐕 <code class="language-plaintext highlighter-rouge">:dog2:</code> <br /> 👃 <code class="language-plaintext highlighter-rouge">:nose:</code> <br /></td>
<td>search <br /> find <br /> lookup <br /> browse <br /> query <br /> select</td>
</tr>
<tr>
<td>⬇️ <code class="language-plaintext highlighter-rouge">:arrow_down:</code> <br /> ⏬ <code class="language-plaintext highlighter-rouge">:arrow_double_down:</code> <br /> ⤵️ <code class="language-plaintext highlighter-rouge">:arrow_heading_down:</code> <br /> 👎 <code class="language-plaintext highlighter-rouge">:thumbsdown:</code> <br /></td>
<td>rollback <br /> downgrade <br /> reset <br /> repopulate <br /> revert <br /> undo</td>
</tr>
<tr>
<td>📜 <code class="language-plaintext highlighter-rouge">:scroll:</code> <br /> 📝 <code class="language-plaintext highlighter-rouge">:pencil:</code> <br /> ✍️ <code class="language-plaintext highlighter-rouge">:writing_hand:</code> <br /> 📰 <code class="language-plaintext highlighter-rouge">:newspaper:</code> <br /> 🗞 <code class="language-plaintext highlighter-rouge">:newspaper_roll:</code> <br /> 📋 <code class="language-plaintext highlighter-rouge">:clipboard:</code> <br /> 📖 <code class="language-plaintext highlighter-rouge">:book:</code> <br /> 📑 <code class="language-plaintext highlighter-rouge">:bookmark_tabs:</code> <br /> 📚 <code class="language-plaintext highlighter-rouge">:books:</code> <br /> 📘 <code class="language-plaintext highlighter-rouge">:blue_book:</code> <br /> 📙 <code class="language-plaintext highlighter-rouge">:orange_book:</code> <br /> 📓 <code class="language-plaintext highlighter-rouge">:notebook:</code> <br /> 🖊 <code class="language-plaintext highlighter-rouge">:pen:</code> <br /> ✏️ <code class="language-plaintext highlighter-rouge">:pencil2:</code> <br /> 🖨 <code class="language-plaintext highlighter-rouge">:printer:</code> <br /> 📠 <code class="language-plaintext highlighter-rouge">:fax:</code> <br /> 💬 <code class="language-plaintext highlighter-rouge">:speech_balloon:</code> <br /></td>
<td>log <br /> record <br /> store <br /> draft <br /> note <br /> text <br /> README <br /> guide <br /> manual <br /> comment</td>
</tr>
<tr>
<td>⚠️ <code class="language-plaintext highlighter-rouge">:warning:</code> <br /> ✋ <code class="language-plaintext highlighter-rouge">:hand:</code> <br /> ❗️ <code class="language-plaintext highlighter-rouge">:heavy_exclamation_mark:</code> <br /> ❗️ <code class="language-plaintext highlighter-rouge">:exclamation:</code> <br /> ❕ <code class="language-plaintext highlighter-rouge">:grey_exclamation:</code> <br /></td>
<td>avoid <br /> prevent <br /> caution <br /> safe <br /> look out <br /> beware <br /> notice <br /> warning</td>
</tr>
<tr>
<td>🛑 <code class="language-plaintext highlighter-rouge">:stop_sign:</code> <br /> ☣️ <code class="language-plaintext highlighter-rouge">:biohazard:</code> <br /> 💀 <code class="language-plaintext highlighter-rouge">:skull:</code> <br /> ☠️ <code class="language-plaintext highlighter-rouge">:skull_and_crossbones:</code> <br /> 🔥 <code class="language-plaintext highlighter-rouge">:fire:</code> <br /> ⏹ <code class="language-plaintext highlighter-rouge">:stop_button:</code> <br /> ⚰️ <code class="language-plaintext highlighter-rouge">:coffin:</code> <br /> ✝️ <code class="language-plaintext highlighter-rouge">:latin_cross:</code> <br /> ✖️ <code class="language-plaintext highlighter-rouge">:heavy_multiplication_x:</code> <br /></td>
<td>error <br /> exception <br /> hazard <br /> danger <br /> stop <br /> crash <br /> abort <br /> deadlock</td>
</tr>
<tr>
<td>👨 <code class="language-plaintext highlighter-rouge">:man:</code> <br /> 👩 <code class="language-plaintext highlighter-rouge">:woman:</code> <br /></td>
<td>user <br /> human <br /> operator</td>
</tr>
<tr>
<td>📺 <code class="language-plaintext highlighter-rouge">:tv:</code> <br /> 📱 <code class="language-plaintext highlighter-rouge">:iphone:</code> <br /> 🖼 <code class="language-plaintext highlighter-rouge">:framed_picture:</code> <br /> 🖌 <code class="language-plaintext highlighter-rouge">:paintbrush:</code> <br /> ✒️ <code class="language-plaintext highlighter-rouge">:black_nib:</code> <br /> 🎨 <code class="language-plaintext highlighter-rouge">:art:</code> <br /> 🌈 <code class="language-plaintext highlighter-rouge">:rainbow:</code> <br /></td>
<td>UI <br /> UX <br /> HTML <br /> CSS <br /> front-end <br /> view <br /> face <br /> canvas <br /> image <br /> picture</td>
</tr>
<tr>
<td>☸️ <code class="language-plaintext highlighter-rouge">:wheel_of_dharma:</code> <br /> ⚙️ <code class="language-plaintext highlighter-rouge">:gear:</code> <br /> 🎛 <code class="language-plaintext highlighter-rouge">:control_knobs:</code> <br /> 🛠 <code class="language-plaintext highlighter-rouge">:hammer_and_wrench:</code> <br /> ⚒ <code class="language-plaintext highlighter-rouge">:hammer_and_pick:</code> <br /> 🔨 <code class="language-plaintext highlighter-rouge">:hammer:</code> <br /> 🔧 <code class="language-plaintext highlighter-rouge">:wrench:</code> <br /> 🗜 <code class="language-plaintext highlighter-rouge">:clamp:</code> <br /> 🔢 <code class="language-plaintext highlighter-rouge">:1234:</code> <br /> 🔡 <code class="language-plaintext highlighter-rouge">:abcd:</code> <br /> 🔠 <code class="language-plaintext highlighter-rouge">:capital_abcd:</code> <br /></td>
<td>config <br /> setup <br /> parameter <br /> argument <br /> reference <br /> fixture</td>
</tr>
<tr>
<td>🤡 <code class="language-plaintext highlighter-rouge">:clown:</code> <br /> 👒 <code class="language-plaintext highlighter-rouge">:womans_hat:</code> <br /> 🎭 <code class="language-plaintext highlighter-rouge">:performing_arts:</code> <br /> 🎬 <code class="language-plaintext highlighter-rouge">:clapper:</code> <br /> 🌚 <code class="language-plaintext highlighter-rouge">:new_moon_with_face:</code> <br /> 🕶 <code class="language-plaintext highlighter-rouge">:dark_sunglasses:</code> <br /> 🎠 <code class="language-plaintext highlighter-rouge">:carousel_horse:</code> <br /> 🍼 <code class="language-plaintext highlighter-rouge">:baby_bottle:</code> <br /> 👶 <code class="language-plaintext highlighter-rouge">:baby:</code> <br /> 🐤 <code class="language-plaintext highlighter-rouge">:baby_chick:</code> <br /> 🚼 <code class="language-plaintext highlighter-rouge">:baby_symbol:</code> <br /></td>
<td>mock <br /> fake <br /> stub <br /> test <br /> assess <br /> impersonate <br /> improvise <br /> simulate <br /> emulate <br /> behave</td>
</tr>
<tr>
<td>🔑 <code class="language-plaintext highlighter-rouge">:key:</code> <br /> 🗝 <code class="language-plaintext highlighter-rouge">:old_key:</code> <br /> 🏷 <code class="language-plaintext highlighter-rouge">:label:</code> <br /> 🔗 <code class="language-plaintext highlighter-rouge">:link:</code> <br /> 👶 <code class="language-plaintext highlighter-rouge">:baby:</code> <br /> 🐤 <code class="language-plaintext highlighter-rouge">:baby_chick:</code> <br /> 💼 <code class="language-plaintext highlighter-rouge">:briefcase:</code> <br /> 📁 <code class="language-plaintext highlighter-rouge">:file_folder:</code> <br /> 📂 <code class="language-plaintext highlighter-rouge">:open_file_folder:</code> <br /></td>
<td>variable <br /> field <br /> property <br /> key <br /> item <br /> element</td>
</tr>
<tr>
<td>🏃 <code class="language-plaintext highlighter-rouge">:runner:</code> <br /> 🚴 <code class="language-plaintext highlighter-rouge">:bicyclist:</code> <br /> 🚵 <code class="language-plaintext highlighter-rouge">:mountain_bicyclist:</code> <br /> 🤸♂ <code class="language-plaintext highlighter-rouge">:man_cartwheeling:</code> <br /> 🤸♀ <code class="language-plaintext highlighter-rouge">:woman_cartwheeling:</code> <br /> 🎬 <code class="language-plaintext highlighter-rouge">:clapper:</code> <br /> 📢 <code class="language-plaintext highlighter-rouge">:loudspeaker:</code> <br /> 🔈 <code class="language-plaintext highlighter-rouge">:speaker:</code> <br /> 🚗 <code class="language-plaintext highlighter-rouge">:car:</code> <br /> 🚀 <code class="language-plaintext highlighter-rouge">:rocket:</code> <br /> ✈️ <code class="language-plaintext highlighter-rouge">:airplane:</code> <br /> 🛩 <code class="language-plaintext highlighter-rouge">:small_airplane:</code> <br /> 👨🏭 <code class="language-plaintext highlighter-rouge">:man_factory_worker:</code> <br /> 👩🏭 <code class="language-plaintext highlighter-rouge">:woman_factory_worker:</code> <br /></td>
<td>method <br /> function <br /> behavior <br /> action <br /> play <br /> execute <br /> run</td>
</tr>
<tr>
<td>🛑 <code class="language-plaintext highlighter-rouge">:stop_sign:</code> <br /> ⛔️ <code class="language-plaintext highlighter-rouge">:no_entry:</code> <br /> 🚫 <code class="language-plaintext highlighter-rouge">:no_entry_sign:</code> <br /> 🚷 <code class="language-plaintext highlighter-rouge">:no_pedestrians:</code> <br /> 🚳 <code class="language-plaintext highlighter-rouge">:no_bicycles:</code> <br /> 🚱 <code class="language-plaintext highlighter-rouge">:non-potable_water:</code> <br /> 🛡 <code class="language-plaintext highlighter-rouge">:shield:</code> <br /> ⚠️ <code class="language-plaintext highlighter-rouge">:warning:</code> <br /> ✖️ <code class="language-plaintext highlighter-rouge">:heavy_multiplication_x:</code> <br /> ✋ <code class="language-plaintext highlighter-rouge">:hand:</code> <br /> ⏹ <code class="language-plaintext highlighter-rouge">:stop_button:</code> <br /> 🏰 <code class="language-plaintext highlighter-rouge">:european_castle:</code> <br /> 🚨 <code class="language-plaintext highlighter-rouge">:rotating_light:</code> <br /> 🚓 <code class="language-plaintext highlighter-rouge">:police_car:</code> <br /> 👮 <code class="language-plaintext highlighter-rouge">:policeman:</code> <br /> 👮♀ <code class="language-plaintext highlighter-rouge">:policewoman:</code> <br /> 🚔 <code class="language-plaintext highlighter-rouge">:oncoming_police_car:</code> <br /> ❗️ <code class="language-plaintext highlighter-rouge">:heavy_exclamation_mark:</code> <br /> 👨⚖ <code class="language-plaintext highlighter-rouge">:man_judge:</code> <br /> 👩⚖ <code class="language-plaintext highlighter-rouge">:woman_judge:</code> <br /> 👽 <code class="language-plaintext highlighter-rouge">:alien:</code> <br /></td>
<td>limit <br /> bound <br /> line <br /> threshold <br /> ceiling <br /> floor <br /> restrict <br /> constrain <br /> restrain</td>
</tr>
<tr>
<td>🗒 <code class="language-plaintext highlighter-rouge">:spiral_notepad:</code> <br /> 📓 <code class="language-plaintext highlighter-rouge">:notebook:</code> <br /> 📏 <code class="language-plaintext highlighter-rouge">:ruler:</code> <br /> 📐 <code class="language-plaintext highlighter-rouge">:triangular_ruler:</code> <br /> 📤 <code class="language-plaintext highlighter-rouge">:outbox_tray:</code> <br /> 📦 <code class="language-plaintext highlighter-rouge">:package:</code> <br /> 🔍 <code class="language-plaintext highlighter-rouge">:mag:</code> <br /> 🔎 <code class="language-plaintext highlighter-rouge">:mag_right:</code> <br /> 🕵 <code class="language-plaintext highlighter-rouge">:detective:</code> <br /> 🔢 <code class="language-plaintext highlighter-rouge">:1234:</code> <br /> 🔡 <code class="language-plaintext highlighter-rouge">:abcd:</code> <br /> 🔠 <code class="language-plaintext highlighter-rouge">:capital_abcd:</code> <br /> 📂 <code class="language-plaintext highlighter-rouge">:open_file_folder:</code> <br /> 🐚 <code class="language-plaintext highlighter-rouge">:shell:</code> <br /> 🚰 <code class="language-plaintext highlighter-rouge">:potable_water:</code> <br /> 🖥 <code class="language-plaintext highlighter-rouge">:desktop_computer:</code> <br /> 👨🏫 <code class="language-plaintext highlighter-rouge">:man_teacher:</code> <br /> 👩🏫 <code class="language-plaintext highlighter-rouge">:woman_teacher:</code> <br /></td>
<td>detail <br /> info <br /> data <br /> body <br /> content</td>
</tr>
<tr>
<td>📦 <code class="language-plaintext highlighter-rouge">:package:</code> <br /> 📥 <code class="language-plaintext highlighter-rouge">:inbox_tray:</code> <br /> 💉 <code class="language-plaintext highlighter-rouge">:syringe:</code> <br /> 💾 <code class="language-plaintext highlighter-rouge">:floppy_disk:</code> <br /> 💿 <code class="language-plaintext highlighter-rouge">:cd:</code> <br /> ⌨️ <code class="language-plaintext highlighter-rouge">:keyboard:</code> <br /> 🔑 <code class="language-plaintext highlighter-rouge">:key:</code> <br /> 🗝 <code class="language-plaintext highlighter-rouge">:old_key:</code> <br /> 🔐 <code class="language-plaintext highlighter-rouge">:closed_lock_with_key:</code> <br /> 🔏 <code class="language-plaintext highlighter-rouge">:lock_with_ink_pen:</code> <br /> 🔒 <code class="language-plaintext highlighter-rouge">:lock:</code> <br /> 🏦 <code class="language-plaintext highlighter-rouge">:bank:</code> <br /> ✍️ <code class="language-plaintext highlighter-rouge">:writing_hand:</code> <br /> 📋 <code class="language-plaintext highlighter-rouge">:clipboard:</code> <br /> 📓 <code class="language-plaintext highlighter-rouge">:notebook:</code> <br /> 🗒 <code class="language-plaintext highlighter-rouge">:spiral_notepad:</code> <br /> 📝 <code class="language-plaintext highlighter-rouge">:pencil:</code> <br /> 🖊 <code class="language-plaintext highlighter-rouge">:pen:</code> <br /> ✏️ <code class="language-plaintext highlighter-rouge">:pencil2:</code> <br /> 🖨 <code class="language-plaintext highlighter-rouge">:printer:</code> <br /> 📠 <code class="language-plaintext highlighter-rouge">:fax:</code> <br /> 🎞 <code class="language-plaintext highlighter-rouge">:film_strip:</code> <br /></td>
<td>store <br /> persist <br /> save <br /> keep <br /> serialize <br /> write <br /> buffer <br /> memory</td>
</tr>
<tr>
<td>📤 <code class="language-plaintext highlighter-rouge">:outbox_tray:</code> <br /> 👓 <code class="language-plaintext highlighter-rouge">:eyeglasses:</code> <br /> 👂 <code class="language-plaintext highlighter-rouge">:ear:</code> <br /> 🔑 <code class="language-plaintext highlighter-rouge">:key:</code> <br /> 🗝 <code class="language-plaintext highlighter-rouge">:old_key:</code> <br /></td>
<td>load <br /> fetch <br /> read <br /> deserialize <br /> query</td>
</tr>
<tr>
<td>🔒 <code class="language-plaintext highlighter-rouge">:lock:</code> <br /> 🔐 <code class="language-plaintext highlighter-rouge">:closed_lock_with_key:</code> <br /> 🔏 <code class="language-plaintext highlighter-rouge">:lock_with_ink_pen:</code> <br /> 🛡 <code class="language-plaintext highlighter-rouge">:shield:</code> <br /> 💂 <code class="language-plaintext highlighter-rouge">:guardsman:</code> <br /> 💂♀ <code class="language-plaintext highlighter-rouge">:guardswoman:</code> <br /></td>
<td>security <br /> ACL <br /> shield <br /> protect <br /> antivirus <br /> guard <br /> encrypt <br /> scramble <br /> hash <br /> sign <br /> clutter <br /> secure <br /> code <br /> hide <br /> conceal <br /> secret <br /> lock <br /> restrict <br /> cover</td>
</tr>
<tr>
<td>🔑 <code class="language-plaintext highlighter-rouge">:key:</code> <br /> 📂 <code class="language-plaintext highlighter-rouge">:open_file_folder:</code> <br /> 📖 <code class="language-plaintext highlighter-rouge">:open_book:</code> <br /> 🔦 <code class="language-plaintext highlighter-rouge">:flashlight:</code> <br /> 📺 <code class="language-plaintext highlighter-rouge">:tv:</code> <br /> 📰 <code class="language-plaintext highlighter-rouge">:newspaper:</code> <br /> 🔈 <code class="language-plaintext highlighter-rouge">:speaker:</code> <br /> 📢 <code class="language-plaintext highlighter-rouge">:loudspeaker:</code> <br /> 🆓 <code class="language-plaintext highlighter-rouge">:free:</code> <br /></td>
<td>decrypt <br /> unscramble <br /> decode <br /> show <br /> open <br /> reveal <br /> unveil <br /> unleash <br /> uncover <br /> release <br /> free <br /> authentication <br /> authorization</td>
</tr>
<tr>
<td>🌐 <code class="language-plaintext highlighter-rouge">:globe_with_meridians:</code> <br /> 🗺 <code class="language-plaintext highlighter-rouge">:world_map:</code> <br /> 🌍 <code class="language-plaintext highlighter-rouge">:earth_africa:</code> <br /> 🌎 <code class="language-plaintext highlighter-rouge">:earth_americas:</code> <br /> 🌏 <code class="language-plaintext highlighter-rouge">:earth_asia:</code> <br /> 🕸 <code class="language-plaintext highlighter-rouge">:spider_web:</code> <br /> 🏙 <code class="language-plaintext highlighter-rouge">:cityscape:</code> <br /> 🏣 <code class="language-plaintext highlighter-rouge">:post_office:</code> <br /> 📮 <code class="language-plaintext highlighter-rouge">:postbox:</code> <br /></td>
<td>URL <br /> URI <br /> path <br /> address <br /> location <br /> access <br /> route <br /> identifier</td>
</tr>
<tr>
<td>🖼 <code class="language-plaintext highlighter-rouge">:framed_picture:</code> <br /> 📺 <code class="language-plaintext highlighter-rouge">:tv:</code> <br /> 🖥 <code class="language-plaintext highlighter-rouge">:desktop_computer:</code> <br /> 📽 <code class="language-plaintext highlighter-rouge">:film_projector:</code> <br /> 🎦 <code class="language-plaintext highlighter-rouge">:cinema:</code> <br /> 🖨 <code class="language-plaintext highlighter-rouge">:printer:</code> <br /> 📏 <code class="language-plaintext highlighter-rouge">:ruler:</code> <br /> 📐 <code class="language-plaintext highlighter-rouge">:triangular_ruler:</code> <br /> 🖊 <code class="language-plaintext highlighter-rouge">:pen:</code> <br /> ✏️ <code class="language-plaintext highlighter-rouge">:pencil2:</code> <br /> 🎨 <code class="language-plaintext highlighter-rouge">:art:</code> <br /> 🖌 <code class="language-plaintext highlighter-rouge">:paintbrush:</code> <br /></td>
<td>show <br /> display <br /> visible <br /> illustrate <br /> demonstrate <br /> paint <br /> draw <br /> print</td>
</tr>
<tr>
<td>✂️ <code class="language-plaintext highlighter-rouge">:scissors:</code> <br /> 🏇 <code class="language-plaintext highlighter-rouge">:horse_racing:</code> <br /> 🐎 <code class="language-plaintext highlighter-rouge">:racehorse:</code> <br /> 🐒 <code class="language-plaintext highlighter-rouge">:monkey:</code> <br /> 🏎 <code class="language-plaintext highlighter-rouge">:racing_car:</code> <br /></td>
<td>skip <br /> ignore <br /> neglect <br /> jump <br /> overlook <br /> unfollow <br /> forget</td>
</tr>
<tr>
<td>⤴️ <code class="language-plaintext highlighter-rouge">:arrow_heading_up:</code> <br /> ♻️ <code class="language-plaintext highlighter-rouge">:recycle:</code> <br /> 🔃 <code class="language-plaintext highlighter-rouge">:arrows_clockwise:</code> <br /> 🔄 <code class="language-plaintext highlighter-rouge">:arrows_counterclockwise:</code> <br /> 🔁 <code class="language-plaintext highlighter-rouge">:repeat:</code> <br /> 🔂 <code class="language-plaintext highlighter-rouge">:repeat_one:</code> <br /> ⏮ <code class="language-plaintext highlighter-rouge">:previous_track_button:</code> <br /> 🏗 <code class="language-plaintext highlighter-rouge">:building_construction:</code> <br /> 🎡 <code class="language-plaintext highlighter-rouge">:ferris_wheel:</code> <br /></td>
<td>retry <br /> restart <br /> reboot <br /> rerun <br /> restablish <br /> reattempt <br /> reconstruct <br /> reimplement <br /> refactor</td>
</tr>
<tr>
<td>🏃 <code class="language-plaintext highlighter-rouge">:runner:</code> <br /> 🚗 <code class="language-plaintext highlighter-rouge">:car:</code> <br /> 🏎 <code class="language-plaintext highlighter-rouge">:racing_car:</code> <br /> 🚅 <code class="language-plaintext highlighter-rouge">:bullettrain_front:</code> <br /> 🚈 <code class="language-plaintext highlighter-rouge">:light_rail:</code> <br /> ✈️ <code class="language-plaintext highlighter-rouge">:airplane:</code> <br /> 🚀 <code class="language-plaintext highlighter-rouge">:rocket:</code> <br /> 🛫 <code class="language-plaintext highlighter-rouge">:flight_departure:</code> <br /> 🌩 <code class="language-plaintext highlighter-rouge">:cloud_with_lightning:</code> <br /> ☂️ <code class="language-plaintext highlighter-rouge">:open_umbrella:</code> <br /> ☔️ <code class="language-plaintext highlighter-rouge">:umbrella:</code> <br /> 🐎 <code class="language-plaintext highlighter-rouge">:racehorse:</code> <br /> 🏇 <code class="language-plaintext highlighter-rouge">:horse_racing:</code> <br /> 💥 <code class="language-plaintext highlighter-rouge">:boom:</code> <br /> 🌋 <code class="language-plaintext highlighter-rouge">:volcano:</code> <br /> 🌅 <code class="language-plaintext highlighter-rouge">:sunrise:</code> <br /> ⏯ <code class="language-plaintext highlighter-rouge">:play_or_pause_button:</code> <br /> 🏗 <code class="language-plaintext highlighter-rouge">:building_construction:</code> <br /></td>
<td>run <br /> execute <br /> boot <br /> establish <br /> try <br /> attempt <br /> apply <br /> drive <br /> move <br /> start <br /> begin <br /> ON <br /> launch <br /> construct <br /> implement <br /> init <br /> initialize</td>
</tr>
<tr>
<td>⏹ <code class="language-plaintext highlighter-rouge">:stop_button:</code> <br /> ⏸ <code class="language-plaintext highlighter-rouge">:pause_button:</code> <br /> 🛑 <code class="language-plaintext highlighter-rouge">:stop_sign:</code> <br /> ✋ <code class="language-plaintext highlighter-rouge">:hand:</code> <br /> ❗️ <code class="language-plaintext highlighter-rouge">:heavy_exclamation_mark:</code> <br /> 💀 <code class="language-plaintext highlighter-rouge">:skull:</code> <br /> ☠️ <code class="language-plaintext highlighter-rouge">:skull_and_crossbones:</code> <br /> 🛬 <code class="language-plaintext highlighter-rouge">:flight_arrival:</code> <br /> 🏁 <code class="language-plaintext highlighter-rouge">:checkered_flag:</code> <br /> ✖️ <code class="language-plaintext highlighter-rouge">:heavy_multiplication_x:</code> <br /> ❎ <code class="language-plaintext highlighter-rouge">:negative_squared_cross_mark:</code> <br /> 📴 <code class="language-plaintext highlighter-rouge">:mobile_phone_off:</code> <br /> 🔫 <code class="language-plaintext highlighter-rouge">:gun:</code> <br /> ⚰️ <code class="language-plaintext highlighter-rouge">:coffin:</code> <br /> ✝️ <code class="language-plaintext highlighter-rouge">:latin_cross:</code> <br /> 💣 <code class="language-plaintext highlighter-rouge">:bomb:</code> <br /></td>
<td>stop <br /> end <br /> pause <br /> abort <br /> OFF <br /> out <br /> wait <br /> hold <br /> holdup <br /> suspend <br /> suppress <br /> silence <br /> silent <br /> kill <br /> interrupt <br /> destruct <br /> dispose</td>
</tr>
<tr>
<td>🎒 <code class="language-plaintext highlighter-rouge">:school_satchel:</code> <br /> 🚀 <code class="language-plaintext highlighter-rouge">:rocket:</code> <br /> ✈️ <code class="language-plaintext highlighter-rouge">:airplane:</code> <br /> ⬆️ <code class="language-plaintext highlighter-rouge">:arrow_up:</code> <br /> ⏫ <code class="language-plaintext highlighter-rouge">:arrow_double_up:</code> <br /> 🔼 <code class="language-plaintext highlighter-rouge">:arrow_up_small:</code> <br /> 🆙 <code class="language-plaintext highlighter-rouge">:up:</code> <br /> 📢 <code class="language-plaintext highlighter-rouge">:loudspeaker:</code> <br /> 🔈 <code class="language-plaintext highlighter-rouge">:speaker:</code> <br /> 📯 <code class="language-plaintext highlighter-rouge">:postal_horn:</code> <br /> 🎈 <code class="language-plaintext highlighter-rouge">:balloon:</code> <br /> 🎊 <code class="language-plaintext highlighter-rouge">:confetti_ball:</code> <br /> 🎉 <code class="language-plaintext highlighter-rouge">:tada:</code> <br /> 📰 <code class="language-plaintext highlighter-rouge">:newspaper:</code> <br /> 🗞 <code class="language-plaintext highlighter-rouge">:newspaper_roll:</code> <br /> 📡 <code class="language-plaintext highlighter-rouge">:satellite:</code> <br /> 🛰 <code class="language-plaintext highlighter-rouge">:artificial_satellite:</code> <br /></td>
<td>deploy <br /> install <br /> setup <br /> launch</td>
</tr>
<tr>
<td>👈 <code class="language-plaintext highlighter-rouge">:point_left:</code> <br /> 👉 <code class="language-plaintext highlighter-rouge">:point_right:</code> <br /> ☝️ <code class="language-plaintext highlighter-rouge">:point_up:</code> <br /> 👇 <code class="language-plaintext highlighter-rouge">:point_down:</code> <br /> 👣 <code class="language-plaintext highlighter-rouge">:footprints:</code> <br /> 🐾 <code class="language-plaintext highlighter-rouge">:paw_prints:</code> <br /> ⤵️ <code class="language-plaintext highlighter-rouge">:arrow_heading_down:</code> <br /> ⤴️ <code class="language-plaintext highlighter-rouge">:arrow_heading_up:</code> <br /> ↪️ <code class="language-plaintext highlighter-rouge">:arrow_right_hook:</code> <br /> ↩️ <code class="language-plaintext highlighter-rouge">:leftwards_arrow_with_hook:</code> <br /> 🔀 <code class="language-plaintext highlighter-rouge">:twisted_rightwards_arrows:</code> <br /> ⛲️ <code class="language-plaintext highlighter-rouge">:fountain:</code> <br /> ♻️ <code class="language-plaintext highlighter-rouge">:recycle:</code> <br /> 🔁 <code class="language-plaintext highlighter-rouge">:repeat:</code> <br /> 🔂 <code class="language-plaintext highlighter-rouge">:repeat_one:</code> <br /> 💱 <code class="language-plaintext highlighter-rouge">:currency_exchange:</code> <br /></td>
<td>redirect <br /> transform <br /> change <br /> direct <br /> guide <br /> align</td>
</tr>
<tr>
<td>0️⃣ <code class="language-plaintext highlighter-rouge">:zero:</code> <br /> ❤️ <code class="language-plaintext highlighter-rouge">:heart:</code> <br /> 💟 <code class="language-plaintext highlighter-rouge">:heart_decoration:</code> <br /> 🌄 <code class="language-plaintext highlighter-rouge">:sunrise_over_mountains:</code> <br /> ☀️ <code class="language-plaintext highlighter-rouge">:sunny:</code> <br /> 🌱 <code class="language-plaintext highlighter-rouge">:seedling:</code> <br /> 🌾 <code class="language-plaintext highlighter-rouge">:ear_of_rice:</code> <br /> 💻 <code class="language-plaintext highlighter-rouge">:computer:</code> <br /> 🏠 <code class="language-plaintext highlighter-rouge">:house:</code> <br /> 🏡 <code class="language-plaintext highlighter-rouge">:house_with_garden:</code> <br /> 🦋 <code class="language-plaintext highlighter-rouge">:butterfly:</code> <br /> ⚙️ <code class="language-plaintext highlighter-rouge">:gear:</code> <br /> 🕯 <code class="language-plaintext highlighter-rouge">:candle:</code> <br /> 🌼 <code class="language-plaintext highlighter-rouge">:blossom:</code> <br /> 🐟 <code class="language-plaintext highlighter-rouge">:fish:</code> <br /> 🛐 <code class="language-plaintext highlighter-rouge">:place_of_worship:</code> <br /> ⛪️ <code class="language-plaintext highlighter-rouge">:church:</code> <br /> 🕌 <code class="language-plaintext highlighter-rouge">:mosque:</code> <br /></td>
<td>base <br /> ground <br /> floor <br /> core <br /> center <br /> middle <br /> heart <br /> root <br /> home <br /> origin</td>
</tr>
<tr>
<td>💀 <code class="language-plaintext highlighter-rouge">:skull:</code> <br /> ☠️ <code class="language-plaintext highlighter-rouge">:skull_and_crossbones:</code> <br /> ☣️ <code class="language-plaintext highlighter-rouge">:hazard:</code> <br /> ☣️ <code class="language-plaintext highlighter-rouge">:biohazard:</code> <br /> 🕳 <code class="language-plaintext highlighter-rouge">:hole:</code> <br /> 🔫 <code class="language-plaintext highlighter-rouge">:gun:</code> <br /> 🌋 <code class="language-plaintext highlighter-rouge">:volcano:</code> <br /> 💥 <code class="language-plaintext highlighter-rouge">:boom:</code> <br /> 🐍 <code class="language-plaintext highlighter-rouge">:snake:</code> <br /> 💸 <code class="language-plaintext highlighter-rouge">:money_with_wings:</code> <br /> 🤜 <code class="language-plaintext highlighter-rouge">:fight:</code> <br /> 🤼♂ <code class="language-plaintext highlighter-rouge">:men_wrestling:</code> <br /> 🤼♀ <code class="language-plaintext highlighter-rouge">:women_wrestling:</code> <br /> 🥊 <code class="language-plaintext highlighter-rouge">:boxing_glove:</code> <br /> 🏥 <code class="language-plaintext highlighter-rouge">:hospital:</code> <br /> 🚑 <code class="language-plaintext highlighter-rouge">:ambulance:</code> <br /></td>
<td>trespass <br /> breach <br /> vulnerability <br /> access <br /> hole <br /> penetrate <br /> spy <br /> listen <br /> hack <br /> compromise <br /> reveal</td>
</tr>
<tr>
<td>📦 <code class="language-plaintext highlighter-rouge">:package:</code> <br /> 🗃 <code class="language-plaintext highlighter-rouge">:card_file_box:</code> <br /> 🗄 <code class="language-plaintext highlighter-rouge">:file_cabinet:</code> <br /> 🔌 <code class="language-plaintext highlighter-rouge">:electric_plug:</code> <br /> 🔲 <code class="language-plaintext highlighter-rouge">:black_square_button:</code> <br /> 🔳 <code class="language-plaintext highlighter-rouge">:white_square_button:</code> <br /> ⬜️ <code class="language-plaintext highlighter-rouge">:white_large_square:</code> <br /> ⬛️ <code class="language-plaintext highlighter-rouge">:black_large_square:</code> <br /> 🍯 <code class="language-plaintext highlighter-rouge">:honey_pot:</code> <br /> 🔨 <code class="language-plaintext highlighter-rouge">:hammer:</code> <br /> 🛠 <code class="language-plaintext highlighter-rouge">:hammer_and_wrench:</code> <br /> 🔧 <code class="language-plaintext highlighter-rouge">:wrench:</code> <br /> 💻 <code class="language-plaintext highlighter-rouge">:computer:</code> <br /> 💽 <code class="language-plaintext highlighter-rouge">:minidisc:</code> <br /> 📎 <code class="language-plaintext highlighter-rouge">:paperclip:</code> <br /> 🖇 <code class="language-plaintext highlighter-rouge">:paperclips:</code> <br /></td>
<td>package <br /> dependency <br /> module <br /> library <br /> component <br /> plugin <br /> add-in <br /> plug <br /> object <br /> container <br /> image</td>
</tr>
<tr>
<td>🌈 <code class="language-plaintext highlighter-rouge">:rainbow:</code> <br /> 🥞 <code class="language-plaintext highlighter-rouge">:pancakes:</code> <br /> 🍔 <code class="language-plaintext highlighter-rouge">:burger:</code> <br /> 🌭 <code class="language-plaintext highlighter-rouge">:hotdog:</code> <br /> 📌 <code class="language-plaintext highlighter-rouge">:pushpin:</code> <br /> 📍 <code class="language-plaintext highlighter-rouge">:round_pushpin:</code> <br /> 🤹♂ <code class="language-plaintext highlighter-rouge">:man_juggling:</code> <br /> 🤹♀ <code class="language-plaintext highlighter-rouge">:woman_juggling:</code> <br /></td>
<td>middleware <br /> intermediate <br /> middleman <br /> dealer <br /> layer</td>
</tr>
<tr>
<td>🕸 <code class="language-plaintext highlighter-rouge">:spider_web:</code> <br /> 📶 <code class="language-plaintext highlighter-rouge">:signal_strength:</code> <br /> 📊 <code class="language-plaintext highlighter-rouge">:bar_chart:</code> <br /> 📁 <code class="language-plaintext highlighter-rouge">:file_folder:</code> <br /> 📂 <code class="language-plaintext highlighter-rouge">:open_file_folder:</code> <br /> 🌳 <code class="language-plaintext highlighter-rouge">:tree:</code> <br /> 🍃 <code class="language-plaintext highlighter-rouge">:leaf:</code> <br /></td>
<td>structure <br /> organize <br /> format <br /> tree <br /> leaf <br /> edge <br /> graph <br /> net <br /> network</td>
</tr>
<tr>
<td>☂️ <code class="language-plaintext highlighter-rouge">:open_umbrella:</code> <br /> ☔️ <code class="language-plaintext highlighter-rouge">:umbrella:</code> <br /> 🏕 <code class="language-plaintext highlighter-rouge">:camping:</code> <br /> ⚔️ <code class="language-plaintext highlighter-rouge">:crossed_swords:</code> <br /> 🗺 <code class="language-plaintext highlighter-rouge">:world_map:</code> <br /> 🌐 <code class="language-plaintext highlighter-rouge">:globe_with_meridians:</code> <br /></td>
<td>cover <br /> range <br /> shadow <br /> area <br /> support <br /> resolve</td>
</tr>
<tr>
<td>♻️ <code class="language-plaintext highlighter-rouge">:recycle:</code> <br /> 🔁 <code class="language-plaintext highlighter-rouge">:repeat:</code> <br /> 🔂 <code class="language-plaintext highlighter-rouge">:repeat_one:</code> <br /> 🔃 <code class="language-plaintext highlighter-rouge">:arrows_clockwise:</code> <br /> 🔄 <code class="language-plaintext highlighter-rouge">:arrows_counterclockwise:</code> <br /> 🔢 <code class="language-plaintext highlighter-rouge">:1234:</code> <br /> 🔡 <code class="language-plaintext highlighter-rouge">:abcd:</code> <br /> 🔠 <code class="language-plaintext highlighter-rouge">:capital_abcd:</code> <br /></td>
<td>loop <br /> while <br /> for <br /> do <br /> loopback <br /> repeat <br /> repetition <br /> iterate <br /> enumerate</td>
</tr>
<tr>
<td>🚧 <code class="language-plaintext highlighter-rouge">:construction:</code> <br /> 🚨 <code class="language-plaintext highlighter-rouge">:rotating_light:</code> <br /> ⚠️ <code class="language-plaintext highlighter-rouge">:warning:</code> <br /> ⌛️ <code class="language-plaintext highlighter-rouge">:hourglass:</code> <br /> ⏳ <code class="language-plaintext highlighter-rouge">:hourglass_flowing_sand:</code> <br /> ⏲ <code class="language-plaintext highlighter-rouge">:timer_clock:</code> <br /> ⏱ <code class="language-plaintext highlighter-rouge">:stopwatch:</code> <br /> 🚦 <code class="language-plaintext highlighter-rouge">:vertical_traffic_light:</code> <br /> 🚥 <code class="language-plaintext highlighter-rouge">:traffic_light:</code> <br /></td>
<td>temporary <br /> work in progress <br /> WIP <br /> pend <br /> wait <br /> suspend <br /> block <br /> hinder</td>
</tr>
</tbody>
</table>babakksOld exhaustive list of emojis and contextual keywords (as of git-emoji dataset's ContextV1)Living in the Shell #24; chmod (Modify file/directory permissions)2023-01-06T10:30:00+00:002023-01-06T10:30:00+00:00https://babakks.github.io/article/2023/01/06/ls#024-living-in-the-shell-chmod<h2 id="chmod-"><code class="language-plaintext highlighter-rouge">chmod</code> 🔐</h2>
<p>Modifies file/directory permissions (See <a href="https://linuxcommand.org/lc3_man_pages/chmod1.html">here</a> or <a href="https://en.wikipedia.org/wiki/Chmod">here</a> for more details).</p>
<p>Permission expressions are mostly formatted as <code class="language-plaintext highlighter-rouge">[ugoa][+-=][rwx]</code>:</p>
<table>
<thead>
<tr>
<th>Symbol</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="language-plaintext highlighter-rouge">r</code></td>
<td>Read</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">w</code></td>
<td>Write</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">x</code></td>
<td>Execute</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>Symbol</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="language-plaintext highlighter-rouge">u</code></td>
<td><strong>User</strong> (owner of the file/directory)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">g</code></td>
<td><strong>Group</strong> (of the file/directory)</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">o</code></td>
<td><strong>Other</strong> users/groups</td>
</tr>
<tr>
<td><code class="language-plaintext highlighter-rouge">a</code></td>
<td><strong>All</strong> users/groups</td>
</tr>
</tbody>
</table>
<h2 id="grant-all-permissions-to-everyone-arwx-or-777">Grant all permissions to everyone; <code class="language-plaintext highlighter-rouge">a+rwx</code> or <code class="language-plaintext highlighter-rouge">777</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">chmod </span>a+rwx some-file
<span class="c"># or</span>
<span class="nb">chmod </span>777 some-file
</code></pre></div></div>
<h2 id="make-a-file-executable-for-everyone-x">Make a file executable for everyone <code class="language-plaintext highlighter-rouge">+x</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">chmod</span> +x some-file
<span class="c"># or</span>
<span class="nb">chmod </span>a+x some-file
</code></pre></div></div>
<h2 id="make-a-file-executable-only-for-the-user-owner-ux">Make a file executable only for the <em>User</em> (owner) <code class="language-plaintext highlighter-rouge">u+x</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">chmod </span>u+x some-file
</code></pre></div></div>
<h2 id="disallow-group-and-others-to-readwriteexecute-go-rwx">Disallow <em>Group</em> and <em>Others</em> to read/write/execute <code class="language-plaintext highlighter-rouge">go-rwx</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">chmod </span>go-rwx some-file
</code></pre></div></div>
<h2 id="apply-the-same-user-owner-permissions-to-the-group-u">Apply the same <em>User</em> (owner) permissions to the <em>Group</em> <code class="language-plaintext highlighter-rouge">=u</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">chmod </span><span class="nv">g</span><span class="o">=</span>u some-file
</code></pre></div></div>
<h2 id="rewrite-permissions-for-the-group-and-others-">Rewrite permissions for the <em>Group</em> and <em>Others</em> <code class="language-plaintext highlighter-rouge">=</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">chmod </span><span class="nv">go</span><span class="o">=</span>rw some-file
</code></pre></div></div>
<h2 id="clear-permissions-for-the-group-and-others-">Clear permissions for the <em>Group</em> and <em>Others</em> <code class="language-plaintext highlighter-rouge">=</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">chmod </span><span class="nv">go</span><span class="o">=</span> some-file
</code></pre></div></div>
<h2 id="clear-all-permissions-">Clear all permissions <code class="language-plaintext highlighter-rouge">=</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">chmod </span><span class="nv">a</span><span class="o">=</span> some-file
</code></pre></div></div>
<hr />
<p><strong><em>About Living in the Shell</em></strong><br />
<em>Obsessed with doing things in the shell, I’ve decided to share my <strong>daily</strong> struggles on living in the shell as <strong>terse</strong> but <strong>informative</strong> posts.</em></p>babakksSee how to easily modify file/directory access permissions within your shell environment.VS Code Extension to Pick Relevant Emojis for Git Commit Messages2022-08-19T10:30:00+00:002022-08-19T10:30:00+00:00https://babakks.github.io/article/2022/08/19/vscode-extension-for-emojis-in-git-commit-messages<h2 id="emoji-in-git-commit-message">Emoji in git commit message</h2>
<p>If you’re VS Code user and also a fan of emojis, this new VS Code extension might appeal to you, especially if you’ve read and liked <a href="/article/2020/07/03/emojis-in-git-commit-messages.html"><em>Emojis for Better Git Commit Messages</em></a> for its exhaustive table of contextual emoji data which were gathered over years. This new extension is called <strong>Git-Emoji</strong>. What it does is to provide you with relevant emoji suggestions to add to your git commit messages. This short screen capture would show you how this extension works:</p>
<p><img src="/img/2022-08-19-capture.gif" alt="How to get relevant emojis for git commit message" /></p>
<p>To install it, search for “Git-Emoji” in the extension sidebar and click on the <em>Install</em> button. Alternatively, you can also install it as follows:</p>
<ol>
<li>Press <kbd>Ctrl</kbd>+<kbd>P</kbd></li>
<li>Type in <code class="language-plaintext highlighter-rouge">ext install git-emoji.vscode-git-emoji</code> and press Enter/Return</li>
</ol>
<h2 id="dataset">Dataset</h2>
<p>If you’re interested in the emoji/contextual data behind this extension, you can access the underlying dataset via <a href="https://github.com/git-emoji/dataset-js">git-emoji/dataset-js</a> repository on GitHub. It’s also available as a NPM package; <a href="https://www.npmjs.com/package/@git-emoji/dataset-js"><code class="language-plaintext highlighter-rouge">@git-emoji/dataset-js</code></a>.</p>
<p>Hope you like this extension. 🍏</p>babakksUse this VS Code extension, called "Git-Emoji", to easily pick relevant emojis for your git commit messages.Living in the Shell #23; cut (Cut Text/Fields from Text Streams)2021-12-24T18:30:00+00:002021-12-24T18:30:00+00:00https://babakks.github.io/article/2021/12/24/ls#023-living-in-the-shell-cut<h2 id="cut-️"><code class="language-plaintext highlighter-rouge">cut</code> ✂️</h2>
<p>Cuts/extracts text/fields out of text streams.</p>
<p>⚠️ Index values are one-based.</p>
<h2 id="cut-characters-on-a-range--c">Cut characters on a range <code class="language-plaintext highlighter-rouge">-c</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">echo</span> <span class="s2">"Hello World</span><span class="se">\!\n</span><span class="s2">Goodbye</span><span class="se">\!</span><span class="s2">"</span> | <span class="nb">cut</span> <span class="nt">-c2-5</span>
</code></pre></div></div>
<blockquote>
<p>Takes characters at indices 2 through 5.</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ello
oodb
</code></pre></div> </div>
</blockquote>
<h2 id="cut-characters-on-a-half-limited-range--c">Cut characters on a half-limited range <code class="language-plaintext highlighter-rouge">-c</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">echo</span> <span class="s2">"Hello World</span><span class="se">\!\n</span><span class="s2">Goodbye</span><span class="se">\!</span><span class="s2">"</span> | <span class="nb">cut</span> <span class="nt">-c3-</span>
</code></pre></div></div>
<blockquote>
<p>Takes characters from indices 3 and afterwards.</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>llo World!
odbye!
</code></pre></div> </div>
</blockquote>
<h2 id="cut-fields-split-by-any-delimiter--f---d">Cut fields split by any delimiter <code class="language-plaintext highlighter-rouge">-f</code> & <code class="language-plaintext highlighter-rouge">-d</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">echo</span> <span class="s2">"1,20,300</span><span class="se">\n</span><span class="s2">40,500,6000</span><span class="se">\n</span><span class="s2">700,8000,90000"</span> | <span class="nb">cut</span> <span class="nt">-f2</span>,3 <span class="nt">-d</span><span class="s1">','</span>
</code></pre></div></div>
<blockquote>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>20,300
500,6000
8000,90000
</code></pre></div> </div>
</blockquote>
<h2 id="change-fields-delimiter---output-delimiter">Change fields delimiter <code class="language-plaintext highlighter-rouge">--output-delimiter</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">echo</span> <span class="s2">"1,20,300</span><span class="se">\n</span><span class="s2">40,500,6000</span><span class="se">\n</span><span class="s2">700,8000,90000"</span> | <span class="nb">cut</span> <span class="nt">-f1-</span> <span class="nt">-d</span><span class="s1">','</span> <span class="nt">--output-delimiter</span> <span class="s1">'/'</span>
</code></pre></div></div>
<blockquote>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>1/20/300
40/500/6000
700/8000/90000
</code></pre></div> </div>
</blockquote>
<h2 id="invert-selection---complement">Invert selection <code class="language-plaintext highlighter-rouge">--complement</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">echo</span> <span class="s2">"1,20,300</span><span class="se">\n</span><span class="s2">40,500,6000</span><span class="se">\n</span><span class="s2">700,8000,90000"</span> | <span class="nb">cut</span> <span class="nt">-f2</span>,3 <span class="nt">-d</span><span class="s1">','</span> <span class="nt">--complement</span>
</code></pre></div></div>
<blockquote>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>1
40
700
</code></pre></div> </div>
</blockquote>
<hr />
<p><strong><em>About Living in the Shell</em></strong><br />
<em>Obsessed with doing things in the shell, I’ve decided to share my <strong>daily</strong> struggles on living in the shell as <strong>terse</strong> but <strong>informative</strong> posts.</em></p>babakksLiving in the Shell #22; md5sum/shasum (Check/Compute MD5/SHA Checksum of Files)2021-12-23T11:30:00+00:002021-12-23T11:30:00+00:00https://babakks.github.io/article/2021/12/23/ls#022-living-in-the-shell-checksum<h2 id="md5sumshasum-️⃣"><code class="language-plaintext highlighter-rouge">md5sum</code>/<code class="language-plaintext highlighter-rouge">shasum</code> #️⃣</h2>
<p>Checks/computes MD5/SHA checksum of files.</p>
<h2 id="compute-md5-checksum-md5sum">Compute MD5 checksum <code class="language-plaintext highlighter-rouge">md5sum</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">md5sum</span> ~/.bashrc ~/.zshrc ~/.profile
</code></pre></div></div>
<blockquote>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>fc4231f666b25990eefc1c51917d7bb1 /home/babak/.bashrc
6688207953bbd9d20d487a9509a6c297 /home/babak/.zshrc
43f7dc02e7bfb5d40703b5cb94e274ce /home/babak/.profile
</code></pre></div> </div>
</blockquote>
<h2 id="compute-sha1-checksum-shasum">Compute SHA1 checksum <code class="language-plaintext highlighter-rouge">shasum</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>shasum ~/.bashrc ~/.zshrc ~/.profile
</code></pre></div></div>
<blockquote>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>499460ce753fa4b02cbb8c7e0cb61b1a9583bcd9 /home/babak/.bashrc
2f195c1d8c86cf34e4bdbd947e76fc9cb0bc900e /home/babak/.zshrc
63d1a74119f9a8a84fd930ed8341395e9ab867f0 /home/babak/.profile
</code></pre></div> </div>
</blockquote>
<h2 id="compute-other-sha-checksums--a">Compute other SHA checksums <code class="language-plaintext highlighter-rouge">-a</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>shasum <span class="nt">-a</span> 256 ~/.bashrc ~/.zshrc ~/.profile
</code></pre></div></div>
<blockquote>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>25d3d9737d0773dd6ece3a3536205784ce099314d68721eb5a865e82af66495c /home/babak/.bashrc
5db662d84b785f026d6613e7e187a4a9c9333c9a38acf49ea7a5e15f4bb203c8 /home/babak/.zshrc
4c532d3d8bb0988d61ac334b1ffc6302ba0aac350b0d5c98102c3c4c443602f9 /home/babak/.profile
</code></pre></div> </div>
<p>ℹ️ Supported SHA types are: 1 (default), 224, 256, 384, 512, 512224, 512256</p>
</blockquote>
<h2 id="create-checksums-file-for-later-checks">Create checksums file for later checks</h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>shasum ~/.bashrc ~/.zshrc ~/.profile <span class="o">></span> SHA1SUMS
<span class="nb">md5sum</span> ~/.bashrc ~/.zshrc ~/.profile <span class="o">></span> MD5SUMS
</code></pre></div></div>
<h2 id="check-checksums---check">Check checksums <code class="language-plaintext highlighter-rouge">--check</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>shasum <span class="nt">--check</span> SHA1SUMS
<span class="nb">md5sum</span> <span class="nt">--check</span> MD5SUMS
</code></pre></div></div>
<blockquote>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/home/babak/.bashrc: OK
/home/babak/.zshrc: OK
/home/babak/.profile: OK
</code></pre></div> </div>
</blockquote>
<hr />
<p><strong><em>About Living in the Shell</em></strong><br />
<em>Obsessed with doing things in the shell, I’ve decided to share my <strong>daily</strong> struggles on living in the shell as <strong>terse</strong> but <strong>informative</strong> posts.</em></p>babakksLiving in the Shell #21; head (Display File Content From Beginning)2021-12-21T19:30:00+00:002021-12-21T19:30:00+00:00https://babakks.github.io/article/2021/12/21/ls#021-living-in-the-shell-head<h2 id="head-"><code class="language-plaintext highlighter-rouge">head</code> 📜</h2>
<p>Displays file content from beginning.</p>
<h2 id="print-first-n-lines-of-a-file--n">Print first N lines of a file <code class="language-plaintext highlighter-rouge">-n</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">head</span> <span class="nt">-n</span> 5 ~/.bashrc
</code></pre></div></div>
<h2 id="print-all-but-n-last-lines--n--n">Print all but N last lines <code class="language-plaintext highlighter-rouge">-n -N</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">tail</span> <span class="nt">-n</span> <span class="nt">-3</span> ~/.bashrc
</code></pre></div></div>
<h2 id="print-first-n-bytes-of-a-file--c">Print first N bytes of a file <code class="language-plaintext highlighter-rouge">-c</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">head</span> <span class="nt">-c</span> 1k ~/.bashrc
</code></pre></div></div>
<blockquote>
<p>Prints first 1k of file binary content.</p>
</blockquote>
<h2 id="print-all-but-n-last-bytes--c--n">Print all but N last bytes <code class="language-plaintext highlighter-rouge">-c -N</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">tail</span> <span class="nt">-c</span> <span class="nt">-1k</span> ~/.bashrc
</code></pre></div></div>
<hr />
<p><strong><em>About Living in the Shell</em></strong><br />
<em>Obsessed with doing things in the shell, I’ve decided to share my <strong>daily</strong> struggles on living in the shell as <strong>terse</strong> but <strong>informative</strong> posts.</em></p>babakksLiving in the Shell #20; tail (Display/Follow File Content)2021-12-20T19:30:00+00:002021-12-20T19:30:00+00:00https://babakks.github.io/article/2021/12/20/ls#020-living-in-the-shell-tail<h2 id="tail-"><code class="language-plaintext highlighter-rouge">tail</code> ⛵</h2>
<p>Display or follow file content.</p>
<p>ℹ️ Here, <em>following</em> means streaming a file while it’s being updated (appended).</p>
<p>ℹ️ You can use <code class="language-plaintext highlighter-rouge">-c</code> in place of <code class="language-plaintext highlighter-rouge">-n</code> in the following examples, to switch to binary offset selection.</p>
<h2 id="print-bottom-n-lines-of-a-file--n">Print bottom N lines of a file <code class="language-plaintext highlighter-rouge">-n</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">tail</span> <span class="nt">-n</span> 5 ~/.bashrc
</code></pre></div></div>
<blockquote>
<p>Prints last 5 lines of <code class="language-plaintext highlighter-rouge">~/.bashrc</code></p>
</blockquote>
<h2 id="print-from-n-th-line-afterwards--n-n">Print from N-th line afterwards <code class="language-plaintext highlighter-rouge">-n +N</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">tail</span> <span class="nt">-n</span> +3 ~/.bashrc
</code></pre></div></div>
<blockquote>
<p>Prints <code class="language-plaintext highlighter-rouge">~/.bashrc</code> from the 3rd line until the end.</p>
</blockquote>
<h2 id="following-syslog-events--f">Following <code class="language-plaintext highlighter-rouge">syslog</code> events <code class="language-plaintext highlighter-rouge">-f</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">tail</span> <span class="nt">-f</span> /var/log/syslog
</code></pre></div></div>
<blockquote>
<p>Follows system logs (on Debian/Ubuntu).</p>
</blockquote>
<hr />
<p><strong><em>About Living in the Shell</em></strong><br />
<em>Obsessed with doing things in the shell, I’ve decided to share my <strong>daily</strong> struggles on living in the shell as <strong>terse</strong> but <strong>informative</strong> posts.</em></p>babakksLiving in the Shell #19; df (Report Disk Free Space)2021-12-18T18:30:00+00:002021-12-18T18:30:00+00:00https://babakks.github.io/article/2021/12/18/ls#019-living-in-the-shell-df<h2 id="df-"><code class="language-plaintext highlighter-rouge">df</code> 💾</h2>
<p>Reports disk free space.</p>
<h2 id="see-disk-free-space">See disk free space</h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">df</span>
</code></pre></div></div>
<blockquote>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 1603540 2068 1601472 1% /run
/dev/nvme0n1p3 471738592 268747932 178957944 61% /
tmpfs 8017688 327492 7690196 5% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 4096 0 4096 0% /sys/fs/cgroup
/dev/nvme0n1p1 244988 5304 239684 3% /boot/efi
tmpfs 1603536 120 1603416 1% /run/user/1000
</code></pre></div> </div>
<p>Note that the values are in kilobytes.</p>
</blockquote>
<h2 id="human-readable-size-values--h">Human-readable size values <code class="language-plaintext highlighter-rouge">-h</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">df</span> <span class="nt">-h</span>
</code></pre></div></div>
<blockquote>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Filesystem Size Used Avail Use% Mounted on
tmpfs 1.6G 2.1M 1.6G 1% /run
/dev/nvme0n1p3 450G 257G 171G 61% /
tmpfs 7.7G 313M 7.4G 4% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/nvme0n1p1 240M 5.2M 235M 3% /boot/efi
tmpfs 1.6G 120K 1.6G 1% /run/user/1000
</code></pre></div> </div>
</blockquote>
<h2 id="include-file-system-type--t">Include file-system type <code class="language-plaintext highlighter-rouge">-T</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">df</span> <span class="nt">-hT</span>
</code></pre></div></div>
<blockquote>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Filesystem Type Size Used Avail Use% Mounted on
tmpfs tmpfs 1.6G 2.1M 1.6G 1% /run
/dev/nvme0n1p3 ext4 450G 257G 171G 61% /
tmpfs tmpfs 7.7G 296M 7.4G 4% /dev/shm
tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/nvme0n1p1 vfat 240M 5.2M 235M 3% /boot/efi
tmpfs tmpfs 1.6G 120K 1.6G 1% /run/user/1000
</code></pre></div> </div>
</blockquote>
<h2 id="produce-a-grand-total---total">Produce a grand total <code class="language-plaintext highlighter-rouge">--total</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">df</span> <span class="nt">-h</span> <span class="nt">--total</span>
</code></pre></div></div>
<blockquote>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Filesystem Size Used Avail Use% Mounted on
...
total 461G 257G 182G 59% -
</code></pre></div> </div>
</blockquote>
<hr />
<p><strong><em>About Living in the Shell</em></strong><br />
<em>Obsessed with doing things in the shell, I’ve decided to share my <strong>daily</strong> struggles on living in the shell as <strong>terse</strong> but <strong>informative</strong> posts.</em></p>babakksLiving in the Shell #18; du (Report Directory Size)2021-12-17T18:45:00+00:002021-12-17T18:45:00+00:00https://babakks.github.io/article/2021/12/17/ls#018-living-in-the-shell-du<h2 id="du-"><code class="language-plaintext highlighter-rouge">du</code> 💽</h2>
<p>Reports disk usage.</p>
<h2 id="see-summarized-directory-size--s">See summarized directory size <code class="language-plaintext highlighter-rouge">-s</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">du</span> <span class="nt">-s</span> ~/Downloads
</code></pre></div></div>
<blockquote>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>11732700 /home/babak/Downloads
</code></pre></div> </div>
<p>Note that the result is in kilobytes.</p>
</blockquote>
<h2 id="human-readable-size-values--h">Human-readable size values <code class="language-plaintext highlighter-rouge">-h</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">du</span> <span class="nt">-sh</span> ~/Downloads
</code></pre></div></div>
<blockquote>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>12G /home/babak/Downloads
</code></pre></div> </div>
</blockquote>
<h2 id="exclude-files-by-pattern---exclude">Exclude files by pattern <code class="language-plaintext highlighter-rouge">--exclude</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">du</span> <span class="nt">-sh</span> <span class="nt">--exclude</span> <span class="s1">'*.iso'</span> ~/Downloads
</code></pre></div></div>
<blockquote>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>7.1G /home/babak/Downloads
</code></pre></div> </div>
</blockquote>
<h2 id="see-exhaustive-sub-directory-sizes">See exhaustive sub-directory sizes</h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">du</span> ~/Documents
</code></pre></div></div>
<h2 id="limit-recursion-depth--d">Limit recursion depth <code class="language-plaintext highlighter-rouge">-d</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">du</span> <span class="nt">-h</span> <span class="nt">-d</span> 1 ~/Documents
</code></pre></div></div>
<h2 id="include-files-in-exhaustive-size-report--a">Include files in exhaustive size report <code class="language-plaintext highlighter-rouge">-a</code></h2>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">du</span> <span class="nt">-h</span> <span class="nt">-a</span> ~/Documents
</code></pre></div></div>
<hr />
<p><strong><em>About Living in the Shell</em></strong><br />
<em>Obsessed with doing things in the shell, I’ve decided to share my <strong>daily</strong> struggles on living in the shell as <strong>terse</strong> but <strong>informative</strong> posts.</em></p>babakks