published: is not set

This commit is contained in:
Ali Mürteza Yeşil 2020-07-22 22:37:20 +06:00
parent 594ed2a7ab
commit 87928c42aa
43 changed files with 1202 additions and 208 deletions

View File

@ -0,0 +1,68 @@
title: $ADB_VENDOR_KEYS is not set
date: 2020-07-22
tags: android, error, 100DaysToOffload
category: Tech
summary: Authorizing adb when no prompt will come, the hard way.
status: published
comment:
hundreddaystooffload: 7
## Story
I like [scrcpy](https://github.com/Genymobile/scrcpy "scrcpy by Genymobile - GitHub"). It allows me to cast my phone to computer and use it ther thanks to cable technology (wifi works too). So, after hopping to <img src="https://fosstodon.b-cdn.net/custom_emojis/images/000/025/123/static/a76f54a7dbcd8afd.png" width="15em" height="15em"> Pop_OS! I reinstalled adb and scrcpy.
But this time scrcpy didn't work. Instead it throw this error:
<blockquote style="font-style: normal;">
<code>
adb: error: failed to get feature set: device unauthorized.
This adb server's $ADB_VENDOR_KEYS is not set
Try 'adb kill-server' if that seems wrong.
Otherwise check for a confirmation dialog on your device.
ERROR: "adb push" returned with value 1
</code>
</blockquote>
## Easy way | Grant access using prompt on the phone
After enabling [USB debugging in Developer options](https://www.howtogeek.com/129728/how-to-access-the-developer-options-menu-and-enable-usb-debugging-on-android-4.2/) connect phone to computer and run `scrcpy`. Phone should prompt you for granting access to computer. All you have to do is accept and connection will be granted 🎉️
---
This prompt didn't appear on my phone. As it turns out, that prompt doesn't works as expected on some custom ROMS. After some digging online, I came across [this answer on stack __overflow__](https://stackoverflow.com/a/26309956). Which leads to a [commit message for (new) adb authentication](https://android.googlesource.com/platform/system/core/+/d5fcafaf41f8ec90986c813f75ec78402096af2d) implemented in 2012. This prompt copies ~/.android/adbkey.pub on computer, `$ADB_VENDOR_KEYS`, to `/data/misc/adb/adb_keys` file in phone's memory. since prompt isn't working for me I have to add that key manually 😕️
## Littler harder way | copy-paste using Termux + root
Since `/data/misc/adb/adb_keys` file is offlimits for the user, we need root priviledges for this method.
1. Copy ~/.android/adbkey.pub to phone's memory
2. Open Termux and install sudo > `pkg install tsu`
3. Navigate to where file adbkey.pub is. I'm using Redmi Note 4 and its `/sdcard` directory is used for .
File is at `/sdcard/adbkey.pub` in my case > `cd /sdcard`
4. Copy `adbkey.pub` to `/data/misc/adb/adb_keys` with sudo priviledges > `sudo cp adbkey.pub /data/misc/adb/adb_keys`
5. Double check if content of `/data/misc/adb/adb_keys` on phone and `~/.android/adbkey.pub` on computer are the same
6. Enjoy 😊️
<video width="720" height="auto" controls="controls">
<source src="https:///home/murteza/Virtual/Blog/output/videos/copying_adb_vendor_keys_using_termux_and_root.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
---
## Hard way | copy-paste using TWRP
This is the "no-root" hard method. You will still need root priviledges to edit `/data/misc/adb/adb_keys`. If your phone isn't rooted but has TWRP, GREAT. TWRP has root priviledges and a file manager.
1. Boot into TWRP by holding Vol+ and Power keys while the phone is turned off.
2. Connect phone to computer
3. Copy ~/.android/adbkey.pub to phone's memory
3. Go to Advanced > File manager
4. Navigate to where adbkey.pub was copied to. I am using Redmi Note 4 and MTP connects to `/sdcard` on this device.
5. Copy `adbkey.pub` to `/data/misc/adb/adb_keys`
6. Delete `adb_keys` in
7. Rename `adbkey.pub` to `abd_keys`
8. Double check if content of `/data/misc/adb/adb_keys` on phone and `~/.android/adbkey.pub` on computer are the same
9. Enjoy 😊️
![SCRCPY is casting Android phone's screen on to computer after manually copying computer's adbkey.pub file to phone's adb_keys file](images/scrcpy_casting_android_to_computer.png "scrcpy is finally working")
---
It was a little annoying adventure for me to find where the adbkey.pub suppose to go. I am not immitated with having to do that thing manually. I was annoyed that this information isn't out there in Android documentations and requires reading answers from 2014 on stack__overflow__.
### I hope this guide was helpful to you 😉️

View File

@ -0,0 +1,2 @@
title: Swap on SSD done right
date: 2020-07-26

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

View File

@ -0,0 +1,180 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>$ADB_VENDOR_KEYS is not set</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/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</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/adb_vendor_keys-is-not-set.html" rel="bookmark"
title="Permalink to $ADB_VENDOR_KEYS is not set">$ADB_VENDOR_KEYS is not set</a></h1>
</header>
<div class="entry-content">
<footer class="post-info">
<span>Wed 22 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
<span>| tags: <a href="https://murtezayesil.me/tag/android.html">android</a><a href="https://murtezayesil.me/tag/error.html">error</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>7</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --> <h2>Story</h2>
<p>I like <a href="https://github.com/Genymobile/scrcpy" title="scrcpy by Genymobile - GitHub">scrcpy</a>. It allows me to cast my phone to computer and use it ther thanks to cable technology (wifi works too). So, after hopping to <img src="https://fosstodon.b-cdn.net/custom_emojis/images/000/025/123/static/a76f54a7dbcd8afd.png" width="15em" height="15em"> Pop_OS! I reinstalled adb and scrcpy.
But this time scrcpy didn't work. Instead it throw this error:<br>
<blockquote style="font-style: normal;">
<code>
adb: error: failed to get feature set: device unauthorized.<br>
This adb server's $ADB_VENDOR_KEYS is not set<br>
Try 'adb kill-server' if that seems wrong.<br>
Otherwise check for a confirmation dialog on your device.<br>
ERROR: "adb push" returned with value 1
</code>
</blockquote> </p>
<h2>Easy way | Grant access using prompt on the phone</h2>
<p>After enabling <a href="https://www.howtogeek.com/129728/how-to-access-the-developer-options-menu-and-enable-usb-debugging-on-android-4.2/">USB debugging in Developer options</a> connect phone to computer and run <code>scrcpy</code>. Phone should prompt you for granting access to computer. All you have to do is accept and connection will be granted 🎉️</p>
<hr>
<p>This prompt didn't appear on my phone. As it turns out, that prompt doesn't works as expected on some custom ROMS. After some digging online, I came across <a href="https://stackoverflow.com/a/26309956">this answer on stack <strong>overflow</strong></a>. Which leads to a <a href="https://android.googlesource.com/platform/system/core/+/d5fcafaf41f8ec90986c813f75ec78402096af2d">commit message for (new) adb authentication</a> implemented in 2012. This prompt copies ~/.android/adbkey.pub on computer, <code>$ADB_VENDOR_KEYS</code>, to <code>/data/misc/adb/adb_keys</code> file in phone's memory. since prompt isn't working for me I have to add that key manually 😕️</p>
<h2>Littler harder way | copy-paste using Termux + root</h2>
<p>Since <code>/data/misc/adb/adb_keys</code> file is offlimits for the user, we need root priviledges for this method.</p>
<ol>
<li>Copy ~/.android/adbkey.pub to phone's memory</li>
<li>Open Termux and install sudo &gt; <code>pkg install tsu</code></li>
<li>Navigate to where file adbkey.pub is. I'm using Redmi Note 4 and its <code>/sdcard</code> directory is used for .<br>
File is at <code>/sdcard/adbkey.pub</code> in my case &gt; <code>cd /sdcard</code></li>
<li>Copy <code>adbkey.pub</code> to <code>/data/misc/adb/adb_keys</code> with sudo priviledges &gt; <code>sudo cp adbkey.pub /data/misc/adb/adb_keys</code> </li>
<li>Double check if content of <code>/data/misc/adb/adb_keys</code> on phone and <code>~/.android/adbkey.pub</code> on computer are the same</li>
<li>Enjoy 😊️</li>
</ol>
<video width="720" height="auto" controls="controls">
<source src="https:///home/murteza/Virtual/Blog/output/videos/copying_adb_vendor_keys_using_termux_and_root.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<hr>
<h2>Hard way | copy-paste using TWRP</h2>
<p>This is the "no-root" hard method. You will still need root priviledges to edit <code>/data/misc/adb/adb_keys</code>. If your phone isn't rooted but has TWRP, GREAT. TWRP has root priviledges and a file manager.</p>
<ol>
<li>Boot into TWRP by holding Vol+ and Power keys while the phone is turned off.</li>
<li>Connect phone to computer</li>
<li>Copy ~/.android/adbkey.pub to phone's memory</li>
<li>Go to Advanced &gt; File manager</li>
<li>Navigate to where adbkey.pub was copied to. I am using Redmi Note 4 and MTP connects to <code>/sdcard</code> on this device.</li>
<li>Copy <code>adbkey.pub</code> to <code>/data/misc/adb/adb_keys</code></li>
<li>Delete <code>adb_keys</code> in </li>
<li>Rename <code>adbkey.pub</code> to <code>abd_keys</code></li>
<li>Double check if content of <code>/data/misc/adb/adb_keys</code> on phone and <code>~/.android/adbkey.pub</code> on computer are the same</li>
<li>Enjoy 😊️</li>
</ol>
<p><img alt="SCRCPY is casting Android phone's screen on to computer after manually copying computer's adbkey.pub file to phone's adb_keys file" src="images/scrcpy_casting_android_to_computer.png" title="scrcpy is finally working"></p>
<hr>
<p>It was a little annoying adventure for me to find where the adbkey.pub suppose to go. I am not immitated with having to do that thing manually. I was annoyed that this information isn't out there in Android documentations and requires reading answers from 2014 on stack__overflow__.</p>
<h3>I hope this guide was helpful to you 😉️</h3>
</div><!-- /.entry-content -->
<!-- #100DaysToOffload message -->
<p>Day <strong>7</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>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>
@ -50,6 +51,10 @@
<h1>Archives for Ali Murteza Yesil</h1>
<dl>
<dt>Sun 26 July 2020</dt>
<dd><a href="https://murtezayesil.me/swap-on-ssd-done-right.html">Swap on SSD done right</a></dd>
<dt>Wed 22 July 2020</dt>
<dd><a href="https://murtezayesil.me/adb_vendor_keys-is-not-set.html">$ADB_VENDOR_KEYS is not set</a></dd>
<dt>Mon 20 July 2020</dt>
<dd><a href="https://murtezayesil.me/fizzbuzz-with-single-semicolon.html">FizzBuzz with single semicolon</a></dd>
<dt>Sat 18 July 2020</dt>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>
@ -49,49 +50,49 @@
<aside id="featured" class="body">
<article>
<h1 class="entry-title"><a href="https://murtezayesil.me/fizzbuzz-with-single-semicolon.html">FizzBuzz with single semicolon</a></h1>
<h1 class="entry-title"><a href="https://murtezayesil.me/swap-on-ssd-done-right.html">Swap on SSD done right</a></h1>
<footer class="post-info">
<span>Sun 26 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/draft.html">draft</a></span>
</footer><!-- /.post-info --> </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/adb_vendor_keys-is-not-set.html" rel="bookmark"
title="Permalink to $ADB_VENDOR_KEYS is not set">$ADB_VENDOR_KEYS is not set</a></h1>
</header>
<div class="entry-content">
<footer class="post-info">
<span>Wed 22 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
<span>| tags: <a href="https://murtezayesil.me/tag/android.html">android</a><a href="https://murtezayesil.me/tag/error.html">error</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>7</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
</article></li>
<li><article class="hentry">
<header>
<h1><a href="https://murtezayesil.me/fizzbuzz-with-single-semicolon.html" rel="bookmark"
title="Permalink to FizzBuzz with single semicolon">FizzBuzz with single semicolon</a></h1>
</header>
<div class="entry-content">
<footer class="post-info">
<span>Mon 20 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/notes.html">Notes</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>6</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --><p>Semicolon is a bit special in Rust. It only comes after statements, not expressions. that includes codeblock returns. This gave me a silly idea.</p>
<h2>How many semicolons needed to write a FizzBuzz program in Rust?</h2>
<div class="highlight"><pre><span></span><code><span class="k">fn</span> <span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// for every number from 1 to 100</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">number</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">..</span><span class="mi">100</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">println</span><span class="o">!</span><span class="p">(</span><span class="w"></span>
<span class="w"> </span><span class="s">&quot;{}&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// check if number is</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">number</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">15</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// divisible by both 3 &amp; 5</span>
<span class="w"> </span><span class="s">&quot;fizzbuzz&quot;</span><span class="p">.</span><span class="n">to_string</span><span class="p">()</span><span class="w"> </span><span class="c1">// if so return &quot;fizzbuzz&quot;</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">number</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// divisible by 3</span>
<span class="w"> </span><span class="s">&quot;fizz&quot;</span><span class="p">.</span><span class="n">to_string</span><span class="p">()</span><span class="w"> </span><span class="c1">// if so return &quot;fizz&quot;</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">number</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// divisible by 5</span>
<span class="w"> </span><span class="s">&quot;buzz&quot;</span><span class="p">.</span><span class="n">to_string</span><span class="p">()</span><span class="w"> </span><span class="c1">// if so return &quot;buzz&quot;</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// but if not</span>
<span class="w"> </span><span class="n">number</span><span class="p">.</span><span class="n">to_string</span><span class="p">()</span><span class="w"> </span><span class="c1">// return number as String</span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// print returned value</span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</code></pre></div>
<h1 style="text-align: center;">1</h1>
<p>There is also <a href="https://github.com/Keith-S-Thompson/fizzbuzz-c/blob/master/fizzbuzz004.c" title="Brute forcing FizzBuzz in C">brute forcing method</a> 🤦‍♂️️</p><!-- Comments -->
<hr>
<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">
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
</article></li>
<li><article class="hentry">
<header>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>
@ -48,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> (6)</li>
<h1>Authors on Ali Murteza Yesil</h1> <li><a href="https://murtezayesil.me/author/ali-murteza-yesil.html">Ali Murteza Yesil</a> (8)</li>
</section>
<section id="extras" class="body">

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>
@ -48,8 +49,9 @@
</header><!-- /#banner -->
<h1>Categories on Ali Murteza Yesil</h1>
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a> (1)</li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a> (1)</li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a> (5)</li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a> (6)</li>
</ul>
<section id="extras" class="body">
<div class="blogroll">

121
output/category/draft.html Normal file
View File

@ -0,0 +1,121 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Ali Murteza Yesil - draft</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 class="active"><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>
<div>
</header><!-- /#banner -->
<aside id="featured" class="body">
<article>
<h1 class="entry-title"><a href="https://murtezayesil.me/swap-on-ssd-done-right.html">Swap on SSD done right</a></h1>
<footer class="post-info">
<span>Sun 26 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/draft.html">draft</a></span>
</footer><!-- /.post-info --> </article>
<p class="paginator">
Page 1 / 1
</p>
</aside><!-- /#featured -->
</ol><!-- /#posts-list -->
</section><!-- /#content -->
<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>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li class="active"><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li class="active"><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>
@ -49,103 +50,84 @@
<aside id="featured" class="body">
<article>
<h1 class="entry-title"><a href="https://murtezayesil.me/digital-cleansing-jitsi.html">Digital Cleansing - Jitsi</a></h1>
<h1 class="entry-title"><a href="https://murtezayesil.me/adb_vendor_keys-is-not-set.html">$ADB_VENDOR_KEYS is not set</a></h1>
<footer class="post-info">
<span>Wed 22 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
<span>| tags: <a href="https://murtezayesil.me/tag/android.html">android</a><a href="https://murtezayesil.me/tag/error.html">error</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>7</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --><h2>Story</h2>
<p>I like <a href="https://github.com/Genymobile/scrcpy" title="scrcpy by Genymobile - GitHub">scrcpy</a>. It allows me to cast my phone to computer and use it ther thanks to cable technology (wifi works too). So, after hopping to <img src="https://fosstodon.b-cdn.net/custom_emojis/images/000/025/123/static/a76f54a7dbcd8afd.png" width="15em" height="15em"> Pop_OS! I reinstalled adb and scrcpy.
But this time scrcpy didn't work. Instead it throw this error:<br>
<blockquote style="font-style: normal;">
<code>
adb: error: failed to get feature set: device unauthorized.<br>
This adb server's $ADB_VENDOR_KEYS is not set<br>
Try 'adb kill-server' if that seems wrong.<br>
Otherwise check for a confirmation dialog on your device.<br>
ERROR: "adb push" returned with value 1
</code>
</blockquote> </p>
<h2>Easy way | Grant access using prompt on the phone</h2>
<p>After enabling <a href="https://www.howtogeek.com/129728/how-to-access-the-developer-options-menu-and-enable-usb-debugging-on-android-4.2/">USB debugging in Developer options</a> connect phone to computer and run <code>scrcpy</code>. Phone should prompt you for granting access to computer. All you have to do is accept and connection will be granted 🎉️</p>
<hr>
<p>This prompt didn't appear on my phone. As it turns out, that prompt doesn't works as expected on some custom ROMS. After some digging online, I came across <a href="https://stackoverflow.com/a/26309956">this answer on stack <strong>overflow</strong></a>. Which leads to a <a href="https://android.googlesource.com/platform/system/core/+/d5fcafaf41f8ec90986c813f75ec78402096af2d">commit message for (new) adb authentication</a> implemented in 2012. This prompt copies ~/.android/adbkey.pub on computer, <code>$ADB_VENDOR_KEYS</code>, to <code>/data/misc/adb/adb_keys</code> file in phone's memory. since prompt isn't working for me I have to add that key manually 😕️</p>
<h2>Littler harder way | copy-paste using Termux + root</h2>
<p>Since <code>/data/misc/adb/adb_keys</code> file is offlimits for the user, we need root priviledges for this method.</p>
<ol>
<li>Copy ~/.android/adbkey.pub to phone's memory</li>
<li>Open Termux and install sudo &gt; <code>pkg install tsu</code></li>
<li>Navigate to where file adbkey.pub is. I'm using Redmi Note 4 and its <code>/sdcard</code> directory is used for .<br>
File is at <code>/sdcard/adbkey.pub</code> in my case &gt; <code>cd /sdcard</code></li>
<li>Copy <code>adbkey.pub</code> to <code>/data/misc/adb/adb_keys</code> with sudo priviledges &gt; <code>sudo cp adbkey.pub /data/misc/adb/adb_keys</code> </li>
<li>Double check if content of <code>/data/misc/adb/adb_keys</code> on phone and <code>~/.android/adbkey.pub</code> on computer are the same</li>
<li>Enjoy 😊️</li>
</ol>
<video width="720" height="auto" controls="controls">
<source src="https:///home/murteza/Virtual/Blog/output/videos/copying_adb_vendor_keys_using_termux_and_root.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<hr>
<h2>Hard way | copy-paste using TWRP</h2>
<p>This is the "no-root" hard method. You will still need root priviledges to edit <code>/data/misc/adb/adb_keys</code>. If your phone isn't rooted but has TWRP, GREAT. TWRP has root priviledges and a file manager.</p>
<ol>
<li>Boot into TWRP by holding Vol+ and Power keys while the phone is turned off.</li>
<li>Connect phone to computer</li>
<li>Copy ~/.android/adbkey.pub to phone's memory</li>
<li>Go to Advanced &gt; File manager</li>
<li>Navigate to where adbkey.pub was copied to. I am using Redmi Note 4 and MTP connects to <code>/sdcard</code> on this device.</li>
<li>Copy <code>adbkey.pub</code> to <code>/data/misc/adb/adb_keys</code></li>
<li>Delete <code>adb_keys</code> in </li>
<li>Rename <code>adbkey.pub</code> to <code>abd_keys</code></li>
<li>Double check if content of <code>/data/misc/adb/adb_keys</code> on phone and <code>~/.android/adbkey.pub</code> on computer are the same</li>
<li>Enjoy 😊️</li>
</ol>
<p><img alt="SCRCPY is casting Android phone's screen on to computer after manually copying computer's adbkey.pub file to phone's adb_keys file" src="images/scrcpy_casting_android_to_computer.png" title="scrcpy is finally working"></p>
<hr>
<p>It was a little annoying adventure for me to find where the adbkey.pub suppose to go. I am not immitated with having to do that thing manually. I was annoyed that this information isn't out there in Android documentations and requires reading answers from 2014 on stack__overflow__.</p>
<h3>I hope this guide was helpful to you 😉️</h3> </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/digital-cleansing-jitsi.html" rel="bookmark"
title="Permalink to Digital Cleansing - Jitsi">Digital Cleansing - Jitsi</a></h1>
</header>
<div class="entry-content">
<footer class="post-info">
<span>Sat 18 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
<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/jitsi.html">jitsi</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>5</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --><p>My family is spread into 3 countries in 3 different continents. If we include my close relatives too, these numbers go even higher. It is important to stay in contact with your family and relatives in Turkish culture and we try to do that. Let it be weekend Zoom meetings (in 40 minute chunks :) or phone calls on WhatsApp (owned by Facebook), we heavily rely on third party services for communication. After launching NextCloud for my family to use, I what I wanted to tackle the <strong>Communication</strong> problem.</p>
<p>We have 3 kinds of communication needs in the family:<br>
1. Text messages<br>
2. Voice Calls<br>
3. (Mostly group) Video Calls</p>
<hr>
<h3>Text Messaging &amp; Voice Calls</h3>
<p>I have been usign Telegram wherever I can for few years. Its UI is very similar to that of WhatsApp which I hope will ease the transition for my relatives. Since it also has voice calling, I don't need to look for another service for that. I love hitting two birds with one stone (only in metaphor) 😄️ <br>
That being said, I won't actually talk much about WhatsApp. Facebook bought WhatsApp back in February 2014. I believe that was a great deal for Facebook and a terrible deal for users.<br>
I know I mentioned Telegram but there is one more great alternative to WhatsApp (or even Telegram). It is called <a href="https://signal.org/" title="Official page">Signal</a> and it is developed by a non-profit founded by Co-founder of WhatsApp, Brian Acton. It is one freaking secure messaging app 😎️</p>
<hr>
<h3>Group Video Calls</h3>
<p>My families' and relatives' current choice of Group Video Calling service is Zoom, just like millions of other people who needed a video calling service for remote work, distance education and calling their loved ones. But Zoom seemingly popped out of nowhere for many people. I wanted to learn more about who Zoom is and how trustable it is. I hope my findings will help you to make educated decisions.</p>
<p>Zoom was <a href="https://en.wikipedia.org/wiki/Zoom_(software)#History" title="History of Zoom on Wikipedia">launched in September 2012</a>, reached <a href="https://www.tmcnet.com/topics/articles/2013/05/23/339279-zoom-video-communications-reaches-1-million-participants.htm" title="Zoom Video Communications Reaches 1 Million Participants - TMCnet">1 Million user base in January 2013</a> and rapidly grow during global quarantine to a point that Zoom got <a href="https://web.archive.org/web/20200422125131/https://www.theguardian.com/technology/2020/mar/31/zoom-booms-as-demand-for-video-conferencing-tech-grows-in-coronavirus-outbreak" title="Zoom booms as demand for video-conferencing tech grows - The Guardian [archive]">2.13 Million downloads on March 23rd 2020</a>.</p>
<p>After some research (reading Wikipedia) I found that Zoom had many wounds that hurt many of its users. Given that Zoom reached 1 Million userbase 5 months after launching (from September 2012 to January 2013) and they were charging 9.99$/month, I expect Zoom to invest into infrastructure and app security. I am saying this because they clearly had time to fix issues in their apps before the pandemic arrived. Here are few examples to show how Zoom messed up:<br>
<strong>Windows</strong> : <a href="https://arstechnica.com/information-technology/2020/04/unpatched-zoom-bug-lets-attackers-steal-windows-credentials-with-no-warning/">Attackers can use Zoom to steal users Windows credentials with no warning - ars technica</a><br>
<strong>MacOS</strong> : <a href="https://threatpost.com/zoom-zero-day-mac-webcam-hijacking/146317/">Zoom Zero-Day Bug Opens Mac Users to Webcam Hijacking - threat post</a>. This prompted Apple to use its MRT (Malware Removal Tool) to remotely delete Zoom from Mac computers.<br>
<strong>MacOS</strong> : <a href="https://medium.com/bugbountywriteup/zoom-zero-day-4-million-webcams-maybe-an-rce-just-get-them-to-visit-your-website-ac75c83f4ef5">Zoom Zero Day: 4+ Million Webcams &amp; maybe an RCE? Just get them to visit your website! - InfoSec Write-ups</a> allowing Zoom to reinstall itself after being uninstalled and join a video call with camera activated without user's permission.<br>
<strong>MacOS</strong> : <a href="https://nitter.net/c1truz_/status/1244737672930824193">Zoom App installation uses the same method used by malwares to gain root priviledges - Twitter thread on Nitter</a><br>
<strong>iOS</strong> : <a href="https://www.vice.com/en_ca/article/k7e599/zoom-ios-app-sends-data-to-facebook-even-if-you-dont-have-a-facebook-account">Zoom iOS App Sends Data to Facebook Even if You Dont Have a Facebook Account - Vice</a><br>
<strong>Android</strong> : I didn't find any news about Zoom Android App vulnerabilities. But if they used Facebook tracker in iOS app, I don't see any reason why zoom wouldn't use the same on Android
<strong>Linux</strong> : No vulnerability was found YET. Remember that <a href="https://netmarketshare.com/operating-system-market-share.aspx?options=%7B%22filter%22%3A%7B%22%24and%22%3A%5B%7B%22deviceType%22%3A%7B%22%24in%22%3A%5B%22Desktop%2Flaptop%22%5D%7D%7D%5D%7D%2C%22dateLabel%22%3A%22Custom%22%2C%22attributes%22%3A%22share%22%2C%22group%22%3A%22platform%22%2C%22sort%22%3A%7B%22share%22%3A-1%7D%2C%22id%22%3A%22platformsDesktop%22%2C%22dateInterval%22%3A%22Monthly%22%2C%22dateStart%22%3A%222019-08%22%2C%22dateEnd%22%3A%222020-06%22%2C%22plotKeys%22%3A%5B%7B%22platform%22%3A%22Linux%22%7D%2C%7B%22platform%22%3A%22Mac%20OS%22%7D%2C%7B%22platform%22%3A%22Chrome%20OS%22%7D%5D%2C%22segments%22%3A%22-1000%22%7D" title="Less than 4%">Linux desktop has a small marketshare</a> and apps for it are less likely to be targeted by hackers.</p>
<blockquote>
<p>"Zoom has just had so many missteps."
- Patrick Wardle, Jamf</p>
</blockquote>
<p>You can read about Zoom's vulnerabilities on MacOS and iOS in detail in <a href="https://objective-see.com/blog/blog_0x56.html" title="The 'S' in Zoom, Stands for Security - Objective-See">this blog post of Objective-See</a>. </p>
<p>These issues were <strong>FIXED</strong> by Zoom. But Zoom took long time to responde some of the cyber security personel as if it didn't care about the user privacy and security. I only mentioned the vulnerabilities in Zoom's apps. Zoom also <a href="https://www.axios.com/zoom-closes-chinese-user-account-tiananmen-square-f218fed1-69af-4bdd-aac4-7eaf67f34084.html" title="Zoom closed account of U.S.-based Chinese activist “to comply with local law” - Axios">contributed to censorship</a> by closing human rights activist Zhou Fengsuo's paid account and closing Social activist Lee Cheuk Yan's account upon China's request.</p>
<p>👉️ Since those vulnerabilities are fixed it should be safe to use Zoom, right?<br>
Unfortunately, NO. Even if apps became less vulnerable, users still are through weak privacy practices and use of third party trackers. Zoom's Privacy Policy is <a href="https://zoom.us/privacy#_Toc44414842">not assuring enough</a>.</p>
<p>👉️ They introduced end-to-end encryption, E2EE. Is it insecure encryption?<br>
AES-256 ECB algorithm used for E2EE is one of the greatest encryption algorithms out there. But it isn't enabled by default and enabling E2EE disables many features such as screensharing, which doesn't incentivise people to use E2EE. Both enterprise customers and teachers would want to use screensharing, thus not using E2EE.</p>
<p>👉️ They say Zoom encrypts every meeting by default. Are they lying?<br>
No, they are not. But they aren't telling the whole story either. When you start a Zoom meeting, your device establishes a connection to Zoom over <a href="https://en.wikipedia.org/wiki/Https#Security">HTTPS</a>. Meaning data is encrypted during transmission between you and Zoom. Data gets decrypted in Zoom and encrypted again before it goes to whoever you are meeting with. This is done because everybody in the meeting has different <a href="https://en.wikipedia.org/wiki/Session_key">session key</a> for encryption. Your meeting is apparent to Zoom, not hidden from it.</p>
<p>👉️ Zoom has faced <a href="https://en.wikipedia.org/wiki/Zero-day_(computing)" title="Learn about zero day attacks on Wikipedia">0-day attacks</a> which weren't fair.<br>
Not a question but I get your point. When a cyber security personal discovers a vulnerability, (s)he informs the vendor about the vulnerability in disguise and asks for bounty. Vendor checks if that is a legit vulnerability or a scam. Then they work together to fix the issue and vendor pays the bounty. Many companies have a <a href="https://www.intel.com/content/www/us/en/security-center/bug-bounty-program.html" title="Intel offers upto 100,000$">bug</a> <a href="https://hackerone.com/verizonmedia?type=team" title="Verizon offers upto 15,000$">bounty</a> <a href="https://www.microsoft.com/en-us/msrc/bounty" title="Microsoft offers upto 100,000$">program</a>.<br>
A cyber security personal may choose to release the vulnerability to public for it to be exploited by other people, which turns a vulnerability into zero day attack. This action incentivises vendor to fix that issue immediately since issue became well-known.<br>
Zoom had time since 2013 for testing its softwares properly. Proper testing would uncover those bugs before hackers did. Any company that is careless about security and privacy of its customers' deserves to be pinched to start acting.</p>
<p>What if I am forced to Zoom by my employer/school/family?<br>
Desktop/laptop users:<br>
1. Windows: Use virtual machine and apply one of the below Linux methods<br>
2. MacOS: Use virtual machine and apply one of the below Linux methods<br>
3. Linux: Install Linux Live image on a USB and boot into it everytime you need to Zoom. Install Zoom into that Live environment. Zoom will only be able to access what is in that Live environment. Shutting down a Live environment deletes everything that was installed in that session.<br>
4. Linux: <a href="https://ar.al/2020/06/25/how-to-use-the-zoom-malware-safely-on-linux-if-you-absolutely-have-to/" title="How to use the Zoom malware safely on Linux if you absolutely have to - Aral Balkan">Install Zoom into a firejail</a>, greatly limiting what it can reach.<br>
Mobile users:<br>
1. Android: <a href="https://www.howtogeek.com/333484/how-to-set-up-multiple-user-profiles-on-android/" title="This process maybe different for different brands">Create a restricted user</a> on your phone and install Zoom there. Not in your main user.
2. Android: If you can, use Zoom on Linux as described above.
3. iOS: Don't give it permissions if you don't need them. Don't let it run in background. Uninstall after using.
4. iOS: If you can, use Zoom on Linux as described above.</p>
<p>PS: I don't own a Mac, iPhone or Windows PC. But since Zoom on those platforms seem to be the affected most, I recommend everybody to use Zoom on Linux in a firejail if you absolutely have to.</p>
<p>I also wanted to read articles <a href="https://medium.com/@rowantrollope/beyond-the-noise-7-reasons-its-safe-to-run-zoom-9a2e639b13ec">that</a> <a href="https://blog.prialto.com/3-reasons-why-zoom-provides-the-best-video-conferencing-software">defend</a> <a href="https://www.forbes.com/sites/rebeccabellan/2020/03/24/what-you-need-to-know-about-using-zoom/#3cee9d0d3284">Zoom</a>. But they are mostly talking about Zoom's E2EE feature (that is not default), how people got creative with Virtual Background feature, Zoom's clean UI, ability to fake paying attention and its price. They either say nothing about Zooms privacy policy or even if they say something, it is not assuring in my opinion.</p>
<hr>
<h1>Jitsi</h1>
<p>Jitsi is an open source alternative to Video Calling (Conferencing) services. I will prove that Jitsi is much better than Zoom with only 1 sentence.</p>
<h1 style="text-align: center;">You can host Jitsi on your own server without relying on another entity</h1>
<p>You want more?</p>
<ol>
<li>Jitsi has Clean UI that is familiar to that of Zoom. </li>
<li>Jitsi <strong>doesn't</strong> have looping video feature which helps students or emplyees fake paying attention. </li>
<li>Jitsi is <strong title="Free Open Source Software">FOSS</strong> developed by <a href="https://8x8.com">8x8</a>. </li>
<li>
<p>Hosting Jitsi doesn't require a server with powerful CPU or GPU. Important resource is bandwidth. </p>
</li>
<li>
<p>Jitsi doesn't have virtual background but it instead has background blurring in development.</p>
</li>
</ol>
<p>👉️ Is it truely E2EE?<br>
<strong>This is what I understood from reading <a href="https://github.com/jitsi/jitsi-meet/issues/409#issuecomment-260652107">this threat</a>. Please correct me if I am wrong</strong><br>
Short answer is No.<br>
Long answer is: Just like in Zoom's case, connection between users and Jitsi VideoBridge (server) is encrypted. Server decrypts and encrypts everybody's stream for everybody else. But by having the control of Jitsi VideoBridge (server) by hosting it on your own server, you can assure that no other company/organization is holding your plain data except the recepient you are meeting with.<br>
That being said, Jitsi can establish P2P connection in rooms where there are only 2 people. This is a feature of WebRTC that Jitsi is built upon. It still <strong>isn't</strong> true E2EE.</p>
<p>👉️ Do anyone even use it?<br>
Glad you ask. Many companies banned use of Zoom and switched to alternatives such as Microsoft Teams, Skype, Hangout Meet and Jitsi. You probably won't see Jitsi's UI very often in the wild, but many companies use Jitsi VideoBridge as their backend for video conferences. Out of all the alternatives, only Jitsi allows self-hosting of server (Jitsi VideoBridge) AFAIK.</p>
<h2>How to install Jitsi server?</h2>
<p>I followed <strong>Nerd on the Street</strong>'s <a href="https://invidio.us/watch?v=IQRwtUamHQU">Host a Jitsi Meet Server</a> installation tutorial. It took about 30 minute of my time (I am a noob) to get the server running. It takes another 10 minutes to secure it.</p>
<hr>
<p>When I started this blog post, I expected to list 2 reasons not to use WhatsApp and Zoom then start talking about why Jitsi is the answer to my family's Group Video Calling needs. To fact check what I knew about about them (Zoom in particular) I searched them on <a href="https://en.wikipedia.org/wiki/Zoom_(software)" title="Read more about Zoom on WikiPedia">Wikipedia</a>. I learned much more than I expected. I am sorry for turning this post into "Rant of Zoom". I hope you learned a thing or two too.</p>
<hr>
<h3>Other side of the coin</h3>
<p>If you think I would be better of sticking to WhatsApp or Zoom, tell me more. Even though I read many negative things about Zoom, I will try my best to keep an open mind and hear people seeing other side of the coin. I am a human and can make mistakes. If there is something important I should know to better understand what is going on, please reply to comment toot linked below.</p><!-- Comments -->
<hr>
<h2>Comments</h2>
<p>Toot on <a href="https://fosstodon.org/@murtezayesil/104535970036319662">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">
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
</article></li>
<li><article class="hentry">
<header>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li class="active"><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li class="active"><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li class="active"><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li class="active"><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li class="active"><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li class="active"><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>

View File

@ -1,5 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Ali Murteza Yesil</title><link href="https://murtezayesil.me/" rel="alternate"></link><link href="https://murtezayesil.me/feeds/atom.xml" rel="self"></link><id>https://murtezayesil.me/</id><updated>2020-07-20T00:00:00+06:00</updated><subtitle>Blog</subtitle><entry><title>FizzBuzz with single semicolon</title><link href="https://murtezayesil.me/fizzbuzz-with-single-semicolon.html" rel="alternate"></link><published>2020-07-20T00:00:00+06:00</published><updated>2020-07-20T00:00:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-20:/fizzbuzz-with-single-semicolon.html</id><summary type="html">&lt;p&gt;Attempt to write an eccentric FizzBuzz program with as few semicolon as possible.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Semicolon is a bit special in Rust. It only comes after statements, not expressions. that includes codeblock returns. This gave me a silly idea.&lt;/p&gt;
<feed xmlns="http://www.w3.org/2005/Atom"><title>Ali Murteza Yesil</title><link href="https://murtezayesil.me/" rel="alternate"></link><link href="https://murtezayesil.me/feeds/atom.xml" rel="self"></link><id>https://murtezayesil.me/</id><updated>2020-07-26T00:00:00+06:00</updated><subtitle>Blog</subtitle><entry><title>Swap on SSD done right</title><link href="https://murtezayesil.me/swap-on-ssd-done-right.html" rel="alternate"></link><published>2020-07-26T00:00:00+06:00</published><updated>2020-07-26T00:00:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-26:/swap-on-ssd-done-right.html</id><content type="html"></content><category term="draft"></category></entry><entry><title>$ADB_VENDOR_KEYS is not set</title><link href="https://murtezayesil.me/adb_vendor_keys-is-not-set.html" rel="alternate"></link><published>2020-07-22T00:00:00+06:00</published><updated>2020-07-22T00:00:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-22:/adb_vendor_keys-is-not-set.html</id><summary type="html">&lt;p&gt;Authorizing adb when no prompt will come, the hard way.&lt;/p&gt;</summary><content type="html">&lt;h2&gt;Story&lt;/h2&gt;
&lt;p&gt;I like &lt;a href="https://github.com/Genymobile/scrcpy" title="scrcpy by Genymobile - GitHub"&gt;scrcpy&lt;/a&gt;. It allows me to cast my phone to computer and use it ther thanks to cable technology (wifi works too). So, after hopping to &lt;img src="https://fosstodon.b-cdn.net/custom_emojis/images/000/025/123/static/a76f54a7dbcd8afd.png" width="15em" height="15em"&gt; Pop_OS! I reinstalled adb and scrcpy.
But this time scrcpy didn't work. Instead it throw this error:&lt;br&gt;
&lt;blockquote style="font-style: normal;"&gt;
&lt;code&gt;
adb: error: failed to get feature set: device unauthorized.&lt;br&gt;
This adb server's $ADB_VENDOR_KEYS is not set&lt;br&gt;
Try 'adb kill-server' if that seems wrong.&lt;br&gt;
Otherwise check for a confirmation dialog on your device.&lt;br&gt;
ERROR: "adb push" returned with value 1
&lt;/code&gt;
&lt;/blockquote&gt; &lt;/p&gt;
&lt;h2&gt;Easy way | Grant access using prompt on the phone&lt;/h2&gt;
&lt;p&gt;After enabling &lt;a href="https://www.howtogeek.com/129728/how-to-access-the-developer-options-menu-and-enable-usb-debugging-on-android-4.2/"&gt;USB debugging in Developer options&lt;/a&gt; connect phone to computer and run &lt;code&gt;scrcpy&lt;/code&gt;. Phone should prompt you for granting access to computer. All you have to do is accept and connection will be granted 🎉️&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;This prompt didn't appear on my phone. As it turns out, that prompt doesn't works as expected on some custom ROMS. After some digging online, I came across &lt;a href="https://stackoverflow.com/a/26309956"&gt;this answer on stack &lt;strong&gt;overflow&lt;/strong&gt;&lt;/a&gt;. Which leads to a &lt;a href="https://android.googlesource.com/platform/system/core/+/d5fcafaf41f8ec90986c813f75ec78402096af2d"&gt;commit message for (new) adb authentication&lt;/a&gt; implemented in 2012. This prompt copies ~/.android/adbkey.pub on computer, &lt;code&gt;$ADB_VENDOR_KEYS&lt;/code&gt;, to &lt;code&gt;/data/misc/adb/adb_keys&lt;/code&gt; file in phone's memory. since prompt isn't working for me I have to add that key manually 😕️&lt;/p&gt;
&lt;h2&gt;Littler harder way | copy-paste using Termux + root&lt;/h2&gt;
&lt;p&gt;Since &lt;code&gt;/data/misc/adb/adb_keys&lt;/code&gt; file is offlimits for the user, we need root priviledges for this method.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Copy ~/.android/adbkey.pub to phone's memory&lt;/li&gt;
&lt;li&gt;Open Termux and install sudo &amp;gt; &lt;code&gt;pkg install tsu&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Navigate to where file adbkey.pub is. I'm using Redmi Note 4 and its &lt;code&gt;/sdcard&lt;/code&gt; directory is used for .&lt;br&gt;
File is at &lt;code&gt;/sdcard/adbkey.pub&lt;/code&gt; in my case &amp;gt; &lt;code&gt;cd /sdcard&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Copy &lt;code&gt;adbkey.pub&lt;/code&gt; to &lt;code&gt;/data/misc/adb/adb_keys&lt;/code&gt; with sudo priviledges &amp;gt; &lt;code&gt;sudo cp adbkey.pub /data/misc/adb/adb_keys&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;Double check if content of &lt;code&gt;/data/misc/adb/adb_keys&lt;/code&gt; on phone and &lt;code&gt;~/.android/adbkey.pub&lt;/code&gt; on computer are the same&lt;/li&gt;
&lt;li&gt;Enjoy 😊️&lt;/li&gt;
&lt;/ol&gt;
&lt;video width="720" height="auto" controls="controls"&gt;
&lt;source src="https:///home/murteza/Virtual/Blog/output/videos/copying_adb_vendor_keys_using_termux_and_root.mp4" type="video/mp4"&gt;
Your browser does not support the video tag.
&lt;/video&gt;
&lt;hr&gt;
&lt;h2&gt;Hard way | copy-paste using TWRP&lt;/h2&gt;
&lt;p&gt;This is the "no-root" hard method. You will still need root priviledges to edit &lt;code&gt;/data/misc/adb/adb_keys&lt;/code&gt;. If your phone isn't rooted but has TWRP, GREAT. TWRP has root priviledges and a file manager.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Boot into TWRP by holding Vol+ and Power keys while the phone is turned off.&lt;/li&gt;
&lt;li&gt;Connect phone to computer&lt;/li&gt;
&lt;li&gt;Copy ~/.android/adbkey.pub to phone's memory&lt;/li&gt;
&lt;li&gt;Go to Advanced &amp;gt; File manager&lt;/li&gt;
&lt;li&gt;Navigate to where adbkey.pub was copied to. I am using Redmi Note 4 and MTP connects to &lt;code&gt;/sdcard&lt;/code&gt; on this device.&lt;/li&gt;
&lt;li&gt;Copy &lt;code&gt;adbkey.pub&lt;/code&gt; to &lt;code&gt;/data/misc/adb/adb_keys&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Delete &lt;code&gt;adb_keys&lt;/code&gt; in &lt;/li&gt;
&lt;li&gt;Rename &lt;code&gt;adbkey.pub&lt;/code&gt; to &lt;code&gt;abd_keys&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Double check if content of &lt;code&gt;/data/misc/adb/adb_keys&lt;/code&gt; on phone and &lt;code&gt;~/.android/adbkey.pub&lt;/code&gt; on computer are the same&lt;/li&gt;
&lt;li&gt;Enjoy 😊️&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt="SCRCPY is casting Android phone's screen on to computer after manually copying computer's adbkey.pub file to phone's adb_keys file" src="images/scrcpy_casting_android_to_computer.png" title="scrcpy is finally working"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;It was a little annoying adventure for me to find where the adbkey.pub suppose to go. I am not immitated with having to do that thing manually. I was annoyed that this information isn't out there in Android documentations and requires reading answers from 2014 on stack__overflow__.&lt;/p&gt;
&lt;h3&gt;I hope this guide was helpful to you 😉️&lt;/h3&gt;</content><category term="Tech"></category><category term="android"></category><category term="error"></category><category term="100DaysToOffload"></category></entry><entry><title>FizzBuzz with single semicolon</title><link href="https://murtezayesil.me/fizzbuzz-with-single-semicolon.html" rel="alternate"></link><published>2020-07-20T00:00:00+06:00</published><updated>2020-07-20T00:00:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-20:/fizzbuzz-with-single-semicolon.html</id><summary type="html">&lt;p&gt;Attempt to write an eccentric FizzBuzz program with as few semicolon as possible.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Semicolon is a bit special in Rust. It only comes after statements, not expressions. that includes codeblock returns. This gave me a silly idea.&lt;/p&gt;
&lt;h2&gt;How many semicolons needed to write a FizzBuzz program in Rust?&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// for every number from 1 to 100&lt;/span&gt;

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Ali Murteza Yesil - draft</title><link href="https://murtezayesil.me/" rel="alternate"></link><link href="https://murtezayesil.me/feeds/draft.atom.xml" rel="self"></link><id>https://murtezayesil.me/</id><updated>2020-07-26T00:00:00+06:00</updated><subtitle>Blog</subtitle><entry><title>Swap on SSD done right</title><link href="https://murtezayesil.me/swap-on-ssd-done-right.html" rel="alternate"></link><published>2020-07-26T00:00:00+06:00</published><updated>2020-07-26T00:00:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-26:/swap-on-ssd-done-right.html</id><content type="html"></content><category term="draft"></category></entry></feed>

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Ali Murteza Yesil - Tech</title><link href="https://murtezayesil.me/" rel="alternate"></link><link href="https://murtezayesil.me/feeds/tech.atom.xml" rel="self"></link><id>https://murtezayesil.me/</id><updated>2020-07-18T00:00:00+06:00</updated><subtitle>Blog</subtitle><entry><title>Digital Cleansing - Jitsi</title><link href="https://murtezayesil.me/digital-cleansing-jitsi.html" rel="alternate"></link><published>2020-07-18T00:00:00+06:00</published><updated>2020-07-18T00:00:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-18:/digital-cleansing-jitsi.html</id><summary type="html">&lt;p&gt;My family and relatives live different countries and make good use of video calling services regardless of who is offering the service&lt;/p&gt;</summary><content type="html">&lt;p&gt;My family is spread into 3 countries in 3 different continents. If we include my close relatives too, these numbers go even higher. It is important to stay in contact with your family and relatives in Turkish culture and we try to do that. Let it be weekend Zoom meetings (in 40 minute chunks :) or phone calls on WhatsApp (owned by Facebook), we heavily rely on third party services for communication. After launching NextCloud for my family to use, I what I wanted to tackle the &lt;strong&gt;Communication&lt;/strong&gt; problem.&lt;/p&gt;
<feed xmlns="http://www.w3.org/2005/Atom"><title>Ali Murteza Yesil - Tech</title><link href="https://murtezayesil.me/" rel="alternate"></link><link href="https://murtezayesil.me/feeds/tech.atom.xml" rel="self"></link><id>https://murtezayesil.me/</id><updated>2020-07-22T00:00:00+06:00</updated><subtitle>Blog</subtitle><entry><title>$ADB_VENDOR_KEYS is not set</title><link href="https://murtezayesil.me/adb_vendor_keys-is-not-set.html" rel="alternate"></link><published>2020-07-22T00:00:00+06:00</published><updated>2020-07-22T00:00:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-22:/adb_vendor_keys-is-not-set.html</id><summary type="html">&lt;p&gt;Authorizing adb when no prompt will come, the hard way.&lt;/p&gt;</summary><content type="html">&lt;h2&gt;Story&lt;/h2&gt;
&lt;p&gt;I like &lt;a href="https://github.com/Genymobile/scrcpy" title="scrcpy by Genymobile - GitHub"&gt;scrcpy&lt;/a&gt;. It allows me to cast my phone to computer and use it ther thanks to cable technology (wifi works too). So, after hopping to &lt;img src="https://fosstodon.b-cdn.net/custom_emojis/images/000/025/123/static/a76f54a7dbcd8afd.png" width="15em" height="15em"&gt; Pop_OS! I reinstalled adb and scrcpy.
But this time scrcpy didn't work. Instead it throw this error:&lt;br&gt;
&lt;blockquote style="font-style: normal;"&gt;
&lt;code&gt;
adb: error: failed to get feature set: device unauthorized.&lt;br&gt;
This adb server's $ADB_VENDOR_KEYS is not set&lt;br&gt;
Try 'adb kill-server' if that seems wrong.&lt;br&gt;
Otherwise check for a confirmation dialog on your device.&lt;br&gt;
ERROR: "adb push" returned with value 1
&lt;/code&gt;
&lt;/blockquote&gt; &lt;/p&gt;
&lt;h2&gt;Easy way | Grant access using prompt on the phone&lt;/h2&gt;
&lt;p&gt;After enabling &lt;a href="https://www.howtogeek.com/129728/how-to-access-the-developer-options-menu-and-enable-usb-debugging-on-android-4.2/"&gt;USB debugging in Developer options&lt;/a&gt; connect phone to computer and run &lt;code&gt;scrcpy&lt;/code&gt;. Phone should prompt you for granting access to computer. All you have to do is accept and connection will be granted 🎉️&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;This prompt didn't appear on my phone. As it turns out, that prompt doesn't works as expected on some custom ROMS. After some digging online, I came across &lt;a href="https://stackoverflow.com/a/26309956"&gt;this answer on stack &lt;strong&gt;overflow&lt;/strong&gt;&lt;/a&gt;. Which leads to a &lt;a href="https://android.googlesource.com/platform/system/core/+/d5fcafaf41f8ec90986c813f75ec78402096af2d"&gt;commit message for (new) adb authentication&lt;/a&gt; implemented in 2012. This prompt copies ~/.android/adbkey.pub on computer, &lt;code&gt;$ADB_VENDOR_KEYS&lt;/code&gt;, to &lt;code&gt;/data/misc/adb/adb_keys&lt;/code&gt; file in phone's memory. since prompt isn't working for me I have to add that key manually 😕️&lt;/p&gt;
&lt;h2&gt;Littler harder way | copy-paste using Termux + root&lt;/h2&gt;
&lt;p&gt;Since &lt;code&gt;/data/misc/adb/adb_keys&lt;/code&gt; file is offlimits for the user, we need root priviledges for this method.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Copy ~/.android/adbkey.pub to phone's memory&lt;/li&gt;
&lt;li&gt;Open Termux and install sudo &amp;gt; &lt;code&gt;pkg install tsu&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Navigate to where file adbkey.pub is. I'm using Redmi Note 4 and its &lt;code&gt;/sdcard&lt;/code&gt; directory is used for .&lt;br&gt;
File is at &lt;code&gt;/sdcard/adbkey.pub&lt;/code&gt; in my case &amp;gt; &lt;code&gt;cd /sdcard&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Copy &lt;code&gt;adbkey.pub&lt;/code&gt; to &lt;code&gt;/data/misc/adb/adb_keys&lt;/code&gt; with sudo priviledges &amp;gt; &lt;code&gt;sudo cp adbkey.pub /data/misc/adb/adb_keys&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;Double check if content of &lt;code&gt;/data/misc/adb/adb_keys&lt;/code&gt; on phone and &lt;code&gt;~/.android/adbkey.pub&lt;/code&gt; on computer are the same&lt;/li&gt;
&lt;li&gt;Enjoy 😊️&lt;/li&gt;
&lt;/ol&gt;
&lt;video width="720" height="auto" controls="controls"&gt;
&lt;source src="https:///home/murteza/Virtual/Blog/output/videos/copying_adb_vendor_keys_using_termux_and_root.mp4" type="video/mp4"&gt;
Your browser does not support the video tag.
&lt;/video&gt;
&lt;hr&gt;
&lt;h2&gt;Hard way | copy-paste using TWRP&lt;/h2&gt;
&lt;p&gt;This is the "no-root" hard method. You will still need root priviledges to edit &lt;code&gt;/data/misc/adb/adb_keys&lt;/code&gt;. If your phone isn't rooted but has TWRP, GREAT. TWRP has root priviledges and a file manager.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Boot into TWRP by holding Vol+ and Power keys while the phone is turned off.&lt;/li&gt;
&lt;li&gt;Connect phone to computer&lt;/li&gt;
&lt;li&gt;Copy ~/.android/adbkey.pub to phone's memory&lt;/li&gt;
&lt;li&gt;Go to Advanced &amp;gt; File manager&lt;/li&gt;
&lt;li&gt;Navigate to where adbkey.pub was copied to. I am using Redmi Note 4 and MTP connects to &lt;code&gt;/sdcard&lt;/code&gt; on this device.&lt;/li&gt;
&lt;li&gt;Copy &lt;code&gt;adbkey.pub&lt;/code&gt; to &lt;code&gt;/data/misc/adb/adb_keys&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Delete &lt;code&gt;adb_keys&lt;/code&gt; in &lt;/li&gt;
&lt;li&gt;Rename &lt;code&gt;adbkey.pub&lt;/code&gt; to &lt;code&gt;abd_keys&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Double check if content of &lt;code&gt;/data/misc/adb/adb_keys&lt;/code&gt; on phone and &lt;code&gt;~/.android/adbkey.pub&lt;/code&gt; on computer are the same&lt;/li&gt;
&lt;li&gt;Enjoy 😊️&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt="SCRCPY is casting Android phone's screen on to computer after manually copying computer's adbkey.pub file to phone's adb_keys file" src="images/scrcpy_casting_android_to_computer.png" title="scrcpy is finally working"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;It was a little annoying adventure for me to find where the adbkey.pub suppose to go. I am not immitated with having to do that thing manually. I was annoyed that this information isn't out there in Android documentations and requires reading answers from 2014 on stack__overflow__.&lt;/p&gt;
&lt;h3&gt;I hope this guide was helpful to you 😉️&lt;/h3&gt;</content><category term="Tech"></category><category term="android"></category><category term="error"></category><category term="100DaysToOffload"></category></entry><entry><title>Digital Cleansing - Jitsi</title><link href="https://murtezayesil.me/digital-cleansing-jitsi.html" rel="alternate"></link><published>2020-07-18T00:00:00+06:00</published><updated>2020-07-18T00:00:00+06:00</updated><author><name>Ali Murteza Yesil</name></author><id>tag:murtezayesil.me,2020-07-18:/digital-cleansing-jitsi.html</id><summary type="html">&lt;p&gt;My family and relatives live different countries and make good use of video calling services regardless of who is offering the service&lt;/p&gt;</summary><content type="html">&lt;p&gt;My family is spread into 3 countries in 3 different continents. If we include my close relatives too, these numbers go even higher. It is important to stay in contact with your family and relatives in Turkish culture and we try to do that. Let it be weekend Zoom meetings (in 40 minute chunks :) or phone calls on WhatsApp (owned by Facebook), we heavily rely on third party services for communication. After launching NextCloud for my family to use, I what I wanted to tackle the &lt;strong&gt;Communication&lt;/strong&gt; problem.&lt;/p&gt;
&lt;p&gt;We have 3 kinds of communication needs in the family:&lt;br&gt;
1. Text messages&lt;br&gt;
2. Voice Calls&lt;br&gt;

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li class="active"><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>
@ -49,49 +50,49 @@
<aside id="featured" class="body">
<article>
<h1 class="entry-title"><a href="https://murtezayesil.me/fizzbuzz-with-single-semicolon.html">FizzBuzz with single semicolon</a></h1>
<h1 class="entry-title"><a href="https://murtezayesil.me/swap-on-ssd-done-right.html">Swap on SSD done right</a></h1>
<footer class="post-info">
<span>Sun 26 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/draft.html">draft</a></span>
</footer><!-- /.post-info --> </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/adb_vendor_keys-is-not-set.html" rel="bookmark"
title="Permalink to $ADB_VENDOR_KEYS is not set">$ADB_VENDOR_KEYS is not set</a></h1>
</header>
<div class="entry-content">
<footer class="post-info">
<span>Wed 22 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
<span>| tags: <a href="https://murtezayesil.me/tag/android.html">android</a><a href="https://murtezayesil.me/tag/error.html">error</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>7</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
</article></li>
<li><article class="hentry">
<header>
<h1><a href="https://murtezayesil.me/fizzbuzz-with-single-semicolon.html" rel="bookmark"
title="Permalink to FizzBuzz with single semicolon">FizzBuzz with single semicolon</a></h1>
</header>
<div class="entry-content">
<footer class="post-info">
<span>Mon 20 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/notes.html">Notes</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>6</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --><p>Semicolon is a bit special in Rust. It only comes after statements, not expressions. that includes codeblock returns. This gave me a silly idea.</p>
<h2>How many semicolons needed to write a FizzBuzz program in Rust?</h2>
<div class="highlight"><pre><span></span><code><span class="k">fn</span> <span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// for every number from 1 to 100</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">number</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">..</span><span class="mi">100</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">println</span><span class="o">!</span><span class="p">(</span><span class="w"></span>
<span class="w"> </span><span class="s">&quot;{}&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// check if number is</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">number</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">15</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// divisible by both 3 &amp; 5</span>
<span class="w"> </span><span class="s">&quot;fizzbuzz&quot;</span><span class="p">.</span><span class="n">to_string</span><span class="p">()</span><span class="w"> </span><span class="c1">// if so return &quot;fizzbuzz&quot;</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">number</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// divisible by 3</span>
<span class="w"> </span><span class="s">&quot;fizz&quot;</span><span class="p">.</span><span class="n">to_string</span><span class="p">()</span><span class="w"> </span><span class="c1">// if so return &quot;fizz&quot;</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">number</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// divisible by 5</span>
<span class="w"> </span><span class="s">&quot;buzz&quot;</span><span class="p">.</span><span class="n">to_string</span><span class="p">()</span><span class="w"> </span><span class="c1">// if so return &quot;buzz&quot;</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// but if not</span>
<span class="w"> </span><span class="n">number</span><span class="p">.</span><span class="n">to_string</span><span class="p">()</span><span class="w"> </span><span class="c1">// return number as String</span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// print returned value</span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</code></pre></div>
<h1 style="text-align: center;">1</h1>
<p>There is also <a href="https://github.com/Keith-S-Thompson/fizzbuzz-c/blob/master/fizzbuzz004.c" title="Brute forcing FizzBuzz in C">brute forcing method</a> 🤦‍♂️️</p><!-- Comments -->
<hr>
<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">
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
</article></li>
<li><article class="hentry">
<header>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li class="active"><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>

View File

@ -0,0 +1,127 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Swap on SSD done right</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 class="active"><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><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/swap-on-ssd-done-right.html" rel="bookmark"
title="Permalink to Swap on SSD done right">Swap on SSD done right</a></h1>
</header>
<div class="entry-content">
<footer class="post-info">
<span>Sun 26 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/draft.html">draft</a></span>
</footer><!-- /.post-info -->
</div><!-- /.entry-content -->
</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>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>
@ -49,49 +50,84 @@
<aside id="featured" class="body">
<article>
<h1 class="entry-title"><a href="https://murtezayesil.me/fizzbuzz-with-single-semicolon.html">FizzBuzz with single semicolon</a></h1>
<h1 class="entry-title"><a href="https://murtezayesil.me/adb_vendor_keys-is-not-set.html">$ADB_VENDOR_KEYS is not set</a></h1>
<footer class="post-info">
<span>Wed 22 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
<span>| tags: <a href="https://murtezayesil.me/tag/android.html">android</a><a href="https://murtezayesil.me/tag/error.html">error</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>7</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --><h2>Story</h2>
<p>I like <a href="https://github.com/Genymobile/scrcpy" title="scrcpy by Genymobile - GitHub">scrcpy</a>. It allows me to cast my phone to computer and use it ther thanks to cable technology (wifi works too). So, after hopping to <img src="https://fosstodon.b-cdn.net/custom_emojis/images/000/025/123/static/a76f54a7dbcd8afd.png" width="15em" height="15em"> Pop_OS! I reinstalled adb and scrcpy.
But this time scrcpy didn't work. Instead it throw this error:<br>
<blockquote style="font-style: normal;">
<code>
adb: error: failed to get feature set: device unauthorized.<br>
This adb server's $ADB_VENDOR_KEYS is not set<br>
Try 'adb kill-server' if that seems wrong.<br>
Otherwise check for a confirmation dialog on your device.<br>
ERROR: "adb push" returned with value 1
</code>
</blockquote> </p>
<h2>Easy way | Grant access using prompt on the phone</h2>
<p>After enabling <a href="https://www.howtogeek.com/129728/how-to-access-the-developer-options-menu-and-enable-usb-debugging-on-android-4.2/">USB debugging in Developer options</a> connect phone to computer and run <code>scrcpy</code>. Phone should prompt you for granting access to computer. All you have to do is accept and connection will be granted 🎉️</p>
<hr>
<p>This prompt didn't appear on my phone. As it turns out, that prompt doesn't works as expected on some custom ROMS. After some digging online, I came across <a href="https://stackoverflow.com/a/26309956">this answer on stack <strong>overflow</strong></a>. Which leads to a <a href="https://android.googlesource.com/platform/system/core/+/d5fcafaf41f8ec90986c813f75ec78402096af2d">commit message for (new) adb authentication</a> implemented in 2012. This prompt copies ~/.android/adbkey.pub on computer, <code>$ADB_VENDOR_KEYS</code>, to <code>/data/misc/adb/adb_keys</code> file in phone's memory. since prompt isn't working for me I have to add that key manually 😕️</p>
<h2>Littler harder way | copy-paste using Termux + root</h2>
<p>Since <code>/data/misc/adb/adb_keys</code> file is offlimits for the user, we need root priviledges for this method.</p>
<ol>
<li>Copy ~/.android/adbkey.pub to phone's memory</li>
<li>Open Termux and install sudo &gt; <code>pkg install tsu</code></li>
<li>Navigate to where file adbkey.pub is. I'm using Redmi Note 4 and its <code>/sdcard</code> directory is used for .<br>
File is at <code>/sdcard/adbkey.pub</code> in my case &gt; <code>cd /sdcard</code></li>
<li>Copy <code>adbkey.pub</code> to <code>/data/misc/adb/adb_keys</code> with sudo priviledges &gt; <code>sudo cp adbkey.pub /data/misc/adb/adb_keys</code> </li>
<li>Double check if content of <code>/data/misc/adb/adb_keys</code> on phone and <code>~/.android/adbkey.pub</code> on computer are the same</li>
<li>Enjoy 😊️</li>
</ol>
<video width="720" height="auto" controls="controls">
<source src="https:///home/murteza/Virtual/Blog/output/videos/copying_adb_vendor_keys_using_termux_and_root.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<hr>
<h2>Hard way | copy-paste using TWRP</h2>
<p>This is the "no-root" hard method. You will still need root priviledges to edit <code>/data/misc/adb/adb_keys</code>. If your phone isn't rooted but has TWRP, GREAT. TWRP has root priviledges and a file manager.</p>
<ol>
<li>Boot into TWRP by holding Vol+ and Power keys while the phone is turned off.</li>
<li>Connect phone to computer</li>
<li>Copy ~/.android/adbkey.pub to phone's memory</li>
<li>Go to Advanced &gt; File manager</li>
<li>Navigate to where adbkey.pub was copied to. I am using Redmi Note 4 and MTP connects to <code>/sdcard</code> on this device.</li>
<li>Copy <code>adbkey.pub</code> to <code>/data/misc/adb/adb_keys</code></li>
<li>Delete <code>adb_keys</code> in </li>
<li>Rename <code>adbkey.pub</code> to <code>abd_keys</code></li>
<li>Double check if content of <code>/data/misc/adb/adb_keys</code> on phone and <code>~/.android/adbkey.pub</code> on computer are the same</li>
<li>Enjoy 😊️</li>
</ol>
<p><img alt="SCRCPY is casting Android phone's screen on to computer after manually copying computer's adbkey.pub file to phone's adb_keys file" src="images/scrcpy_casting_android_to_computer.png" title="scrcpy is finally working"></p>
<hr>
<p>It was a little annoying adventure for me to find where the adbkey.pub suppose to go. I am not immitated with having to do that thing manually. I was annoyed that this information isn't out there in Android documentations and requires reading answers from 2014 on stack__overflow__.</p>
<h3>I hope this guide was helpful to you 😉️</h3> </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/fizzbuzz-with-single-semicolon.html" rel="bookmark"
title="Permalink to FizzBuzz with single semicolon">FizzBuzz with single semicolon</a></h1>
</header>
<div class="entry-content">
<footer class="post-info">
<span>Mon 20 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/notes.html">Notes</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>6</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --><p>Semicolon is a bit special in Rust. It only comes after statements, not expressions. that includes codeblock returns. This gave me a silly idea.</p>
<h2>How many semicolons needed to write a FizzBuzz program in Rust?</h2>
<div class="highlight"><pre><span></span><code><span class="k">fn</span> <span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// for every number from 1 to 100</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">number</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="mi">1</span><span class="o">..</span><span class="mi">100</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="n">println</span><span class="o">!</span><span class="p">(</span><span class="w"></span>
<span class="w"> </span><span class="s">&quot;{}&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="c1">// check if number is</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">number</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">15</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// divisible by both 3 &amp; 5</span>
<span class="w"> </span><span class="s">&quot;fizzbuzz&quot;</span><span class="p">.</span><span class="n">to_string</span><span class="p">()</span><span class="w"> </span><span class="c1">// if so return &quot;fizzbuzz&quot;</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">number</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// divisible by 3</span>
<span class="w"> </span><span class="s">&quot;fizz&quot;</span><span class="p">.</span><span class="n">to_string</span><span class="p">()</span><span class="w"> </span><span class="c1">// if so return &quot;fizz&quot;</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">number</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// divisible by 5</span>
<span class="w"> </span><span class="s">&quot;buzz&quot;</span><span class="p">.</span><span class="n">to_string</span><span class="p">()</span><span class="w"> </span><span class="c1">// if so return &quot;buzz&quot;</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// but if not</span>
<span class="w"> </span><span class="n">number</span><span class="p">.</span><span class="n">to_string</span><span class="p">()</span><span class="w"> </span><span class="c1">// return number as String</span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// print returned value</span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</code></pre></div>
<h1 style="text-align: center;">1</h1>
<p>There is also <a href="https://github.com/Keith-S-Thompson/fizzbuzz-c/blob/master/fizzbuzz004.c" title="Brute forcing FizzBuzz in C">brute forcing method</a> 🤦‍♂️️</p><!-- Comments -->
<hr>
<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">
</footer><!-- /.post-info --> </div><!-- /.entry-content -->
</article></li>
<li><article class="hentry">
<header>

172
output/tag/android.html Normal file
View File

@ -0,0 +1,172 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Ali Murteza Yesil - android</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/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>
<div>
</header><!-- /#banner -->
<aside id="featured" class="body">
<article>
<h1 class="entry-title"><a href="https://murtezayesil.me/adb_vendor_keys-is-not-set.html">$ADB_VENDOR_KEYS is not set</a></h1>
<footer class="post-info">
<span>Wed 22 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
<span>| tags: <a href="https://murtezayesil.me/tag/android.html">android</a><a href="https://murtezayesil.me/tag/error.html">error</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>7</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --><h2>Story</h2>
<p>I like <a href="https://github.com/Genymobile/scrcpy" title="scrcpy by Genymobile - GitHub">scrcpy</a>. It allows me to cast my phone to computer and use it ther thanks to cable technology (wifi works too). So, after hopping to <img src="https://fosstodon.b-cdn.net/custom_emojis/images/000/025/123/static/a76f54a7dbcd8afd.png" width="15em" height="15em"> Pop_OS! I reinstalled adb and scrcpy.
But this time scrcpy didn't work. Instead it throw this error:<br>
<blockquote style="font-style: normal;">
<code>
adb: error: failed to get feature set: device unauthorized.<br>
This adb server's $ADB_VENDOR_KEYS is not set<br>
Try 'adb kill-server' if that seems wrong.<br>
Otherwise check for a confirmation dialog on your device.<br>
ERROR: "adb push" returned with value 1
</code>
</blockquote> </p>
<h2>Easy way | Grant access using prompt on the phone</h2>
<p>After enabling <a href="https://www.howtogeek.com/129728/how-to-access-the-developer-options-menu-and-enable-usb-debugging-on-android-4.2/">USB debugging in Developer options</a> connect phone to computer and run <code>scrcpy</code>. Phone should prompt you for granting access to computer. All you have to do is accept and connection will be granted 🎉️</p>
<hr>
<p>This prompt didn't appear on my phone. As it turns out, that prompt doesn't works as expected on some custom ROMS. After some digging online, I came across <a href="https://stackoverflow.com/a/26309956">this answer on stack <strong>overflow</strong></a>. Which leads to a <a href="https://android.googlesource.com/platform/system/core/+/d5fcafaf41f8ec90986c813f75ec78402096af2d">commit message for (new) adb authentication</a> implemented in 2012. This prompt copies ~/.android/adbkey.pub on computer, <code>$ADB_VENDOR_KEYS</code>, to <code>/data/misc/adb/adb_keys</code> file in phone's memory. since prompt isn't working for me I have to add that key manually 😕️</p>
<h2>Littler harder way | copy-paste using Termux + root</h2>
<p>Since <code>/data/misc/adb/adb_keys</code> file is offlimits for the user, we need root priviledges for this method.</p>
<ol>
<li>Copy ~/.android/adbkey.pub to phone's memory</li>
<li>Open Termux and install sudo &gt; <code>pkg install tsu</code></li>
<li>Navigate to where file adbkey.pub is. I'm using Redmi Note 4 and its <code>/sdcard</code> directory is used for .<br>
File is at <code>/sdcard/adbkey.pub</code> in my case &gt; <code>cd /sdcard</code></li>
<li>Copy <code>adbkey.pub</code> to <code>/data/misc/adb/adb_keys</code> with sudo priviledges &gt; <code>sudo cp adbkey.pub /data/misc/adb/adb_keys</code> </li>
<li>Double check if content of <code>/data/misc/adb/adb_keys</code> on phone and <code>~/.android/adbkey.pub</code> on computer are the same</li>
<li>Enjoy 😊️</li>
</ol>
<video width="720" height="auto" controls="controls">
<source src="https:///home/murteza/Virtual/Blog/output/videos/copying_adb_vendor_keys_using_termux_and_root.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<hr>
<h2>Hard way | copy-paste using TWRP</h2>
<p>This is the "no-root" hard method. You will still need root priviledges to edit <code>/data/misc/adb/adb_keys</code>. If your phone isn't rooted but has TWRP, GREAT. TWRP has root priviledges and a file manager.</p>
<ol>
<li>Boot into TWRP by holding Vol+ and Power keys while the phone is turned off.</li>
<li>Connect phone to computer</li>
<li>Copy ~/.android/adbkey.pub to phone's memory</li>
<li>Go to Advanced &gt; File manager</li>
<li>Navigate to where adbkey.pub was copied to. I am using Redmi Note 4 and MTP connects to <code>/sdcard</code> on this device.</li>
<li>Copy <code>adbkey.pub</code> to <code>/data/misc/adb/adb_keys</code></li>
<li>Delete <code>adb_keys</code> in </li>
<li>Rename <code>adbkey.pub</code> to <code>abd_keys</code></li>
<li>Double check if content of <code>/data/misc/adb/adb_keys</code> on phone and <code>~/.android/adbkey.pub</code> on computer are the same</li>
<li>Enjoy 😊️</li>
</ol>
<p><img alt="SCRCPY is casting Android phone's screen on to computer after manually copying computer's adbkey.pub file to phone's adb_keys file" src="images/scrcpy_casting_android_to_computer.png" title="scrcpy is finally working"></p>
<hr>
<p>It was a little annoying adventure for me to find where the adbkey.pub suppose to go. I am not immitated with having to do that thing manually. I was annoyed that this information isn't out there in Android documentations and requires reading answers from 2014 on stack__overflow__.</p>
<h3>I hope this guide was helpful to you 😉️</h3> </article>
<p class="paginator">
Page 1 / 1
</p>
</aside><!-- /#featured -->
</ol><!-- /#posts-list -->
</section><!-- /#content -->
<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>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>

172
output/tag/error.html Normal file
View File

@ -0,0 +1,172 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Ali Murteza Yesil - error</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/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>
<div>
</header><!-- /#banner -->
<aside id="featured" class="body">
<article>
<h1 class="entry-title"><a href="https://murtezayesil.me/adb_vendor_keys-is-not-set.html">$ADB_VENDOR_KEYS is not set</a></h1>
<footer class="post-info">
<span>Wed 22 July 2020</span>
<span>| in <a href="https://murtezayesil.me/category/tech.html">Tech</a></span>
<span>| tags: <a href="https://murtezayesil.me/tag/android.html">android</a><a href="https://murtezayesil.me/tag/error.html">error</a><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a></span> <span>| Day <strong>7</strong> of #100DaysToOffload</span>
</footer><!-- /.post-info --><h2>Story</h2>
<p>I like <a href="https://github.com/Genymobile/scrcpy" title="scrcpy by Genymobile - GitHub">scrcpy</a>. It allows me to cast my phone to computer and use it ther thanks to cable technology (wifi works too). So, after hopping to <img src="https://fosstodon.b-cdn.net/custom_emojis/images/000/025/123/static/a76f54a7dbcd8afd.png" width="15em" height="15em"> Pop_OS! I reinstalled adb and scrcpy.
But this time scrcpy didn't work. Instead it throw this error:<br>
<blockquote style="font-style: normal;">
<code>
adb: error: failed to get feature set: device unauthorized.<br>
This adb server's $ADB_VENDOR_KEYS is not set<br>
Try 'adb kill-server' if that seems wrong.<br>
Otherwise check for a confirmation dialog on your device.<br>
ERROR: "adb push" returned with value 1
</code>
</blockquote> </p>
<h2>Easy way | Grant access using prompt on the phone</h2>
<p>After enabling <a href="https://www.howtogeek.com/129728/how-to-access-the-developer-options-menu-and-enable-usb-debugging-on-android-4.2/">USB debugging in Developer options</a> connect phone to computer and run <code>scrcpy</code>. Phone should prompt you for granting access to computer. All you have to do is accept and connection will be granted 🎉️</p>
<hr>
<p>This prompt didn't appear on my phone. As it turns out, that prompt doesn't works as expected on some custom ROMS. After some digging online, I came across <a href="https://stackoverflow.com/a/26309956">this answer on stack <strong>overflow</strong></a>. Which leads to a <a href="https://android.googlesource.com/platform/system/core/+/d5fcafaf41f8ec90986c813f75ec78402096af2d">commit message for (new) adb authentication</a> implemented in 2012. This prompt copies ~/.android/adbkey.pub on computer, <code>$ADB_VENDOR_KEYS</code>, to <code>/data/misc/adb/adb_keys</code> file in phone's memory. since prompt isn't working for me I have to add that key manually 😕️</p>
<h2>Littler harder way | copy-paste using Termux + root</h2>
<p>Since <code>/data/misc/adb/adb_keys</code> file is offlimits for the user, we need root priviledges for this method.</p>
<ol>
<li>Copy ~/.android/adbkey.pub to phone's memory</li>
<li>Open Termux and install sudo &gt; <code>pkg install tsu</code></li>
<li>Navigate to where file adbkey.pub is. I'm using Redmi Note 4 and its <code>/sdcard</code> directory is used for .<br>
File is at <code>/sdcard/adbkey.pub</code> in my case &gt; <code>cd /sdcard</code></li>
<li>Copy <code>adbkey.pub</code> to <code>/data/misc/adb/adb_keys</code> with sudo priviledges &gt; <code>sudo cp adbkey.pub /data/misc/adb/adb_keys</code> </li>
<li>Double check if content of <code>/data/misc/adb/adb_keys</code> on phone and <code>~/.android/adbkey.pub</code> on computer are the same</li>
<li>Enjoy 😊️</li>
</ol>
<video width="720" height="auto" controls="controls">
<source src="https:///home/murteza/Virtual/Blog/output/videos/copying_adb_vendor_keys_using_termux_and_root.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<hr>
<h2>Hard way | copy-paste using TWRP</h2>
<p>This is the "no-root" hard method. You will still need root priviledges to edit <code>/data/misc/adb/adb_keys</code>. If your phone isn't rooted but has TWRP, GREAT. TWRP has root priviledges and a file manager.</p>
<ol>
<li>Boot into TWRP by holding Vol+ and Power keys while the phone is turned off.</li>
<li>Connect phone to computer</li>
<li>Copy ~/.android/adbkey.pub to phone's memory</li>
<li>Go to Advanced &gt; File manager</li>
<li>Navigate to where adbkey.pub was copied to. I am using Redmi Note 4 and MTP connects to <code>/sdcard</code> on this device.</li>
<li>Copy <code>adbkey.pub</code> to <code>/data/misc/adb/adb_keys</code></li>
<li>Delete <code>adb_keys</code> in </li>
<li>Rename <code>adbkey.pub</code> to <code>abd_keys</code></li>
<li>Double check if content of <code>/data/misc/adb/adb_keys</code> on phone and <code>~/.android/adbkey.pub</code> on computer are the same</li>
<li>Enjoy 😊️</li>
</ol>
<p><img alt="SCRCPY is casting Android phone's screen on to computer after manually copying computer's adbkey.pub file to phone's adb_keys file" src="images/scrcpy_casting_android_to_computer.png" title="scrcpy is finally working"></p>
<hr>
<p>It was a little annoying adventure for me to find where the adbkey.pub suppose to go. I am not immitated with having to do that thing manually. I was annoyed that this information isn't out there in Android documentations and requires reading answers from 2014 on stack__overflow__.</p>
<h3>I hope this guide was helpful to you 😉️</h3> </article>
<p class="paginator">
Page 1 / 1
</p>
</aside><!-- /#featured -->
</ol><!-- /#posts-list -->
</section><!-- /#content -->
<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>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>

View File

@ -41,6 +41,7 @@
</nav>
<div id="submenu">
<ul>
<li><a href="https://murtezayesil.me/category/draft.html">draft</a></li>
<li><a href="https://murtezayesil.me/category/notes.html">Notes</a></li>
<li><a href="https://murtezayesil.me/category/tech.html">Tech</a></li>
</ul>
@ -48,9 +49,11 @@
</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> (6)</li>
<h1>Tags for Ali Murteza Yesil</h1> <li><a href="https://murtezayesil.me/tag/100daystooffload.html">100DaysToOffload</a> (7)</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/digitalcleansing.html">digitalcleansing</a> (4)</li>
<li><a href="https://murtezayesil.me/tag/error.html">error</a> (1)</li>
<li><a href="https://murtezayesil.me/tag/jitsi.html">jitsi</a> (1)</li>
<li><a href="https://murtezayesil.me/tag/nextcloud.html">nextcloud</a> (2)</li>
<li><a href="https://murtezayesil.me/tag/privacy.html">privacy</a> (5)</li>

View File

@ -57,6 +57,8 @@ ARTICLE_PATHS = [
STATIC_PATHS = [
'extra',
'videos',
'images',
]
EXTRA_PATH_METADATA = {