publish: Resizing 2500 photos
This commit is contained in:
parent
906484196d
commit
ccc47fb6d9
|
@ -0,0 +1,97 @@
|
|||
title: Resizing 2500 photos
|
||||
date: 2020-07-13 07:19
|
||||
tags: code, 100DaysToOffload
|
||||
summary: We needed to resize 2500 photographs for a website. There is a shell script for that.
|
||||
status: published
|
||||
comment:
|
||||
hundreddaystooffload: 18
|
||||
|
||||
I was asked to write a program to resize thousands of images which were gonna be uploaded to a website. Images had to be the same height for them to look organized in gallery. I remembered how I used [imagemagick](https://imagemagick.org/) to write [desktop-clock](https://gitlab.com/murtezayesil/student/-/tree/master/sh/desktop-clock "use imagemagick, figlet and feh for tty-clock on wallpaper"), immitate tty-clock on wallpaper. That experience helped me to design the program in my mind as we continue to speak on the phone.
|
||||
|
||||
``` sh
|
||||
/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾\
|
||||
| for each image |
|
||||
| do resize to height=800 |
|
||||
\___________________________/
|
||||
O
|
||||
o \_\_ _/_/
|
||||
. \__/
|
||||
(oo)\_______
|
||||
(__)\ )\/\
|
||||
||----w |
|
||||
|| ||
|
||||
```
|
||||
|
||||
# This is a learning opportunity
|
||||
Since I don't have much of an experience on shell scripting, I was [Duck](https://start.duckduckgo.com/ "DuckDuckGo")ing everything. I learned to do few things during this task.
|
||||
|
||||
1. [For loops in shell script](https://duckduckgo.com/?q=for+loop+shell+script "There are many tutorials")
|
||||
2. Getting [list of files](https://stackoverflow.com/questions/2437452/how-to-get-the-list-of-files-in-a-directory-in-a-shell-script "I didn't know how to use asteriks 😅️")
|
||||
3. Correct syntax for [resizing with ImageMagick](https://imagemagick.org/script/convert.php "It ain't magick but it quiet is 😉️")
|
||||
|
||||
After reading tutorials and looking at examples everything felt as simple as lego. I just needed to put them together.
|
||||
|
||||
Here is `image_shrinker.v0.1_alpha.sh` :
|
||||
|
||||
``` sh
|
||||
#!/bin/sh
|
||||
mkdir ../output
|
||||
for image in ./*
|
||||
do
|
||||
convert $image -scale 1000000x800 ../output/$image
|
||||
done
|
||||
```
|
||||
|
||||
This version has problems which I can't call "feature" 😁️ :
|
||||
|
||||
0. Resolution is hard coded. Btw, only way to define resolution is in WIDTHxHEIGHT format AFAIK.
|
||||
1. Script must be in same directory as images
|
||||
2. PWD must point to the directory where script is
|
||||
|
||||
## Adjustable resolution
|
||||
``` sh
|
||||
#!/bin/sh
|
||||
mkdir ../output
|
||||
WIDTH=$1 ; HEIGHT=$2
|
||||
|
||||
for image in ./*
|
||||
do
|
||||
convert $image -scale $WIDTHx$HEIGHT ../output/$image
|
||||
done
|
||||
```
|
||||
This fixes the hard coded resolution problem but new problem is that the user has to know that WIDTH and HEIGHT must be given. I fix that by showing correct syntax to the user and then exiting :
|
||||
|
||||
``` sh
|
||||
#!/bin/sh
|
||||
|
||||
if [ $# -lt 2 ]
|
||||
then
|
||||
echo "USAGE:"
|
||||
echo -e "\t\$IMAGE_DIRECTORY/image_shrinker.sh WIDTH HEIGHT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
WIDTH=$1 ; HEIGHT=$2
|
||||
mkdir ../output
|
||||
|
||||
for image in *
|
||||
do
|
||||
convert $image -scale $Resolution ../output/$image
|
||||
done
|
||||
```
|
||||
|
||||
Here is some other attempt to make code a bit more flexible in terms of where images can be and where output can go. Actually no but that is what I was going for 😜️
|
||||
|
||||
``` sh
|
||||
#!/bin/sh
|
||||
|
||||
DIR=`pwd`
|
||||
|
||||
for image in ./*.*
|
||||
do
|
||||
# Below code will scale images to 800px height without breaking aspect ratio
|
||||
convert $DIR/$image -scale 10000x800 -write $DIR/../output/$image
|
||||
done
|
||||
```
|
||||
|
||||
It is hard to ask for help (especially after torturing with my code) but if you would like to give me feedback and advice, reply to toot of this post.
|
|
@ -81,6 +81,8 @@
|
|||
<dd><a href="https://murtezayesil.me/digital-cleansing-nextcloud.html">Digital Cleansing - NextCloud</a></dd>
|
||||
<dt>Tue 14 July 2020</dt>
|
||||
<dd><a href="https://murtezayesil.me/digital-cleansing-identifying-services-we-use.html">Digital Cleansing - Identifying services we use</a></dd>
|
||||
<dt>Mon 13 July 2020</dt>
|
||||
<dd><a href="https://murtezayesil.me/resizing-2500-photos.html">Resizing 2500 photos</a></dd>
|
||||
<dt>Sun 12 July 2020</dt>
|
||||
<dd><a href="https://murtezayesil.me/digital-cleansing-for-better-privacy.html">Digital Cleansing For Better Privacy</a></dd>
|
||||
<dt>Fri 10 July 2020</dt>
|
||||
|
|
|
@ -127,6 +127,22 @@
|
|||
<span>| tags: <a href="https://murtezayesil.me/tag/digitalcleansing.html">digitalcleansing</a><a href="https://murtezayesil.me/tag/privacy.html">privacy</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100daystooffload</a></span> <span>| Day <strong>3</strong> of #100DaysToOffload</span>
|
||||
|
||||
|
||||
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
|
||||
</article></li>
|
||||
|
||||
<li><article class="hentry">
|
||||
<header>
|
||||
<h1><a href="https://murtezayesil.me/resizing-2500-photos.html" rel="bookmark"
|
||||
title="Permalink to Resizing 2500 photos">Resizing 2500 photos</a></h1>
|
||||
</header>
|
||||
|
||||
<div class="entry-content">
|
||||
<footer class="post-info">
|
||||
<span>Mon 13 July 2020</span>
|
||||
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
|
||||
<span>| tags: <a href="https://murtezayesil.me/tag/code.html">code</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>18</strong> of #100DaysToOffload</span>
|
||||
|
||||
|
||||
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
|
||||
</article></li>
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
</header><!-- /#banner -->
|
||||
|
||||
<section id="content" class="body">
|
||||
<h1>Authors on Ali Murteza Yesil</h1> <li><a href="https://murtezayesil.me/author/ali-murteza-yesil.html">Ali Murteza Yesil</a> (17)</li>
|
||||
<h1>Authors on Ali Murteza Yesil</h1> <li><a href="https://murtezayesil.me/author/ali-murteza-yesil.html">Ali Murteza Yesil</a> (18)</li>
|
||||
</section>
|
||||
|
||||
<section id="extras" class="body">
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
<ul>
|
||||
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a> (3)</li>
|
||||
<li><a href="https://murtezayesil.me/category/personal.html">Personal</a> (5)</li>
|
||||
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a> (9)</li>
|
||||
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a> (10)</li>
|
||||
</ul>
|
||||
<section id="extras" class="body">
|
||||
<div class="blogroll">
|
||||
|
|
|
@ -241,6 +241,22 @@ You can't play songs from your Spotify account either. Songs on Spotify/Apple Mu
|
|||
<span>| tags: <a href="https://murtezayesil.me/tag/digitalcleansing.html">digitalcleansing</a><a href="https://murtezayesil.me/tag/privacy.html">privacy</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100daystooffload</a></span> <span>| Day <strong>3</strong> of #100DaysToOffload</span>
|
||||
|
||||
|
||||
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
|
||||
</article></li>
|
||||
|
||||
<li><article class="hentry">
|
||||
<header>
|
||||
<h1><a href="https://murtezayesil.me/resizing-2500-photos.html" rel="bookmark"
|
||||
title="Permalink to Resizing 2500 photos">Resizing 2500 photos</a></h1>
|
||||
</header>
|
||||
|
||||
<div class="entry-content">
|
||||
<footer class="post-info">
|
||||
<span>Mon 13 July 2020</span>
|
||||
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
|
||||
<span>| tags: <a href="https://murtezayesil.me/tag/code.html">code</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>18</strong> of #100DaysToOffload</span>
|
||||
|
||||
|
||||
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
|
||||
</article></li>
|
||||
|
||||
|
|
|
@ -551,7 +551,91 @@ This list may get longer as I remember services I subscribed to but didn't use i
|
|||
I will start with looking for alternatives to Google Drive.</p>
|
||||
<p>If there is any other service you think I should stay away from, you can write to comment toot.<br>
|
||||
If you have written a blog post as an answer, mention that too.<br>
|
||||
If you think some of the services or softwares I mentioned here aren't that bad and I would be better of keep using them, please share why you think so. I want to keep an open mind and look at those services from your perspective too.</p></content><category term="Tech"></category><category term="digitalcleansing"></category><category term="privacy"></category><category term="100daystooffload"></category></entry><entry><title>Digital Cleansing For Better Privacy</title><link href="https://murtezayesil.me/digital-cleansing-for-better-privacy.html" rel="alternate"></link><published>2020-07-12T00:07:00+06:00</published><updated>2020-07-12T00:07:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-12:/digital-cleansing-for-better-privacy.html</id><summary type="html"><p>I am documenting my journey to claiming my digital freedom. Previously called "My Master Plan For Privacy (of my family)".</p></summary><content type="html"><p>I previously wrote about <a href="privacy_for_the_whole_family.md" title="Privacy For The Whole Family">how I got became more privacy caring individual</a> and I tooted about <a href="https://fosstodon.org/@murtezayesil/104480280886518081">My Master Plan for Privacy of My Family</a>. As I grew up, I came to realize how much we gave up on privacy for the convinience and "free" services. We are social creatures. I was using Google Photos, WhatsApp, Youtube and Instagram as much as I could and my family is doing the same. We are putting each other's privacy at stake by uploading data about each other without knowing. I decided to change that either by finding privacy focused alternatives to digital services I was using or by build server system to offer alternatives myself.</p>
|
||||
If you think some of the services or softwares I mentioned here aren't that bad and I would be better of keep using them, please share why you think so. I want to keep an open mind and look at those services from your perspective too.</p></content><category term="Tech"></category><category term="digitalcleansing"></category><category term="privacy"></category><category term="100daystooffload"></category></entry><entry><title>Resizing 2500 photos</title><link href="https://murtezayesil.me/resizing-2500-photos.html" rel="alternate"></link><published>2020-07-13T07:19:00+06:00</published><updated>2020-07-13T07:19:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-13:/resizing-2500-photos.html</id><summary type="html"><p>We needed to resize 2500 photographs for a website. There is a shell script for that.</p></summary><content type="html"><p>I was asked to write a program to resize thousands of images which were gonna be uploaded to a website. Images had to be the same height for them to look organized in gallery. I remembered how I used <a href="https://imagemagick.org/">imagemagick</a> to write <a href="https://gitlab.com/murtezayesil/student/-/tree/master/sh/desktop-clock" title="use imagemagick, figlet and feh for tty-clock on wallpaper">desktop-clock</a>, immitate tty-clock on wallpaper. That experience helped me to design the program in my mind as we continue to speak on the phone.</p>
|
||||
<div class="highlight"><pre><span></span><code>/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾<span class="se">\ </span>
|
||||
<span class="p">|</span> <span class="k">for</span> each image <span class="p">|</span>
|
||||
<span class="p">|</span> <span class="k">do</span> resize to <span class="nv">height</span><span class="o">=</span><span class="m">800</span> <span class="p">|</span>
|
||||
<span class="se">\_</span>__________________________/
|
||||
O
|
||||
o <span class="se">\_\_</span> _/_/
|
||||
. <span class="se">\_</span>_/
|
||||
<span class="o">(</span>oo<span class="o">)</span><span class="se">\_</span>______
|
||||
<span class="o">(</span>__<span class="o">)</span><span class="se">\ </span> <span class="o">)</span><span class="se">\/\</span>
|
||||
<span class="o">||</span>----w <span class="p">|</span>
|
||||
<span class="o">||</span> <span class="o">||</span>
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<h1>This is a learning opportunity</h1>
|
||||
<p>Since I don't have much of an experience on shell scripting, I was <a href="https://start.duckduckgo.com/" title="DuckDuckGo">Duck</a>ing everything. I learned to do few things during this task.</p>
|
||||
<ol>
|
||||
<li><a href="https://duckduckgo.com/?q=for+loop+shell+script" title="There are many tutorials">For loops in shell script</a></li>
|
||||
<li>Getting <a href="https://stackoverflow.com/questions/2437452/how-to-get-the-list-of-files-in-a-directory-in-a-shell-script" title="I didn't know how to use asteriks 😅️">list of files</a></li>
|
||||
<li>Correct syntax for <a href="https://imagemagick.org/script/convert.php" title="It ain't magick but it quiet is 😉️">resizing with ImageMagick</a></li>
|
||||
</ol>
|
||||
<p>After reading tutorials and looking at examples everything felt as simple as lego. I just needed to put them together. </p>
|
||||
<p>Here is <code>image_shrinker.v0.1_alpha.sh</code> :</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/sh</span>
|
||||
mkdir ../output
|
||||
<span class="k">for</span> image in ./*
|
||||
<span class="k">do</span>
|
||||
convert <span class="nv">$image</span> -scale 1000000x800 ../output/<span class="nv">$image</span>
|
||||
<span class="k">done</span>
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<p>This version has problems which I can't call "feature" 😁️ :</p>
|
||||
<ol>
|
||||
<li>Resolution is hard coded. Btw, only way to define resolution is in WIDTHxHEIGHT format AFAIK.</li>
|
||||
<li>Script must be in same directory as images</li>
|
||||
<li>PWD must point to the directory where script is</li>
|
||||
</ol>
|
||||
<h2>Adjustable resolution</h2>
|
||||
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/sh</span>
|
||||
mkdir ../output
|
||||
<span class="nv">WIDTH</span><span class="o">=</span><span class="nv">$1</span> <span class="p">;</span> <span class="nv">HEIGHT</span><span class="o">=</span><span class="nv">$2</span>
|
||||
|
||||
<span class="k">for</span> image in ./*
|
||||
<span class="k">do</span>
|
||||
convert <span class="nv">$image</span> -scale <span class="nv">$WIDTHx$HEIGHT</span> ../output/<span class="nv">$image</span>
|
||||
<span class="k">done</span>
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<p>This fixes the hard coded resolution problem but new problem is that the user has to know that WIDTH and HEIGHT must be given. I fix that by showing correct syntax to the user and then exiting :</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/sh</span>
|
||||
|
||||
<span class="k">if</span> <span class="o">[</span> <span class="nv">$#</span> -lt <span class="m">2</span> <span class="o">]</span>
|
||||
<span class="k">then</span>
|
||||
<span class="nb">echo</span> <span class="s2">&quot;USAGE:&quot;</span>
|
||||
<span class="nb">echo</span> -e <span class="s2">&quot;\t\$IMAGE_DIRECTORY/image_shrinker.sh WIDTH HEIGHT&quot;</span>
|
||||
<span class="nb">exit</span> <span class="m">1</span>
|
||||
<span class="k">fi</span>
|
||||
|
||||
<span class="nv">WIDTH</span><span class="o">=</span><span class="nv">$1</span> <span class="p">;</span> <span class="nv">HEIGHT</span><span class="o">=</span><span class="nv">$2</span>
|
||||
mkdir ../output
|
||||
|
||||
<span class="k">for</span> image in *
|
||||
<span class="k">do</span>
|
||||
convert <span class="nv">$image</span> -scale <span class="nv">$Resolution</span> ../output/<span class="nv">$image</span>
|
||||
<span class="k">done</span>
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<p>Here is some other attempt to make code a bit more flexible in terms of where images can be and where output can go. Actually no but that is what I was going for 😜️</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/sh</span>
|
||||
|
||||
<span class="nv">DIR</span><span class="o">=</span><span class="sb">`</span><span class="nb">pwd</span><span class="sb">`</span>
|
||||
|
||||
<span class="k">for</span> image in ./*.*
|
||||
<span class="k">do</span>
|
||||
<span class="c1"># Below code will scale images to 800px height without breaking aspect ratio</span>
|
||||
convert <span class="nv">$DIR</span>/<span class="nv">$image</span> -scale 10000x800 -write <span class="nv">$DIR</span>/../output/<span class="nv">$image</span>
|
||||
<span class="k">done</span>
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<p>It is hard to ask for help (especially after torturing with my code) but if you would like to give me feedback and advice, reply to toot of this post.</p></content><category term="Tech"></category><category term="code"></category><category term="100DaysToOffload"></category></entry><entry><title>Digital Cleansing For Better Privacy</title><link href="https://murtezayesil.me/digital-cleansing-for-better-privacy.html" rel="alternate"></link><published>2020-07-12T00:07:00+06:00</published><updated>2020-07-12T00:07:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-12:/digital-cleansing-for-better-privacy.html</id><summary type="html"><p>I am documenting my journey to claiming my digital freedom. Previously called "My Master Plan For Privacy (of my family)".</p></summary><content type="html"><p>I previously wrote about <a href="privacy_for_the_whole_family.md" title="Privacy For The Whole Family">how I got became more privacy caring individual</a> and I tooted about <a href="https://fosstodon.org/@murtezayesil/104480280886518081">My Master Plan for Privacy of My Family</a>. As I grew up, I came to realize how much we gave up on privacy for the convinience and "free" services. We are social creatures. I was using Google Photos, WhatsApp, Youtube and Instagram as much as I could and my family is doing the same. We are putting each other's privacy at stake by uploading data about each other without knowing. I decided to change that either by finding privacy focused alternatives to digital services I was using or by build server system to offer alternatives myself.</p>
|
||||
<p>I am not the first to do this. There are many privacy friendly alternatives developed by people who care about privacy. It isn't hard to find those <a href="https://alternativeto.net/" title="Crowdsourced Software Recomendations">alternatives</a>. Many people went through this journey, which I call "Digital Cleansing For Better Privacy". During my journey, I will document the steps I have taken and write my thoughts about the alternatives I tried.</p>
|
||||
<hr>
|
||||
<h1>Digital Cleansing For Better Privacy</h1>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -329,7 +329,91 @@ This list may get longer as I remember services I subscribed to but didn't use i
|
|||
I will start with looking for alternatives to Google Drive.</p>
|
||||
<p>If there is any other service you think I should stay away from, you can write to comment toot.<br>
|
||||
If you have written a blog post as an answer, mention that too.<br>
|
||||
If you think some of the services or softwares I mentioned here aren't that bad and I would be better of keep using them, please share why you think so. I want to keep an open mind and look at those services from your perspective too.</p></content><category term="Tech"></category><category term="digitalcleansing"></category><category term="privacy"></category><category term="100daystooffload"></category></entry><entry><title>Digital Cleansing For Better Privacy</title><link href="https://murtezayesil.me/digital-cleansing-for-better-privacy.html" rel="alternate"></link><published>2020-07-12T00:07:00+06:00</published><updated>2020-07-12T00:07:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-12:/digital-cleansing-for-better-privacy.html</id><summary type="html"><p>I am documenting my journey to claiming my digital freedom. Previously called "My Master Plan For Privacy (of my family)".</p></summary><content type="html"><p>I previously wrote about <a href="privacy_for_the_whole_family.md" title="Privacy For The Whole Family">how I got became more privacy caring individual</a> and I tooted about <a href="https://fosstodon.org/@murtezayesil/104480280886518081">My Master Plan for Privacy of My Family</a>. As I grew up, I came to realize how much we gave up on privacy for the convinience and "free" services. We are social creatures. I was using Google Photos, WhatsApp, Youtube and Instagram as much as I could and my family is doing the same. We are putting each other's privacy at stake by uploading data about each other without knowing. I decided to change that either by finding privacy focused alternatives to digital services I was using or by build server system to offer alternatives myself.</p>
|
||||
If you think some of the services or softwares I mentioned here aren't that bad and I would be better of keep using them, please share why you think so. I want to keep an open mind and look at those services from your perspective too.</p></content><category term="Tech"></category><category term="digitalcleansing"></category><category term="privacy"></category><category term="100daystooffload"></category></entry><entry><title>Resizing 2500 photos</title><link href="https://murtezayesil.me/resizing-2500-photos.html" rel="alternate"></link><published>2020-07-13T07:19:00+06:00</published><updated>2020-07-13T07:19:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-13:/resizing-2500-photos.html</id><summary type="html"><p>We needed to resize 2500 photographs for a website. There is a shell script for that.</p></summary><content type="html"><p>I was asked to write a program to resize thousands of images which were gonna be uploaded to a website. Images had to be the same height for them to look organized in gallery. I remembered how I used <a href="https://imagemagick.org/">imagemagick</a> to write <a href="https://gitlab.com/murtezayesil/student/-/tree/master/sh/desktop-clock" title="use imagemagick, figlet and feh for tty-clock on wallpaper">desktop-clock</a>, immitate tty-clock on wallpaper. That experience helped me to design the program in my mind as we continue to speak on the phone.</p>
|
||||
<div class="highlight"><pre><span></span><code>/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾<span class="se">\ </span>
|
||||
<span class="p">|</span> <span class="k">for</span> each image <span class="p">|</span>
|
||||
<span class="p">|</span> <span class="k">do</span> resize to <span class="nv">height</span><span class="o">=</span><span class="m">800</span> <span class="p">|</span>
|
||||
<span class="se">\_</span>__________________________/
|
||||
O
|
||||
o <span class="se">\_\_</span> _/_/
|
||||
. <span class="se">\_</span>_/
|
||||
<span class="o">(</span>oo<span class="o">)</span><span class="se">\_</span>______
|
||||
<span class="o">(</span>__<span class="o">)</span><span class="se">\ </span> <span class="o">)</span><span class="se">\/\</span>
|
||||
<span class="o">||</span>----w <span class="p">|</span>
|
||||
<span class="o">||</span> <span class="o">||</span>
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<h1>This is a learning opportunity</h1>
|
||||
<p>Since I don't have much of an experience on shell scripting, I was <a href="https://start.duckduckgo.com/" title="DuckDuckGo">Duck</a>ing everything. I learned to do few things during this task.</p>
|
||||
<ol>
|
||||
<li><a href="https://duckduckgo.com/?q=for+loop+shell+script" title="There are many tutorials">For loops in shell script</a></li>
|
||||
<li>Getting <a href="https://stackoverflow.com/questions/2437452/how-to-get-the-list-of-files-in-a-directory-in-a-shell-script" title="I didn't know how to use asteriks 😅️">list of files</a></li>
|
||||
<li>Correct syntax for <a href="https://imagemagick.org/script/convert.php" title="It ain't magick but it quiet is 😉️">resizing with ImageMagick</a></li>
|
||||
</ol>
|
||||
<p>After reading tutorials and looking at examples everything felt as simple as lego. I just needed to put them together. </p>
|
||||
<p>Here is <code>image_shrinker.v0.1_alpha.sh</code> :</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/sh</span>
|
||||
mkdir ../output
|
||||
<span class="k">for</span> image in ./*
|
||||
<span class="k">do</span>
|
||||
convert <span class="nv">$image</span> -scale 1000000x800 ../output/<span class="nv">$image</span>
|
||||
<span class="k">done</span>
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<p>This version has problems which I can't call "feature" 😁️ :</p>
|
||||
<ol>
|
||||
<li>Resolution is hard coded. Btw, only way to define resolution is in WIDTHxHEIGHT format AFAIK.</li>
|
||||
<li>Script must be in same directory as images</li>
|
||||
<li>PWD must point to the directory where script is</li>
|
||||
</ol>
|
||||
<h2>Adjustable resolution</h2>
|
||||
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/sh</span>
|
||||
mkdir ../output
|
||||
<span class="nv">WIDTH</span><span class="o">=</span><span class="nv">$1</span> <span class="p">;</span> <span class="nv">HEIGHT</span><span class="o">=</span><span class="nv">$2</span>
|
||||
|
||||
<span class="k">for</span> image in ./*
|
||||
<span class="k">do</span>
|
||||
convert <span class="nv">$image</span> -scale <span class="nv">$WIDTHx$HEIGHT</span> ../output/<span class="nv">$image</span>
|
||||
<span class="k">done</span>
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<p>This fixes the hard coded resolution problem but new problem is that the user has to know that WIDTH and HEIGHT must be given. I fix that by showing correct syntax to the user and then exiting :</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/sh</span>
|
||||
|
||||
<span class="k">if</span> <span class="o">[</span> <span class="nv">$#</span> -lt <span class="m">2</span> <span class="o">]</span>
|
||||
<span class="k">then</span>
|
||||
<span class="nb">echo</span> <span class="s2">&quot;USAGE:&quot;</span>
|
||||
<span class="nb">echo</span> -e <span class="s2">&quot;\t\$IMAGE_DIRECTORY/image_shrinker.sh WIDTH HEIGHT&quot;</span>
|
||||
<span class="nb">exit</span> <span class="m">1</span>
|
||||
<span class="k">fi</span>
|
||||
|
||||
<span class="nv">WIDTH</span><span class="o">=</span><span class="nv">$1</span> <span class="p">;</span> <span class="nv">HEIGHT</span><span class="o">=</span><span class="nv">$2</span>
|
||||
mkdir ../output
|
||||
|
||||
<span class="k">for</span> image in *
|
||||
<span class="k">do</span>
|
||||
convert <span class="nv">$image</span> -scale <span class="nv">$Resolution</span> ../output/<span class="nv">$image</span>
|
||||
<span class="k">done</span>
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<p>Here is some other attempt to make code a bit more flexible in terms of where images can be and where output can go. Actually no but that is what I was going for 😜️</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/sh</span>
|
||||
|
||||
<span class="nv">DIR</span><span class="o">=</span><span class="sb">`</span><span class="nb">pwd</span><span class="sb">`</span>
|
||||
|
||||
<span class="k">for</span> image in ./*.*
|
||||
<span class="k">do</span>
|
||||
<span class="c1"># Below code will scale images to 800px height without breaking aspect ratio</span>
|
||||
convert <span class="nv">$DIR</span>/<span class="nv">$image</span> -scale 10000x800 -write <span class="nv">$DIR</span>/../output/<span class="nv">$image</span>
|
||||
<span class="k">done</span>
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<p>It is hard to ask for help (especially after torturing with my code) but if you would like to give me feedback and advice, reply to toot of this post.</p></content><category term="Tech"></category><category term="code"></category><category term="100DaysToOffload"></category></entry><entry><title>Digital Cleansing For Better Privacy</title><link href="https://murtezayesil.me/digital-cleansing-for-better-privacy.html" rel="alternate"></link><published>2020-07-12T00:07:00+06:00</published><updated>2020-07-12T00:07:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-12:/digital-cleansing-for-better-privacy.html</id><summary type="html"><p>I am documenting my journey to claiming my digital freedom. Previously called "My Master Plan For Privacy (of my family)".</p></summary><content type="html"><p>I previously wrote about <a href="privacy_for_the_whole_family.md" title="Privacy For The Whole Family">how I got became more privacy caring individual</a> and I tooted about <a href="https://fosstodon.org/@murtezayesil/104480280886518081">My Master Plan for Privacy of My Family</a>. As I grew up, I came to realize how much we gave up on privacy for the convinience and "free" services. We are social creatures. I was using Google Photos, WhatsApp, Youtube and Instagram as much as I could and my family is doing the same. We are putting each other's privacy at stake by uploading data about each other without knowing. I decided to change that either by finding privacy focused alternatives to digital services I was using or by build server system to offer alternatives myself.</p>
|
||||
<p>I am not the first to do this. There are many privacy friendly alternatives developed by people who care about privacy. It isn't hard to find those <a href="https://alternativeto.net/" title="Crowdsourced Software Recomendations">alternatives</a>. Many people went through this journey, which I call "Digital Cleansing For Better Privacy". During my journey, I will document the steps I have taken and write my thoughts about the alternatives I tried.</p>
|
||||
<hr>
|
||||
<h1>Digital Cleansing For Better Privacy</h1>
|
||||
|
|
|
@ -127,6 +127,22 @@
|
|||
<span>| tags: <a href="https://murtezayesil.me/tag/digitalcleansing.html">digitalcleansing</a><a href="https://murtezayesil.me/tag/privacy.html">privacy</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100daystooffload</a></span> <span>| Day <strong>3</strong> of #100DaysToOffload</span>
|
||||
|
||||
|
||||
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
|
||||
</article></li>
|
||||
|
||||
<li><article class="hentry">
|
||||
<header>
|
||||
<h1><a href="https://murtezayesil.me/resizing-2500-photos.html" rel="bookmark"
|
||||
title="Permalink to Resizing 2500 photos">Resizing 2500 photos</a></h1>
|
||||
</header>
|
||||
|
||||
<div class="entry-content">
|
||||
<footer class="post-info">
|
||||
<span>Mon 13 July 2020</span>
|
||||
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
|
||||
<span>| tags: <a href="https://murtezayesil.me/tag/code.html">code</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>18</strong> of #100DaysToOffload</span>
|
||||
|
||||
|
||||
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
|
||||
</article></li>
|
||||
|
||||
|
|
|
@ -0,0 +1,214 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Resizing 2500 photos</title>
|
||||
<link rel="stylesheet" href="https://murtezayesil.me/theme/css/main.css" />
|
||||
<link href="https://murtezayesil.me/feeds/atom.xml" type="application/atom+xml" rel="alternate" title="Ali Murteza Yesil Atom Feed" />
|
||||
<link href="https://murtezayesil.me/feeds/rss.xml" type="application/rss+xml" rel="alternate" title="Ali Murteza Yesil RSS Feed" />
|
||||
|
||||
<!-- This border added via BLACK_LIVES_MATTER toggle in site settings -->
|
||||
<style>
|
||||
body {
|
||||
border-width: 5em ;
|
||||
border-color: #000000 ;
|
||||
border-style: none solid solid solid ; /* top border : none, right bottom left : solid */
|
||||
}
|
||||
</style>
|
||||
|
||||
<!--[if IE]>
|
||||
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
|
||||
<body id="index" class="home">
|
||||
|
||||
<!-- This banner added via BLACK_LIVES_MATTER toggle in site settings -->
|
||||
<div style="background-color: black; padding: 1em; margin-bottom: .8em">
|
||||
<h1 style="text-align: center; margin-bottom: 0em"><a href="https://blacklivesmatter.com/" style="color: #fce21b; font-size: 2em">Black Lives Matter</a></h1>
|
||||
</div>
|
||||
<header id="banner" class="body">
|
||||
<h1><a href="https://murtezayesil.me/">Ali Murteza Yesil <strong>Blog</strong></a></h1>
|
||||
<nav><ul>
|
||||
|
||||
<li><a href="https://murtezayesil.me/pages/about.html">About</a></li>
|
||||
|
||||
<li><a href="https://murtezayesil.me/pages/contact.html">Contact</a></li>
|
||||
</ul>
|
||||
<form id="search" action"#" onsubmit="javascript:window.open('https://duckduckgo.com/?q='+document.getElementById('keywords').value+'+site:https://murtezayesil.me');">
|
||||
<input id="keywords" type="text" />
|
||||
</form>
|
||||
</nav>
|
||||
<div id="submenu">
|
||||
<ul>
|
||||
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
|
||||
<li><a href="https://murtezayesil.me/category/personal.html">Personal</a></li>
|
||||
<li class="active"><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
|
||||
</ul>
|
||||
<div>
|
||||
</header><!-- /#banner -->
|
||||
<section id="content" class="body">
|
||||
<article>
|
||||
<header>
|
||||
<h1 class="entry-title">
|
||||
<a href="https://murtezayesil.me/resizing-2500-photos.html" rel="bookmark"
|
||||
title="Permalink to Resizing 2500 photos">Resizing 2500 photos</a></h1>
|
||||
</header>
|
||||
|
||||
<div class="entry-content">
|
||||
<footer class="post-info">
|
||||
<span>Mon 13 July 2020</span>
|
||||
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
|
||||
<span>| tags: <a href="https://murtezayesil.me/tag/code.html">code</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>18</strong> of #100DaysToOffload</span>
|
||||
|
||||
|
||||
</footer><!-- /.post-info --> <p>I was asked to write a program to resize thousands of images which were gonna be uploaded to a website. Images had to be the same height for them to look organized in gallery. I remembered how I used <a href="https://imagemagick.org/">imagemagick</a> to write <a href="https://gitlab.com/murtezayesil/student/-/tree/master/sh/desktop-clock" title="use imagemagick, figlet and feh for tty-clock on wallpaper">desktop-clock</a>, immitate tty-clock on wallpaper. That experience helped me to design the program in my mind as we continue to speak on the phone.</p>
|
||||
<div class="highlight"><pre><span></span><code>/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾<span class="se">\ </span>
|
||||
<span class="p">|</span> <span class="k">for</span> each image <span class="p">|</span>
|
||||
<span class="p">|</span> <span class="k">do</span> resize to <span class="nv">height</span><span class="o">=</span><span class="m">800</span> <span class="p">|</span>
|
||||
<span class="se">\_</span>__________________________/
|
||||
O
|
||||
o <span class="se">\_\_</span> _/_/
|
||||
. <span class="se">\_</span>_/
|
||||
<span class="o">(</span>oo<span class="o">)</span><span class="se">\_</span>______
|
||||
<span class="o">(</span>__<span class="o">)</span><span class="se">\ </span> <span class="o">)</span><span class="se">\/\</span>
|
||||
<span class="o">||</span>----w <span class="p">|</span>
|
||||
<span class="o">||</span> <span class="o">||</span>
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<h1>This is a learning opportunity</h1>
|
||||
<p>Since I don't have much of an experience on shell scripting, I was <a href="https://start.duckduckgo.com/" title="DuckDuckGo">Duck</a>ing everything. I learned to do few things during this task.</p>
|
||||
<ol>
|
||||
<li><a href="https://duckduckgo.com/?q=for+loop+shell+script" title="There are many tutorials">For loops in shell script</a></li>
|
||||
<li>Getting <a href="https://stackoverflow.com/questions/2437452/how-to-get-the-list-of-files-in-a-directory-in-a-shell-script" title="I didn't know how to use asteriks 😅️">list of files</a></li>
|
||||
<li>Correct syntax for <a href="https://imagemagick.org/script/convert.php" title="It ain't magick but it quiet is 😉️">resizing with ImageMagick</a></li>
|
||||
</ol>
|
||||
<p>After reading tutorials and looking at examples everything felt as simple as lego. I just needed to put them together. </p>
|
||||
<p>Here is <code>image_shrinker.v0.1_alpha.sh</code> :</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/sh</span>
|
||||
mkdir ../output
|
||||
<span class="k">for</span> image in ./*
|
||||
<span class="k">do</span>
|
||||
convert <span class="nv">$image</span> -scale 1000000x800 ../output/<span class="nv">$image</span>
|
||||
<span class="k">done</span>
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<p>This version has problems which I can't call "feature" 😁️ :</p>
|
||||
<ol>
|
||||
<li>Resolution is hard coded. Btw, only way to define resolution is in WIDTHxHEIGHT format AFAIK.</li>
|
||||
<li>Script must be in same directory as images</li>
|
||||
<li>PWD must point to the directory where script is</li>
|
||||
</ol>
|
||||
<h2>Adjustable resolution</h2>
|
||||
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/sh</span>
|
||||
mkdir ../output
|
||||
<span class="nv">WIDTH</span><span class="o">=</span><span class="nv">$1</span> <span class="p">;</span> <span class="nv">HEIGHT</span><span class="o">=</span><span class="nv">$2</span>
|
||||
|
||||
<span class="k">for</span> image in ./*
|
||||
<span class="k">do</span>
|
||||
convert <span class="nv">$image</span> -scale <span class="nv">$WIDTHx$HEIGHT</span> ../output/<span class="nv">$image</span>
|
||||
<span class="k">done</span>
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<p>This fixes the hard coded resolution problem but new problem is that the user has to know that WIDTH and HEIGHT must be given. I fix that by showing correct syntax to the user and then exiting :</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/sh</span>
|
||||
|
||||
<span class="k">if</span> <span class="o">[</span> <span class="nv">$#</span> -lt <span class="m">2</span> <span class="o">]</span>
|
||||
<span class="k">then</span>
|
||||
<span class="nb">echo</span> <span class="s2">"USAGE:"</span>
|
||||
<span class="nb">echo</span> -e <span class="s2">"\t\$IMAGE_DIRECTORY/image_shrinker.sh WIDTH HEIGHT"</span>
|
||||
<span class="nb">exit</span> <span class="m">1</span>
|
||||
<span class="k">fi</span>
|
||||
|
||||
<span class="nv">WIDTH</span><span class="o">=</span><span class="nv">$1</span> <span class="p">;</span> <span class="nv">HEIGHT</span><span class="o">=</span><span class="nv">$2</span>
|
||||
mkdir ../output
|
||||
|
||||
<span class="k">for</span> image in *
|
||||
<span class="k">do</span>
|
||||
convert <span class="nv">$image</span> -scale <span class="nv">$Resolution</span> ../output/<span class="nv">$image</span>
|
||||
<span class="k">done</span>
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<p>Here is some other attempt to make code a bit more flexible in terms of where images can be and where output can go. Actually no but that is what I was going for 😜️</p>
|
||||
<div class="highlight"><pre><span></span><code><span class="ch">#!/bin/sh</span>
|
||||
|
||||
<span class="nv">DIR</span><span class="o">=</span><span class="sb">`</span><span class="nb">pwd</span><span class="sb">`</span>
|
||||
|
||||
<span class="k">for</span> image in ./*.*
|
||||
<span class="k">do</span>
|
||||
<span class="c1"># Below code will scale images to 800px height without breaking aspect ratio</span>
|
||||
convert <span class="nv">$DIR</span>/<span class="nv">$image</span> -scale 10000x800 -write <span class="nv">$DIR</span>/../output/<span class="nv">$image</span>
|
||||
<span class="k">done</span>
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<p>It is hard to ask for help (especially after torturing with my code) but if you would like to give me feedback and advice, reply to toot of this post.</p>
|
||||
</div><!-- /.entry-content -->
|
||||
|
||||
<!-- #100DaysToOffload message -->
|
||||
<p>Day <strong>18</strong> of <a href="https://100daystooffload.com/" title="click to read about the challenge">#100DaysToOffload</a></p>
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</section>
|
||||
<section id="extras" class="body">
|
||||
<div class="blogroll">
|
||||
<h2>blogroll</h2>
|
||||
<ul>
|
||||
<li><a href="https://kevq.uk">Kev Quirk</a></li>
|
||||
<li><a href="https://mikestone.me">Mike Stone</a></li>
|
||||
<li><a href="https://yarmo.eu/">Yarmo Mackenbach</a></li>
|
||||
</ul>
|
||||
</div><!-- /.blogroll -->
|
||||
<div class="social">
|
||||
<h2>social</h2>
|
||||
<ul>
|
||||
<li><a href="https://murtezayesil.me/feeds/atom.xml" type="application/atom+xml" rel="alternate">atom feed</a></li>
|
||||
<li><a href="https://murtezayesil.me/feeds/rss.xml" type="application/rss+xml" rel="alternate">rss feed</a></li>
|
||||
|
||||
<li><a href="https://fosstodon.org/@murtezayesil" rel="me">Fostodon</a></li>
|
||||
</ul>
|
||||
</div><!-- /.social -->
|
||||
</section><!-- /#extras -->
|
||||
|
||||
<footer id="contentinfo" class="body">
|
||||
<p>Powered by <a href="http://getpelican.com/">Pelican</a>. Theme <a href="https://github.com/blueicefield/pelican-blueidea/">blueidea</a>, inspired by the default theme.</p>
|
||||
</footer><!-- /#contentinfo -->
|
||||
|
||||
|
||||
<!-- IndieWeb Profile -->
|
||||
<!-- ToDo : Make IndieWeb Profile auto generating according to site preferences -->
|
||||
<!-- This profile is created by following https://kevq.uk/how-to-create-an-indieweb-profile/ blog post. Thanks to Kev Quirk -->
|
||||
<section style="display: none;" class="h-card">
|
||||
|
||||
<!-- About me -->
|
||||
<span class="p-name">Ali Murteza Yesil</span>
|
||||
<span class="p-note">I'm a student, privacy advocate and SysAdmin wannabe. I was born in Turkey but I live abroad.</span>
|
||||
|
||||
<!-- Profile picture -->
|
||||
<img class="u-photo" src="https://murtezayesil.me/images/avatar_polygon_1.png"/>
|
||||
|
||||
<!-- My location -->
|
||||
<!-- <span class="p-locality">City, Country or Country</span> -->
|
||||
|
||||
<!-- Links -->
|
||||
<a class="u-url u-uid" href="https://murtezayesil.me"></a>
|
||||
<!-- Mail Template <a class="u-email" rel="me" href="mailto:USERNAME@SERVICEPROVIDER"></a> -->
|
||||
<a class="u-url" rel="me" href="https://fosstodon.org/@murtezayesil"></a>
|
||||
<!-- Twitter Example <a class="u-url" rel="me" href="https://twitter.com/USERNAME"></a> -->
|
||||
<!-- Template <a class="u-url" rel="me" href="https://URL"></a> -->
|
||||
|
||||
<!-- Categories -->
|
||||
<span class="p-category">Blogging</span>
|
||||
<span class="p-category">Open Source Software</span>
|
||||
<span class="p-category">Privacy</span>
|
||||
|
||||
</section>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -127,6 +127,22 @@
|
|||
<span>| tags: <a href="https://murtezayesil.me/tag/digitalcleansing.html">digitalcleansing</a><a href="https://murtezayesil.me/tag/privacy.html">privacy</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100daystooffload</a></span> <span>| Day <strong>3</strong> of #100DaysToOffload</span>
|
||||
|
||||
|
||||
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
|
||||
</article></li>
|
||||
|
||||
<li><article class="hentry">
|
||||
<header>
|
||||
<h1><a href="https://murtezayesil.me/resizing-2500-photos.html" rel="bookmark"
|
||||
title="Permalink to Resizing 2500 photos">Resizing 2500 photos</a></h1>
|
||||
</header>
|
||||
|
||||
<div class="entry-content">
|
||||
<footer class="post-info">
|
||||
<span>Mon 13 July 2020</span>
|
||||
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
|
||||
<span>| tags: <a href="https://murtezayesil.me/tag/code.html">code</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>18</strong> of #100DaysToOffload</span>
|
||||
|
||||
|
||||
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
|
||||
</article></li>
|
||||
|
||||
|
|
|
@ -89,11 +89,30 @@
|
|||
<h2>Comments</h2>
|
||||
<p>Toot on <a href="https://fosstodon.org/@murtezayesil/104552527725862495">this thread</a> to comment. This blog is a static site. Comments won't appear here.</p>
|
||||
</article>
|
||||
</aside><!-- /#featured -->
|
||||
<section id="content" class="body">
|
||||
<h1>Other articles</h1>
|
||||
<ol id="posts-list" class="hfeed">
|
||||
|
||||
<li><article class="hentry">
|
||||
<header>
|
||||
<h1><a href="https://murtezayesil.me/resizing-2500-photos.html" rel="bookmark"
|
||||
title="Permalink to Resizing 2500 photos">Resizing 2500 photos</a></h1>
|
||||
</header>
|
||||
|
||||
<div class="entry-content">
|
||||
<footer class="post-info">
|
||||
<span>Mon 13 July 2020</span>
|
||||
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
|
||||
<span>| tags: <a href="https://murtezayesil.me/tag/code.html">code</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>18</strong> of #100DaysToOffload</span>
|
||||
|
||||
|
||||
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
|
||||
</article></li>
|
||||
</ol><!-- /#posts-list -->
|
||||
<p class="paginator">
|
||||
Page 1 / 1
|
||||
</p>
|
||||
</aside><!-- /#featured -->
|
||||
</ol><!-- /#posts-list -->
|
||||
</section><!-- /#content -->
|
||||
<section id="extras" class="body">
|
||||
<div class="blogroll">
|
||||
|
|
|
@ -49,9 +49,9 @@
|
|||
</header><!-- /#banner -->
|
||||
|
||||
<section id="content" class="body">
|
||||
<h1>Tags for Ali Murteza Yesil</h1> <li><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a> (17)</li>
|
||||
<h1>Tags for Ali Murteza Yesil</h1> <li><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a> (18)</li>
|
||||
<li><a href="https://murtezayesil.me/tag/android.html">android</a> (1)</li>
|
||||
<li><a href="https://murtezayesil.me/tag/code.html">code</a> (1)</li>
|
||||
<li><a href="https://murtezayesil.me/tag/code.html">code</a> (2)</li>
|
||||
<li><a href="https://murtezayesil.me/tag/digitalcleansing.html">digitalcleansing</a> (6)</li>
|
||||
<li><a href="https://murtezayesil.me/tag/distros.html">distros</a> (2)</li>
|
||||
<li><a href="https://murtezayesil.me/tag/fediverse.html">fediverse</a> (1)</li>
|
||||
|
|
Reference in New Issue